@seafile/sdoc-editor 1.0.219 → 1.0.221-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/sdoc-editor-plugins.css +0 -23
- package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +12 -2
- package/dist/basic-sdk/extension/commons/search-list/index.css +28 -0
- package/dist/basic-sdk/extension/commons/search-list/index.js +150 -0
- 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/font/helpers.js +7 -0
- package/dist/basic-sdk/extension/plugins/header/render-elem.js +2 -1
- package/dist/basic-sdk/extension/plugins/image/helpers.js +9 -21
- package/dist/basic-sdk/extension/plugins/image/image-loader/index.css +37 -0
- package/dist/basic-sdk/extension/plugins/image/image-loader/index.js +23 -0
- package/dist/basic-sdk/extension/plugins/image/render-elem.js +24 -76
- package/dist/basic-sdk/extension/plugins/image/use-upload-image.js +80 -0
- package/dist/basic-sdk/extension/plugins/index.js +7 -0
- package/dist/basic-sdk/extension/plugins/multi-column/plugin.js +1 -1
- package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-item.js +36 -0
- package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-menu.css +4 -2
- package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-menu.js +8 -13
- package/dist/basic-sdk/extension/plugins/seatable-column/menu/index.js +5 -9
- package/dist/basic-sdk/extension/plugins/seatable-column/plugin.js +9 -1
- package/dist/basic-sdk/extension/plugins/seatable-column/render-elem.js +71 -7
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/helpers.js +35 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +106 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +81 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +201 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-item.js +41 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +108 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +143 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +240 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +37 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table.js +134 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +90 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +44 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +61 -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 +123 -0
- package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +161 -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/menu/index.js +3 -6
- package/dist/basic-sdk/extension/plugins/text-style/helpers.js +1 -1
- package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +10 -1
- package/dist/basic-sdk/extension/render/custom-element.js +5 -0
- package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +7 -2
- package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +3 -1
- package/dist/pages/document-plugin-editor.js +3 -1
- package/package.json +7 -7
- 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 +8 -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 +7 -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,80 @@
|
|
|
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 = require("react");
|
|
9
|
+
var _slate = require("@seafile/slate");
|
|
10
|
+
var _slateReact = require("@seafile/slate-react");
|
|
11
|
+
var _context = _interopRequireDefault(require("../../../../context"));
|
|
12
|
+
var _helpers = require("./helpers");
|
|
13
|
+
const updateImageNode = async function (editor, element, newUrl) {
|
|
14
|
+
let isError = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
15
|
+
const nodePath = _slateReact.ReactEditor.findPath(editor, element);
|
|
16
|
+
const newData = {
|
|
17
|
+
...element.data,
|
|
18
|
+
src: newUrl,
|
|
19
|
+
is_copy_error: isError
|
|
20
|
+
};
|
|
21
|
+
_slate.Transforms.setNodes(editor, {
|
|
22
|
+
data: newData
|
|
23
|
+
}, {
|
|
24
|
+
at: nodePath
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
const useImageUpload = _ref => {
|
|
28
|
+
let {
|
|
29
|
+
editor,
|
|
30
|
+
element
|
|
31
|
+
} = _ref;
|
|
32
|
+
const {
|
|
33
|
+
data
|
|
34
|
+
} = element;
|
|
35
|
+
const {
|
|
36
|
+
is_copy_error = false
|
|
37
|
+
} = data;
|
|
38
|
+
const [isLoading, setIsLoading] = (0, _react.useState)(false);
|
|
39
|
+
const [isCopyError, setIsCopyError] = (0, _react.useState)(is_copy_error);
|
|
40
|
+
(0, _react.useEffect)(() => {
|
|
41
|
+
const {
|
|
42
|
+
src: url
|
|
43
|
+
} = data;
|
|
44
|
+
if (isCopyError) return;
|
|
45
|
+
if (!(0, _helpers.isImagUrlIsFromCopy)(url)) return;
|
|
46
|
+
const downloadAndUploadImages = async url => {
|
|
47
|
+
try {
|
|
48
|
+
const response = await fetch(url);
|
|
49
|
+
if (response.ok) {
|
|
50
|
+
const blob = await response.blob();
|
|
51
|
+
const file = new File([blob], 'downloaded_image.png', {
|
|
52
|
+
type: blob.type
|
|
53
|
+
});
|
|
54
|
+
const imageUrl = await _context.default.uploadLocalImage([file]);
|
|
55
|
+
if (imageUrl && imageUrl[0]) {
|
|
56
|
+
updateImageNode(editor, element, imageUrl[0]);
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
throw new Error(`HTTP error status: ${response.status}`);
|
|
60
|
+
}
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error(error);
|
|
63
|
+
updateImageNode(editor, element, url, true);
|
|
64
|
+
setIsCopyError(true);
|
|
65
|
+
} finally {
|
|
66
|
+
setTimeout(() => {
|
|
67
|
+
setIsLoading(false);
|
|
68
|
+
}, 500);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
downloadAndUploadImages(url);
|
|
72
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
73
|
+
}, []);
|
|
74
|
+
return {
|
|
75
|
+
isCopyImageLoading: isLoading,
|
|
76
|
+
setCopyImageLoading: setIsLoading,
|
|
77
|
+
isCopyImageError: isCopyError
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
var _default = exports.default = useImageUpload;
|
|
@@ -119,6 +119,12 @@ Object.defineProperty(exports, "SeaTableColumnPlugin", {
|
|
|
119
119
|
return _seatableColumn.default;
|
|
120
120
|
}
|
|
121
121
|
});
|
|
122
|
+
Object.defineProperty(exports, "SeaTableRowPlugin", {
|
|
123
|
+
enumerable: true,
|
|
124
|
+
get: function () {
|
|
125
|
+
return _seatableRow.default;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
122
128
|
Object.defineProperty(exports, "SeaTableViewsPlugin", {
|
|
123
129
|
enumerable: true,
|
|
124
130
|
get: function () {
|
|
@@ -186,6 +192,7 @@ var _mention = _interopRequireDefault(require("./mention"));
|
|
|
186
192
|
var _quickInsert = _interopRequireDefault(require("./quick-insert"));
|
|
187
193
|
var _wikiLink = _interopRequireDefault(require("./wiki-link"));
|
|
188
194
|
var _seatableColumn = _interopRequireDefault(require("./seatable-column"));
|
|
195
|
+
var _seatableRow = _interopRequireDefault(require("./seatable-row"));
|
|
189
196
|
var _seatableTables = _interopRequireDefault(require("./seatable-tables"));
|
|
190
197
|
var _group = _interopRequireDefault(require("./group"));
|
|
191
198
|
const Plugins = [_markdown.default, _html.default, _header.default, _link.default, _blockquote.default, _list.default, _checkList.default, _codeBlock.default, _image.default, _video.default, _table.default, _multiColumn.default, _textStyle.default, _textAlign.default, _font.default, _sdocLink.default, _paragraph.default, _fileLink.default, _callout.default, _searchReplace.default, _quickInsert.default, _group.default];
|
|
@@ -82,7 +82,7 @@ const withMultiColumn = editor => {
|
|
|
82
82
|
const nextNode = _slate.Editor.next(newEditor);
|
|
83
83
|
const nextColumnIndex = nextNode[1][1];
|
|
84
84
|
const currentMultiColumnEntry = (0, _core.getSelectedNodeEntryByType)(editor, _constants.ELEMENT_TYPE.MULTI_COLUMN);
|
|
85
|
-
if (!currentMultiColumnEntry) return
|
|
85
|
+
if (!currentMultiColumnEntry) return deleteForward(unit);
|
|
86
86
|
const {
|
|
87
87
|
column,
|
|
88
88
|
children: childColumn
|
|
@@ -0,0 +1,36 @@
|
|
|
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 = ColumnListItem;
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
function ColumnListItem(_ref) {
|
|
12
|
+
let {
|
|
13
|
+
innerRef,
|
|
14
|
+
item,
|
|
15
|
+
onItemClick,
|
|
16
|
+
isSelected
|
|
17
|
+
} = _ref;
|
|
18
|
+
const onMouseDown = (0, _react.useCallback)(() => {
|
|
19
|
+
onItemClick(item);
|
|
20
|
+
}, [onItemClick, item]);
|
|
21
|
+
const clazzNames = (0, _classnames.default)('column-list-menu-item-container', {
|
|
22
|
+
'selected': isSelected
|
|
23
|
+
});
|
|
24
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
25
|
+
ref: innerRef,
|
|
26
|
+
key: item.value,
|
|
27
|
+
className: clazzNames,
|
|
28
|
+
onClick: onMouseDown
|
|
29
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
30
|
+
className: "column-list-menu-item"
|
|
31
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
32
|
+
className: `control-icon ${item.iconClass}`
|
|
33
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
34
|
+
className: "control-label"
|
|
35
|
+
}, item.label)));
|
|
36
|
+
}
|
|
@@ -8,8 +8,6 @@
|
|
|
8
8
|
background-color: #fff;
|
|
9
9
|
min-width: 12rem;
|
|
10
10
|
width: 200px;
|
|
11
|
-
max-height: 300px;
|
|
12
|
-
overflow: auto;
|
|
13
11
|
padding: 8px 0;
|
|
14
12
|
}
|
|
15
13
|
|
|
@@ -46,3 +44,7 @@
|
|
|
46
44
|
background-color: #f5f5f5;
|
|
47
45
|
cursor: pointer;
|
|
48
46
|
}
|
|
47
|
+
|
|
48
|
+
.column-list-menu .column-list-menu-item-container.selected {
|
|
49
|
+
background-color: #e3e3e3;
|
|
50
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
3
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
@@ -10,6 +11,8 @@ var _column = require("../constants/column");
|
|
|
10
11
|
var _helpers = require("../helpers");
|
|
11
12
|
var _elementType = require("../../../constants/element-type");
|
|
12
13
|
var _utils = require("../../../utils");
|
|
14
|
+
var _searchList = _interopRequireDefault(require("../../../commons/search-list"));
|
|
15
|
+
var _columnListItem = _interopRequireDefault(require("./column-list-item"));
|
|
13
16
|
require("./column-list-menu.css");
|
|
14
17
|
const NOT_SUPPORT_COLUMN_TYPES = ['button', 'file'];
|
|
15
18
|
function ColumnListMenu(_ref) {
|
|
@@ -51,7 +54,7 @@ function ColumnListMenu(_ref) {
|
|
|
51
54
|
const isActive = editor => {
|
|
52
55
|
return (0, _helpers.getColumnType)(editor) === _elementType.SEATABLE_COLUMN;
|
|
53
56
|
};
|
|
54
|
-
const
|
|
57
|
+
const onListItemClick = (0, _react.useCallback)(option => {
|
|
55
58
|
const active = isActive(editor);
|
|
56
59
|
(0, _helpers.insertSeaTableColumn)(editor, active, option, insertPosition);
|
|
57
60
|
toggle && toggle();
|
|
@@ -60,17 +63,9 @@ function ColumnListMenu(_ref) {
|
|
|
60
63
|
ref: columnRef,
|
|
61
64
|
className: "column-list-menu",
|
|
62
65
|
style: computedStyle
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
onClick: () => onMousedown(option)
|
|
68
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
69
|
-
className: "column-list-menu-item"
|
|
70
|
-
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
71
|
-
className: `control-icon ${option.iconClass}`
|
|
72
|
-
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
73
|
-
className: "control-label"
|
|
74
|
-
}, option.label)));
|
|
66
|
+
}, /*#__PURE__*/_react.default.createElement(_searchList.default, {
|
|
67
|
+
list: options,
|
|
68
|
+
listItem: _columnListItem.default,
|
|
69
|
+
onListItemClick: onListItemClick
|
|
75
70
|
}));
|
|
76
71
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
9
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
10
|
var _constants = require("../../../constants");
|
|
12
11
|
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
@@ -21,7 +20,6 @@ const SeaTableColumnMenu = _ref => {
|
|
|
21
20
|
toggle,
|
|
22
21
|
isHidden = false
|
|
23
22
|
} = _ref;
|
|
24
|
-
const dropDownMenuRef = (0, _react.useRef)(null);
|
|
25
23
|
const disabled = (0, _helpers.isMenuDisabled)(editor, readonly);
|
|
26
24
|
const menuConfig = _constants.MENUS_CONFIG_MAP[_constants.ELEMENT_TYPE.SEATABLE_COLUMN];
|
|
27
25
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
@@ -29,22 +27,20 @@ const SeaTableColumnMenu = _ref => {
|
|
|
29
27
|
menuConfig: menuConfig,
|
|
30
28
|
className: (0, _classnames.default)('pr-2 sdoc-dropdown-menu-item-relative', {
|
|
31
29
|
'sdoc-dropdown-menu-item-hidden': isHidden
|
|
32
|
-
})
|
|
33
|
-
ref: dropDownMenuRef
|
|
30
|
+
})
|
|
34
31
|
}, !disabled && /*#__PURE__*/_react.default.createElement("i", {
|
|
35
32
|
className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
|
|
36
|
-
}), !disabled && /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
|
|
33
|
+
})), !disabled && /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
|
|
37
34
|
target: menuConfig.id,
|
|
38
35
|
hideArrow: true,
|
|
39
36
|
trigger: "hover",
|
|
40
37
|
fade: false,
|
|
41
|
-
popperClassName: "seatable-column-popover"
|
|
42
|
-
container: dropDownMenuRef === null || dropDownMenuRef === void 0 ? void 0 : dropDownMenuRef.current
|
|
38
|
+
popperClassName: "seatable-column-popover"
|
|
43
39
|
}, /*#__PURE__*/_react.default.createElement(_columnListMenu.default, {
|
|
44
40
|
editor: editor,
|
|
45
41
|
readonly: readonly,
|
|
46
42
|
insertPosition: insertPosition,
|
|
47
43
|
toggle: toggle
|
|
48
|
-
})))
|
|
44
|
+
})));
|
|
49
45
|
};
|
|
50
46
|
var _default = exports.default = SeaTableColumnMenu;
|
|
@@ -8,7 +8,8 @@ var _constants = require("../../constants");
|
|
|
8
8
|
const withColumn = editor => {
|
|
9
9
|
const {
|
|
10
10
|
isInline,
|
|
11
|
-
isVoid
|
|
11
|
+
isVoid,
|
|
12
|
+
markableVoid
|
|
12
13
|
} = editor;
|
|
13
14
|
const newEditor = editor;
|
|
14
15
|
newEditor.isInline = element => {
|
|
@@ -25,6 +26,13 @@ const withColumn = editor => {
|
|
|
25
26
|
if (type === _constants.ELEMENT_TYPE.SEATABLE_COLUMN) return true;
|
|
26
27
|
return isVoid(element);
|
|
27
28
|
};
|
|
29
|
+
newEditor.markableVoid = element => {
|
|
30
|
+
const {
|
|
31
|
+
type
|
|
32
|
+
} = element;
|
|
33
|
+
if (type === _constants.ELEMENT_TYPE.SEATABLE_COLUMN) return true;
|
|
34
|
+
return markableVoid(element);
|
|
35
|
+
};
|
|
28
36
|
return newEditor;
|
|
29
37
|
};
|
|
30
38
|
var _default = exports.default = withColumn;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
3
4
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
@@ -7,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
8
|
exports.default = void 0;
|
|
8
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
10
|
var _slateReact = require("@seafile/slate-react");
|
|
11
|
+
var _mdToHtml = _interopRequireDefault(require("../../../../slate-convert/md-to-html"));
|
|
10
12
|
const Column = _ref => {
|
|
11
13
|
let {
|
|
12
14
|
props,
|
|
@@ -19,15 +21,34 @@ const Column = _ref => {
|
|
|
19
21
|
} = props;
|
|
20
22
|
const isReadOnly = (0, _slateReact.useReadOnly)();
|
|
21
23
|
const isSelected = (0, _slateReact.useSelected)();
|
|
24
|
+
const [columnValue, setColumnValue] = (0, _react.useState)('');
|
|
22
25
|
const data = element.data || {};
|
|
23
26
|
const {
|
|
24
|
-
key: columnKey
|
|
25
|
-
name: columnName
|
|
27
|
+
key: columnKey
|
|
26
28
|
} = data;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
29
|
+
const column = editor.columns.find(item => item.key === columnKey);
|
|
30
|
+
const isLongTextColumn = (0, _react.useMemo)(() => {
|
|
31
|
+
return column && column.type === 'long-text';
|
|
32
|
+
}, [column]);
|
|
33
|
+
(0, _react.useEffect)(() => {
|
|
34
|
+
const data = element.data || {};
|
|
35
|
+
const {
|
|
36
|
+
key: columnKey,
|
|
37
|
+
name: columnName
|
|
38
|
+
} = data;
|
|
39
|
+
let displayValue = columnName ? `{${columnName}}` : '';
|
|
40
|
+
if (editor.getColumnCellValue) {
|
|
41
|
+
displayValue = editor.getColumnCellValue(columnKey) || 'null';
|
|
42
|
+
if (!isLongTextColumn) {
|
|
43
|
+
setColumnValue(displayValue);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
_mdToHtml.default.process(displayValue).then(res => {
|
|
47
|
+
displayValue = String(res);
|
|
48
|
+
setColumnValue(displayValue);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}, [editor, element.data, isLongTextColumn]);
|
|
31
52
|
const [isClicked, setIsClicked] = (0, _react.useState)(false);
|
|
32
53
|
(0, _react.useEffect)(() => {
|
|
33
54
|
if (isSelected && !isReadOnly) {
|
|
@@ -36,16 +57,59 @@ const Column = _ref => {
|
|
|
36
57
|
setIsClicked(false);
|
|
37
58
|
}
|
|
38
59
|
}, [isSelected, isReadOnly]);
|
|
60
|
+
const {
|
|
61
|
+
font_size = null,
|
|
62
|
+
font = null,
|
|
63
|
+
bold = null,
|
|
64
|
+
italic = null,
|
|
65
|
+
underline = null,
|
|
66
|
+
color = null,
|
|
67
|
+
highlight_color = null,
|
|
68
|
+
strikethrough = null
|
|
69
|
+
} = element.children[0];
|
|
39
70
|
const style = {
|
|
40
71
|
margin: '0 10px',
|
|
41
72
|
border: '1px solid transparent',
|
|
73
|
+
userSelect: 'none',
|
|
74
|
+
display: 'inline-block',
|
|
42
75
|
...(isClicked && {
|
|
43
76
|
border: '1px solid red'
|
|
77
|
+
}),
|
|
78
|
+
...(font_size && {
|
|
79
|
+
fontSize: font_size
|
|
80
|
+
}),
|
|
81
|
+
...(font && {
|
|
82
|
+
fontFamily: font
|
|
83
|
+
}),
|
|
84
|
+
...(bold && {
|
|
85
|
+
fontWeight: 600
|
|
86
|
+
}),
|
|
87
|
+
...(italic && {
|
|
88
|
+
fontStyle: 'italic'
|
|
89
|
+
}),
|
|
90
|
+
...(underline && {
|
|
91
|
+
textDecoration: 'underline'
|
|
92
|
+
}),
|
|
93
|
+
...(color && {
|
|
94
|
+
color: color
|
|
95
|
+
}),
|
|
96
|
+
...(highlight_color && {
|
|
97
|
+
backgroundColor: highlight_color
|
|
98
|
+
}),
|
|
99
|
+
...(strikethrough && {
|
|
100
|
+
textDecoration: 'line-through'
|
|
44
101
|
})
|
|
45
102
|
};
|
|
46
103
|
return /*#__PURE__*/_react.default.createElement("span", Object.assign({}, attributes, {
|
|
47
104
|
style: style
|
|
48
|
-
}),
|
|
105
|
+
}), !isLongTextColumn && columnValue, isLongTextColumn && /*#__PURE__*/_react.default.createElement("div", {
|
|
106
|
+
style: {
|
|
107
|
+
padding: '10px'
|
|
108
|
+
},
|
|
109
|
+
dangerouslySetInnerHTML: {
|
|
110
|
+
__html: columnValue
|
|
111
|
+
}
|
|
112
|
+
}), children);
|
|
49
113
|
};
|
|
50
114
|
const renderColumn = (props, editor) => {
|
|
51
115
|
return /*#__PURE__*/_react.default.createElement(Column, {
|
package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/helpers.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getRowName = void 0;
|
|
7
|
+
var _dtableUtils = require("dtable-utils");
|
|
8
|
+
const getRowName = (columns, row, formula_rows) => {
|
|
9
|
+
if (!row) return '';
|
|
10
|
+
const displayColumn = columns.find(column => column.key === '0000');
|
|
11
|
+
if (!displayColumn) return '';
|
|
12
|
+
const {
|
|
13
|
+
type,
|
|
14
|
+
key,
|
|
15
|
+
data
|
|
16
|
+
} = displayColumn;
|
|
17
|
+
let formulaRows;
|
|
18
|
+
if (formula_rows) {
|
|
19
|
+
formulaRows = formula_rows;
|
|
20
|
+
} else {
|
|
21
|
+
const view = window.app.getSelectedView();
|
|
22
|
+
formulaRows = view.formula_rows || {};
|
|
23
|
+
}
|
|
24
|
+
const tables = window.app.state.value.tables;
|
|
25
|
+
const departments = window.app.state;
|
|
26
|
+
const collaborators = window.app.state.collaboratorsWithAppUsers;
|
|
27
|
+
return (0, _dtableUtils.getCellValueDisplayString)(row, type, key, {
|
|
28
|
+
formulaRows,
|
|
29
|
+
data,
|
|
30
|
+
tables,
|
|
31
|
+
collaborators,
|
|
32
|
+
departments
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.getRowName = getRowName;
|
package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
.seatable-rows-select-dialog {
|
|
2
|
+
max-width: 520px;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.seatable-rows-select-dialog .sdoc-seatable-rows-select-footer {
|
|
6
|
+
display: flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
justify-content: flex-end;
|
|
9
|
+
padding: 1rem;
|
|
10
|
+
border-top: 1px solid #e9ecef;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.seatable-rows-select-dialog .modal-header-container {
|
|
14
|
+
display: flex;
|
|
15
|
+
position: relative;
|
|
16
|
+
justify-content: space-between;
|
|
17
|
+
align-items: center;
|
|
18
|
+
width: 100%;
|
|
19
|
+
height: 57px;
|
|
20
|
+
padding: 16px;
|
|
21
|
+
border-bottom: 1px solid #e9ecef;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.seatable-rows-select-dialog .modal-title-container {
|
|
25
|
+
flex: 1;
|
|
26
|
+
white-space: nowrap;
|
|
27
|
+
position: relative;
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
justify-content: flex-start;
|
|
31
|
+
margin: auto;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.seatable-rows-close-dialog {
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
justify-content: center;
|
|
38
|
+
width: 28px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.modal-header-container .sdoc-close1 {
|
|
42
|
+
font-size: 16px;
|
|
43
|
+
color: #666666;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.modal-header-container .sdoc-close1:hover {
|
|
47
|
+
background-color: #EFEFEF;
|
|
48
|
+
border-radius: 3px;
|
|
49
|
+
height: 28px;
|
|
50
|
+
width: 28px;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.seatable-rows-select-dialog .seatable-table-wrapper {
|
|
54
|
+
max-height: 207px;
|
|
55
|
+
overflow-x: auto;
|
|
56
|
+
overflow-y: hidden;
|
|
57
|
+
border: 2px solid transparent;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.seatable-rows-select-dialog .seatable-table-wrapper table td,
|
|
61
|
+
.seatable-rows-select-dialog .seatable-table-wrapper table th {
|
|
62
|
+
border-width: 0 1px 1px 0;
|
|
63
|
+
border-style: solid;
|
|
64
|
+
border-color: #ccc;
|
|
65
|
+
line-height: 1.5;
|
|
66
|
+
word-break: break-all;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.seatable-rows-select-dialog .seatable-view-records {
|
|
70
|
+
width: max-content;
|
|
71
|
+
border-top: 1px solid #ddd;
|
|
72
|
+
border-left: 1px solid #ddd;
|
|
73
|
+
border-collapse: collapse;
|
|
74
|
+
border-spacing: 2px;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.seatable-rows-select-dialog .seatable-view-column-header-row {
|
|
78
|
+
position: sticky;
|
|
79
|
+
top: 0;
|
|
80
|
+
z-index: 1;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.seatable-rows-select-dialog .seatable-view-column-header-row th {
|
|
84
|
+
display: inline-flex;
|
|
85
|
+
align-items: center;
|
|
86
|
+
justify-content: flex-start;
|
|
87
|
+
flex: unset !important;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.seatable-rows-select-dialog .seatable-view-body-row {
|
|
91
|
+
display: block;
|
|
92
|
+
height: calc(100% - 32px);
|
|
93
|
+
max-height: 170px;
|
|
94
|
+
box-sizing: border-box;
|
|
95
|
+
overflow-y: auto;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.seatable-rows-select-dialog tbody td,
|
|
99
|
+
.seatable-rows-select-dialog thead th {
|
|
100
|
+
height: 32px;
|
|
101
|
+
padding: 0 8px;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.seatable-rows-select-dialog .seatable-view-body-column-row.isSelected {
|
|
105
|
+
background-color: rgb(222, 232, 254);
|
|
106
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _reactI18next = require("react-i18next");
|
|
11
|
+
var _reactstrap = require("reactstrap");
|
|
12
|
+
var _helpers = require("../../helpers");
|
|
13
|
+
var _seatableTable = _interopRequireDefault(require("./seatable-table"));
|
|
14
|
+
require("./index.css");
|
|
15
|
+
var _seatableTableRecord = _interopRequireDefault(require("./seatable-table-record"));
|
|
16
|
+
const AddSeatableRowDialog = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
editor,
|
|
19
|
+
closeDialog,
|
|
20
|
+
handleSubmit,
|
|
21
|
+
data
|
|
22
|
+
} = _ref;
|
|
23
|
+
const {
|
|
24
|
+
table
|
|
25
|
+
} = data;
|
|
26
|
+
const [rowRecordsErrorMessage, setRowRecordsErrorMessage] = (0, _react.useState)('');
|
|
27
|
+
const {
|
|
28
|
+
t
|
|
29
|
+
} = (0, _reactI18next.useTranslation)('sdoc-editor');
|
|
30
|
+
// const [table, setTable] = useState({});
|
|
31
|
+
const [selectedRowsID, setSelectedRowsID] = (0, _react.useState)([]);
|
|
32
|
+
const submit = (0, _react.useCallback)(() => {
|
|
33
|
+
setRowRecordsErrorMessage('');
|
|
34
|
+
if (selectedRowsID.length === 0) {
|
|
35
|
+
setRowRecordsErrorMessage(t('Select_one_row_record'));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (selectedRowsID.length > 1) {
|
|
39
|
+
setRowRecordsErrorMessage(t('Selected_row_records_cannot_exceed_1_rows'));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (selectedRowsID.length === 1) {
|
|
43
|
+
(0, _helpers.insertSeaTableRow)(editor, tableID, selectedRowsID, 'after');
|
|
44
|
+
}
|
|
45
|
+
handleSubmit && handleSubmit();
|
|
46
|
+
closeDialog();
|
|
47
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
48
|
+
}, [editor, selectedRowsID]);
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
|
|
50
|
+
isOpen: true,
|
|
51
|
+
autoFocus: false,
|
|
52
|
+
toggle: closeDialog,
|
|
53
|
+
className: "seatable-rows-select-dialog",
|
|
54
|
+
zIndex: 1071,
|
|
55
|
+
returnFocusAfterClose: false
|
|
56
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
57
|
+
className: "modal-header-container"
|
|
58
|
+
}, /*#__PURE__*/_react.default.createElement("h5", {
|
|
59
|
+
className: "modal-title-container"
|
|
60
|
+
}, t('Select_seatable_rows')), /*#__PURE__*/_react.default.createElement("div", {
|
|
61
|
+
className: "sdocfont sdoc-close1 seatable-rows-close-dialog",
|
|
62
|
+
onClick: closeDialog
|
|
63
|
+
})), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalBody, null, /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
64
|
+
className: "form-group"
|
|
65
|
+
}, /*#__PURE__*/_react.default.createElement(_reactstrap.Label, null, table.name), /*#__PURE__*/_react.default.createElement(_seatableTableRecord.default, {
|
|
66
|
+
table: table
|
|
67
|
+
}), rowRecordsErrorMessage && /*#__PURE__*/_react.default.createElement(_reactstrap.Alert, {
|
|
68
|
+
color: "danger",
|
|
69
|
+
className: "mt-2"
|
|
70
|
+
}, t(rowRecordsErrorMessage))))), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalFooter, {
|
|
71
|
+
className: "sdoc-seatable-rows-select-footer"
|
|
72
|
+
}, /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
|
|
73
|
+
color: "secondary",
|
|
74
|
+
onClick: closeDialog
|
|
75
|
+
}, t('Cancel')), /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
|
|
76
|
+
color: "primary",
|
|
77
|
+
disabled: false,
|
|
78
|
+
onClick: submit
|
|
79
|
+
}, t('Add_rows_record'))));
|
|
80
|
+
};
|
|
81
|
+
var _default = exports.default = AddSeatableRowDialog;
|