@seafile/sdoc-editor 1.0.106 → 1.0.108
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 +14 -0
- package/dist/basic-sdk/extension/commons/dropdown-menu-item/index.js +4 -2
- package/dist/basic-sdk/extension/constants/index.js +12 -0
- package/dist/basic-sdk/extension/constants/menus-config.js +36 -1
- package/dist/basic-sdk/extension/plugins/file-link/constants/index.js +1 -1
- package/dist/basic-sdk/extension/plugins/seatable-column/menu/index.js +6 -2
- package/dist/basic-sdk/extension/plugins/seatable-tables/menu/index.js +6 -2
- package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +58 -2
- package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +20 -2
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.css +9 -0
- package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +62 -11
- package/dist/basic-sdk/extension/toolbar/side-toolbar/transform-menus.js +5 -48
- package/dist/basic-sdk/outline/index.js +1 -1
- 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
|
@@ -28,6 +28,20 @@
|
|
|
28
28
|
align-items: center;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
.sdoc-dropdown-menu .sdoc-dropdown-menu-item-no-results {
|
|
32
|
+
height: 30px;
|
|
33
|
+
width: 100%;
|
|
34
|
+
padding: 4px 24px;
|
|
35
|
+
user-select: none;
|
|
36
|
+
display: flex;
|
|
37
|
+
align-items: center;
|
|
38
|
+
font-size: 14px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.sdoc-dropdown-menu .sdoc-dropdown-menu-item-hidden {
|
|
42
|
+
display: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
31
45
|
.sdoc-dropdown-menu .sdoc-dropdown-menu-item.disabled,
|
|
32
46
|
.sdoc-dropdown-menu .sdoc-dropdown-menu-item.disabled .sdoc-dropdown-item-content-icon {
|
|
33
47
|
color: #c2c2c2 !important;
|
|
@@ -18,7 +18,8 @@ const DropdownMenuItem = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
|
18
18
|
menuConfig,
|
|
19
19
|
children,
|
|
20
20
|
className,
|
|
21
|
-
shortcut
|
|
21
|
+
shortcut,
|
|
22
|
+
isHidden
|
|
22
23
|
} = props;
|
|
23
24
|
const {
|
|
24
25
|
t
|
|
@@ -37,7 +38,8 @@ const DropdownMenuItem = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
|
37
38
|
className: (0, _classnames.default)('sdoc-dropdown-menu-item', className, {
|
|
38
39
|
'disabled': disabled,
|
|
39
40
|
'sdoc-dropdown-item-with-left-icon': iconClass,
|
|
40
|
-
'sdoc-link-dropdown-menu-item': shortcut
|
|
41
|
+
'sdoc-link-dropdown-menu-item': shortcut,
|
|
42
|
+
'sdoc-dropdown-menu-item-hidden': isHidden
|
|
41
43
|
}),
|
|
42
44
|
id: menuConfig.id || '',
|
|
43
45
|
onClick: disabled ? () => {} : onClick || (() => {}),
|
|
@@ -325,12 +325,24 @@ Object.defineProperty(exports, "SIDE_INSERT_MENUS_CONFIG", {
|
|
|
325
325
|
return _menusConfig.SIDE_INSERT_MENUS_CONFIG;
|
|
326
326
|
}
|
|
327
327
|
});
|
|
328
|
+
Object.defineProperty(exports, "SIDE_INSERT_MENUS_SEARCH_MAP", {
|
|
329
|
+
enumerable: true,
|
|
330
|
+
get: function () {
|
|
331
|
+
return _menusConfig.SIDE_INSERT_MENUS_SEARCH_MAP;
|
|
332
|
+
}
|
|
333
|
+
});
|
|
328
334
|
Object.defineProperty(exports, "SIDE_TRANSFORM_MENUS_CONFIG", {
|
|
329
335
|
enumerable: true,
|
|
330
336
|
get: function () {
|
|
331
337
|
return _menusConfig.SIDE_TRANSFORM_MENUS_CONFIG;
|
|
332
338
|
}
|
|
333
339
|
});
|
|
340
|
+
Object.defineProperty(exports, "SIDE_TRANSFORM_MENUS_SEARCH_MAP", {
|
|
341
|
+
enumerable: true,
|
|
342
|
+
get: function () {
|
|
343
|
+
return _menusConfig.SIDE_TRANSFORM_MENUS_SEARCH_MAP;
|
|
344
|
+
}
|
|
345
|
+
});
|
|
334
346
|
Object.defineProperty(exports, "STANDARD_COLORS", {
|
|
335
347
|
enumerable: true,
|
|
336
348
|
get: function () {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.UNDO = exports.TEXT_STYLE_MORE = exports.TEXT_STYLE_MAP = exports.TEXT_STYLE = exports.TEXT_ALIGN = exports.SIDE_TRANSFORM_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = exports.SEARCH_REPLACE = exports.REMOVE_TABLE = exports.REDO = exports.MENUS_CONFIG_MAP = exports.ITALIC = exports.COMBINE_CELL = exports.CLEAR_FORMAT = exports.BOLD = void 0;
|
|
6
|
+
exports.UNDO = exports.TEXT_STYLE_MORE = exports.TEXT_STYLE_MAP = exports.TEXT_STYLE = exports.TEXT_ALIGN = exports.SIDE_TRANSFORM_MENUS_SEARCH_MAP = exports.SIDE_TRANSFORM_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_CONFIG = exports.SEARCH_REPLACE = exports.REMOVE_TABLE = exports.REDO = exports.MENUS_CONFIG_MAP = exports.ITALIC = exports.COMBINE_CELL = exports.CLEAR_FORMAT = exports.BOLD = void 0;
|
|
7
7
|
var _color = require("./color");
|
|
8
8
|
var _elementType = require("./element-type");
|
|
9
9
|
const UNDO = exports.UNDO = 'undo';
|
|
@@ -285,6 +285,24 @@ const SIDE_TRANSFORM_MENUS_CONFIG = exports.SIDE_TRANSFORM_MENUS_CONFIG = [{
|
|
|
285
285
|
type: _elementType.CALL_OUT,
|
|
286
286
|
text: 'Callout'
|
|
287
287
|
}];
|
|
288
|
+
const SIDE_TRANSFORM_MENUS_SEARCH_MAP = exports.SIDE_TRANSFORM_MENUS_SEARCH_MAP = {
|
|
289
|
+
[_elementType.PARAGRAPH]: 'Paragraph',
|
|
290
|
+
[_elementType.HEADER1]: 'Header_one',
|
|
291
|
+
[_elementType.HEADER2]: 'Header_two',
|
|
292
|
+
[_elementType.HEADER3]: 'Header_three',
|
|
293
|
+
[_elementType.HEADER4]: 'Header_four',
|
|
294
|
+
[_elementType.HEADER5]: 'Header_five',
|
|
295
|
+
[_elementType.HEADER6]: 'Header_six',
|
|
296
|
+
[_elementType.UNORDERED_LIST]: 'Unordered_list',
|
|
297
|
+
[_elementType.ORDERED_LIST]: 'Ordered_list',
|
|
298
|
+
[_elementType.CHECK_LIST_ITEM]: 'Check_list',
|
|
299
|
+
[_elementType.BLOCKQUOTE]: 'Quote',
|
|
300
|
+
[_elementType.CALL_OUT]: 'Callout',
|
|
301
|
+
'COPY_LINK_OF_SECTION': 'Copy_link_of_section',
|
|
302
|
+
'COPY': 'Copy',
|
|
303
|
+
'CUT': 'Cut',
|
|
304
|
+
'DELETE': 'Delete'
|
|
305
|
+
};
|
|
288
306
|
|
|
289
307
|
// Side insert menu config
|
|
290
308
|
const SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = {
|
|
@@ -368,4 +386,21 @@ const SIDE_INSERT_MENUS_CONFIG = exports.SIDE_INSERT_MENUS_CONFIG = {
|
|
|
368
386
|
type: _elementType.BLOCKQUOTE,
|
|
369
387
|
text: 'Quote'
|
|
370
388
|
}
|
|
389
|
+
};
|
|
390
|
+
const SIDE_INSERT_MENUS_SEARCH_MAP = exports.SIDE_INSERT_MENUS_SEARCH_MAP = {
|
|
391
|
+
[_elementType.IMAGE]: 'Image',
|
|
392
|
+
[_elementType.TABLE]: 'Table',
|
|
393
|
+
[_elementType.LINK]: 'Link',
|
|
394
|
+
[_elementType.CODE_BLOCK]: 'Code_block',
|
|
395
|
+
[_elementType.CALL_OUT]: 'Callout',
|
|
396
|
+
[_elementType.UNORDERED_LIST]: 'Unordered_list',
|
|
397
|
+
[_elementType.ORDERED_LIST]: 'Ordered_list',
|
|
398
|
+
[_elementType.CHECK_LIST_ITEM]: 'Check_list',
|
|
399
|
+
[_elementType.PARAGRAPH]: 'Paragraph',
|
|
400
|
+
[_elementType.HEADER1]: 'Header_one',
|
|
401
|
+
[_elementType.HEADER2]: 'Header_two',
|
|
402
|
+
[_elementType.HEADER3]: 'Header_three',
|
|
403
|
+
[_elementType.HEADER4]: 'Header_four',
|
|
404
|
+
[_elementType.COLUMN]: 'SeaTable_column',
|
|
405
|
+
[_elementType.SEATABLE_TABLE]: 'SeaTable_table'
|
|
371
406
|
};
|
|
@@ -12,7 +12,7 @@ const FILE_LINK_TYPE = exports.FILE_LINK_TYPE = {
|
|
|
12
12
|
const FILE_LINK_TYPE_CONFIG = exports.FILE_LINK_TYPE_CONFIG = {
|
|
13
13
|
[FILE_LINK_TYPE.TEXT_LINK]: {
|
|
14
14
|
icon: 'sdocfont sdoc-text-link',
|
|
15
|
-
text: '
|
|
15
|
+
text: 'Text_Link'
|
|
16
16
|
},
|
|
17
17
|
[FILE_LINK_TYPE.ICON_LINK]: {
|
|
18
18
|
icon: 'sdocfont sdoc-inline-link',
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
11
|
var _constants = require("../../../constants");
|
|
11
12
|
var _dropdownMenuItem = _interopRequireDefault(require("../../../commons/dropdown-menu-item"));
|
|
12
13
|
var _columnListMenu = _interopRequireDefault(require("./column-list-menu"));
|
|
@@ -17,7 +18,8 @@ const SeaTableColumnMenu = _ref => {
|
|
|
17
18
|
editor,
|
|
18
19
|
readonly,
|
|
19
20
|
insertPosition,
|
|
20
|
-
toggle
|
|
21
|
+
toggle,
|
|
22
|
+
isHidden
|
|
21
23
|
} = _ref;
|
|
22
24
|
const dropDownMenuRef = (0, _react.useRef)(null);
|
|
23
25
|
const disabled = (0, _helpers.isMenuDisabled)(editor, readonly);
|
|
@@ -25,7 +27,9 @@ const SeaTableColumnMenu = _ref => {
|
|
|
25
27
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
26
28
|
disabled: disabled,
|
|
27
29
|
menuConfig: menuConfig,
|
|
28
|
-
className:
|
|
30
|
+
className: (0, _classnames.default)('pr-2 sdoc-dropdown-menu-item-relative', {
|
|
31
|
+
'sdoc-dropdown-menu-item-hidden': isHidden
|
|
32
|
+
}),
|
|
29
33
|
ref: dropDownMenuRef
|
|
30
34
|
}, !disabled && /*#__PURE__*/_react.default.createElement("i", {
|
|
31
35
|
className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
11
|
var _reactstrap = require("reactstrap");
|
|
11
12
|
var _helpers = require("../helpers");
|
|
12
13
|
var _constants = require("../../../constants");
|
|
@@ -18,7 +19,8 @@ const SeaTableTableMenu = _ref => {
|
|
|
18
19
|
editor,
|
|
19
20
|
readonly,
|
|
20
21
|
insertPosition,
|
|
21
|
-
toggle
|
|
22
|
+
toggle,
|
|
23
|
+
isHidden
|
|
22
24
|
} = _ref;
|
|
23
25
|
const dropDownMenuRef = (0, _react.useRef)(null);
|
|
24
26
|
const disabled = (0, _helpers.isInsertSeaTableTableDisabled)(editor, readonly);
|
|
@@ -30,7 +32,9 @@ const SeaTableTableMenu = _ref => {
|
|
|
30
32
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
31
33
|
disabled: disabled,
|
|
32
34
|
menuConfig: menuConfig,
|
|
33
|
-
className:
|
|
35
|
+
className: (0, _classnames.default)('pr-2 sdoc-dropdown-menu-item-relative', {
|
|
36
|
+
'sdoc-dropdown-menu-item-hidden': isHidden
|
|
37
|
+
}),
|
|
34
38
|
ref: dropDownMenuRef
|
|
35
39
|
}, !disabled && /*#__PURE__*/_react.default.createElement("i", {
|
|
36
40
|
className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.setSelection = exports.onWrapListItem = exports.onSetNodeType = exports.onDeleteNode = exports.onCopyNode = exports.isVoidNode = exports.isNotSupportTransform = exports.isList = exports.isBlockquote = exports.insertElement = exports.getTopValue = exports.getNodeEntry = exports.getListNode = void 0;
|
|
7
|
+
exports.setSelection = exports.onWrapListItem = exports.onSetNodeType = exports.onDeleteNode = exports.onCopyNode = exports.isVoidNode = exports.isNotSupportTransform = exports.isList = exports.isBlockquote = exports.insertElement = exports.getTransformMenusConfig = exports.getTopValue = exports.getSearchedOperations = exports.getNodeEntry = exports.getListNode = void 0;
|
|
8
8
|
var _slate = require("@seafile/slate");
|
|
9
9
|
var _slugid = _interopRequireDefault(require("slugid"));
|
|
10
10
|
var _slateReact = require("@seafile/slate-react");
|
|
@@ -216,4 +216,60 @@ const onWrapListItem = (editor, targetPath, sourcePath) => {
|
|
|
216
216
|
});
|
|
217
217
|
return;
|
|
218
218
|
};
|
|
219
|
-
exports.onWrapListItem = onWrapListItem;
|
|
219
|
+
exports.onWrapListItem = onWrapListItem;
|
|
220
|
+
const getTransformMenusConfig = (editor, slateNode) => {
|
|
221
|
+
let newSideMenusConfig = _constants.SIDE_TRANSFORM_MENUS_CONFIG;
|
|
222
|
+
if (_constants.LIST_ITEM_CORRELATION_TYPE.includes(slateNode.type)) {
|
|
223
|
+
newSideMenusConfig = _constants.SIDE_TRANSFORM_MENUS_CONFIG.filter(item => _constants.LIST_ITEM_SUPPORTED_TRANSFORMATION.includes(item.type));
|
|
224
|
+
}
|
|
225
|
+
const path = _slateReact.ReactEditor.findPath(editor, slateNode);
|
|
226
|
+
if (path) {
|
|
227
|
+
const nodeIndex = path[0];
|
|
228
|
+
const highestNode = editor.children[nodeIndex];
|
|
229
|
+
if (path.length > 1) {
|
|
230
|
+
if (highestNode.type === _constants.BLOCKQUOTE) {
|
|
231
|
+
newSideMenusConfig = _constants.SIDE_TRANSFORM_MENUS_CONFIG.filter(item => item.type !== _constants.CALL_OUT);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// headers can't be nested by quote block
|
|
236
|
+
if (_constants.HEADERS.includes(highestNode.type)) {
|
|
237
|
+
newSideMenusConfig = _constants.SIDE_TRANSFORM_MENUS_CONFIG.filter(item => item.type !== _constants.BLOCKQUOTE);
|
|
238
|
+
}
|
|
239
|
+
if ([_constants.ORDERED_LIST, _constants.UNORDERED_LIST].includes(highestNode.type)) {
|
|
240
|
+
// If it's not the top list item, cannot be converted to checks
|
|
241
|
+
if (!(0, _core.isTopLevelListItem)(editor)) {
|
|
242
|
+
newSideMenusConfig = _constants.SIDE_TRANSFORM_MENUS_CONFIG.filter(item => item.type !== _constants.CALL_OUT);
|
|
243
|
+
}
|
|
244
|
+
// Multi-level list items cannot be converted to checks
|
|
245
|
+
if ((0, _core.isMultiLevelList)(highestNode)) {
|
|
246
|
+
newSideMenusConfig = newSideMenusConfig.filter(item => item.type !== _constants.CHECK_LIST_ITEM);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return newSideMenusConfig;
|
|
251
|
+
};
|
|
252
|
+
exports.getTransformMenusConfig = getTransformMenusConfig;
|
|
253
|
+
const getSearchedOperations = (sourceMenuSearchMap, isNodeEmpty, event, t) => {
|
|
254
|
+
let menuSearchMap = {};
|
|
255
|
+
if (event.target.value.trim()) {
|
|
256
|
+
Object.keys(sourceMenuSearchMap).forEach(key => {
|
|
257
|
+
const value = sourceMenuSearchMap[key];
|
|
258
|
+
const sourceStr = t(value).toUpperCase();
|
|
259
|
+
const targetStr = event.target.value.trim().toUpperCase();
|
|
260
|
+
if (sourceStr.includes(targetStr)) {
|
|
261
|
+
menuSearchMap[key] = value;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
if (!isNodeEmpty) {
|
|
265
|
+
menuSearchMap['searchingForTransformMenu'] = true; // Used to identify the search for Transform menu list
|
|
266
|
+
}
|
|
267
|
+
} else {
|
|
268
|
+
menuSearchMap = sourceMenuSearchMap;
|
|
269
|
+
if (!isNodeEmpty) {
|
|
270
|
+
menuSearchMap['searchingForTransformMenu'] = false;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return menuSearchMap;
|
|
274
|
+
};
|
|
275
|
+
exports.getSearchedOperations = getSearchedOperations;
|
|
@@ -9,6 +9,7 @@ exports.default = void 0;
|
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _slateReact = require("@seafile/slate-react");
|
|
11
11
|
var _slate = require("@seafile/slate");
|
|
12
|
+
var _reactI18next = require("react-i18next");
|
|
12
13
|
var _helpers = require("./helpers");
|
|
13
14
|
var _helpers2 = require("../../plugins/table/helpers");
|
|
14
15
|
var _tableSizePopover = _interopRequireDefault(require("../../plugins/table/popover/table-size-popover"));
|
|
@@ -26,9 +27,13 @@ const InsertBlockMenu = _ref => {
|
|
|
26
27
|
let {
|
|
27
28
|
insertPosition,
|
|
28
29
|
slateNode,
|
|
29
|
-
isNodeEmpty
|
|
30
|
+
isNodeEmpty,
|
|
31
|
+
insertMenuSearchMap = _constants.SIDE_INSERT_MENUS_SEARCH_MAP
|
|
30
32
|
} = _ref;
|
|
31
33
|
const editor = (0, _slateReact.useSlateStatic)();
|
|
34
|
+
const {
|
|
35
|
+
t
|
|
36
|
+
} = (0, _reactI18next.useTranslation)();
|
|
32
37
|
const onInsertImageToggle = (0, _react.useCallback)(() => {
|
|
33
38
|
const eventBus = _eventBus.default.getInstance();
|
|
34
39
|
if (insertPosition === _constants.INSERT_POSITION.CURRENT) {
|
|
@@ -85,11 +90,13 @@ const InsertBlockMenu = _ref => {
|
|
|
85
90
|
}
|
|
86
91
|
}, [editor, insertPosition]);
|
|
87
92
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
93
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.IMAGE],
|
|
88
94
|
menuConfig: {
|
|
89
95
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.IMAGE]
|
|
90
96
|
},
|
|
91
97
|
onClick: onInsertImageToggle
|
|
92
98
|
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
99
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.TABLE],
|
|
93
100
|
menuConfig: {
|
|
94
101
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.TABLE]
|
|
95
102
|
},
|
|
@@ -104,21 +111,25 @@ const InsertBlockMenu = _ref => {
|
|
|
104
111
|
popperClassName: "sdoc-side-menu-table-size",
|
|
105
112
|
createTable: createTable
|
|
106
113
|
})), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
114
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.LINK],
|
|
107
115
|
menuConfig: {
|
|
108
116
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.LINK]
|
|
109
117
|
},
|
|
110
118
|
onClick: openLinkDialog
|
|
111
119
|
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
120
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.CODE_BLOCK],
|
|
112
121
|
menuConfig: {
|
|
113
122
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.CODE_BLOCK]
|
|
114
123
|
},
|
|
115
124
|
onClick: onInsertCodeBlock
|
|
116
125
|
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
126
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.CALL_OUT],
|
|
117
127
|
menuConfig: {
|
|
118
128
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.CALL_OUT]
|
|
119
129
|
},
|
|
120
130
|
onClick: () => onInsertCallout(_constants.PARAGRAPH)
|
|
121
131
|
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
132
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.UNORDERED_LIST],
|
|
122
133
|
menuConfig: {
|
|
123
134
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.UNORDERED_LIST]
|
|
124
135
|
},
|
|
@@ -126,6 +137,7 @@ const InsertBlockMenu = _ref => {
|
|
|
126
137
|
onInsertList(_constants.ELEMENT_TYPE.UNORDERED_LIST);
|
|
127
138
|
}
|
|
128
139
|
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
140
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.ORDERED_LIST],
|
|
129
141
|
menuConfig: {
|
|
130
142
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.ORDERED_LIST]
|
|
131
143
|
},
|
|
@@ -133,26 +145,32 @@ const InsertBlockMenu = _ref => {
|
|
|
133
145
|
onInsertList(_constants.ELEMENT_TYPE.ORDERED_LIST);
|
|
134
146
|
}
|
|
135
147
|
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
148
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.CHECK_LIST_ITEM],
|
|
136
149
|
menuConfig: {
|
|
137
150
|
..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.CHECK_LIST_ITEM]
|
|
138
151
|
},
|
|
139
152
|
onClick: onInsertCheckList
|
|
140
153
|
}), [_constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.PARAGRAPH], ..._constants.SIDE_INSERT_MENUS_CONFIG[_constants.ELEMENT_TYPE.HEADER]].map(item => {
|
|
141
154
|
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
155
|
+
isHidden: !insertMenuSearchMap[item.type],
|
|
142
156
|
disabled: isNodeEmpty && item.type === _constants.PARAGRAPH,
|
|
143
157
|
key: item.id,
|
|
144
158
|
menuConfig: item,
|
|
145
159
|
onClick: () => onInsert(item.type)
|
|
146
160
|
});
|
|
147
161
|
}), editor.columns && /*#__PURE__*/_react.default.createElement(_menu.default, {
|
|
162
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.COLUMN],
|
|
148
163
|
editor: editor,
|
|
149
164
|
readonly: editor.readonly,
|
|
150
165
|
insertPosition: insertPosition
|
|
151
166
|
}), editor.tables && /*#__PURE__*/_react.default.createElement(_menu2.default, {
|
|
167
|
+
isHidden: !insertMenuSearchMap[_constants.ELEMENT_TYPE.SEATABLE_TABLE],
|
|
152
168
|
editor: editor,
|
|
153
169
|
readonly: editor.readonly,
|
|
154
170
|
insertPosition: insertPosition
|
|
155
|
-
}))
|
|
171
|
+
}), Object.keys(insertMenuSearchMap).length === 0 && /*#__PURE__*/_react.default.createElement("div", {
|
|
172
|
+
className: "sdoc-dropdown-menu-item-no-results"
|
|
173
|
+
}, t('No_results')));
|
|
156
174
|
};
|
|
157
175
|
InsertBlockMenu.defaultProps = {
|
|
158
176
|
insertPosition: _constants.INSERT_POSITION.CURRENT
|
|
@@ -14,6 +14,15 @@
|
|
|
14
14
|
z-index: 999;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
.sdoc-side-menu .sdoc-side-menu-search-wrapper {
|
|
18
|
+
padding: 12px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.sdoc-side-menu .sdoc-side-menu-search-wrapper input {
|
|
22
|
+
max-height: 30px;
|
|
23
|
+
font-size: 14px;
|
|
24
|
+
}
|
|
25
|
+
|
|
17
26
|
.sdoc-side-menu-insert-below-popover .popover {
|
|
18
27
|
background-color: #fff;
|
|
19
28
|
min-width: 150px;
|
|
@@ -9,6 +9,7 @@ exports.default = void 0;
|
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _reactI18next = require("react-i18next");
|
|
11
11
|
var _slateReact = require("@seafile/slate-react");
|
|
12
|
+
var _reactstrap = require("reactstrap");
|
|
12
13
|
var _copyToClipboard = _interopRequireDefault(require("copy-to-clipboard"));
|
|
13
14
|
var _context = _interopRequireDefault(require("../../../../context"));
|
|
14
15
|
var _eventBus = _interopRequireDefault(require("../../../utils/event-bus"));
|
|
@@ -31,6 +32,8 @@ const SideMenu = (_ref, ref) => {
|
|
|
31
32
|
} = _ref;
|
|
32
33
|
const sideMenuRef = (0, _react.useRef)(null);
|
|
33
34
|
const [menuStyle, setMenuStyle] = (0, _react.useState)('');
|
|
35
|
+
const [insertMenuSearchMap, setInsertMenuSearchMap] = (0, _react.useState)();
|
|
36
|
+
const [transformMenuSearchMap, setTransformMenuSearchMap] = (0, _react.useState)(_constants.SIDE_TRANSFORM_MENUS_SEARCH_MAP);
|
|
34
37
|
const editor = (0, _slateReact.useSlateStatic)();
|
|
35
38
|
(0, _react.useEffect)(() => {
|
|
36
39
|
const eventBus = _eventBus.default.getInstance();
|
|
@@ -78,13 +81,45 @@ const SideMenu = (_ref, ref) => {
|
|
|
78
81
|
sideMenuDom: sideMenuRef.current
|
|
79
82
|
};
|
|
80
83
|
}, []);
|
|
84
|
+
const onSetType = (0, _react.useCallback)(newType => {
|
|
85
|
+
(0, _helpers.onSetNodeType)(editor, slateNode, newType);
|
|
86
|
+
onReset();
|
|
87
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
88
|
+
}, []);
|
|
89
|
+
const onChange = (0, _react.useCallback)(e => {
|
|
90
|
+
if (!sideMenuRef.current.isInputtingChinese) {
|
|
91
|
+
if (isNodeEmpty) {
|
|
92
|
+
const newMenuSearchMap = (0, _helpers.getSearchedOperations)(_constants.SIDE_INSERT_MENUS_SEARCH_MAP, isNodeEmpty, e, t);
|
|
93
|
+
setInsertMenuSearchMap(newMenuSearchMap);
|
|
94
|
+
}
|
|
95
|
+
if (!isNodeEmpty) {
|
|
96
|
+
const newMenuSearchMap = (0, _helpers.getSearchedOperations)(_constants.SIDE_TRANSFORM_MENUS_SEARCH_MAP, isNodeEmpty, e, t);
|
|
97
|
+
setTransformMenuSearchMap(newMenuSearchMap);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}, [t, isNodeEmpty]);
|
|
101
|
+
const onCompositionStart = (0, _react.useCallback)(() => {
|
|
102
|
+
sideMenuRef.current.isInputtingChinese = true;
|
|
103
|
+
}, []);
|
|
104
|
+
const onCompositionEnd = (0, _react.useCallback)(e => {
|
|
105
|
+
sideMenuRef.current.isInputtingChinese = false;
|
|
106
|
+
onChange(e);
|
|
107
|
+
}, [onChange]);
|
|
81
108
|
return /*#__PURE__*/_react.default.createElement(_commons.ElementPopover, {
|
|
82
109
|
className: "sdoc-side-menu-popover",
|
|
83
110
|
style: menuStyle
|
|
84
111
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
85
112
|
className: "sdoc-side-menu sdoc-dropdown-menu",
|
|
86
113
|
ref: sideMenuRef
|
|
87
|
-
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null,
|
|
114
|
+
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
115
|
+
className: "sdoc-side-menu-search-wrapper"
|
|
116
|
+
}, /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
|
|
117
|
+
autoFocus: true,
|
|
118
|
+
placeholder: t('Search_action...'),
|
|
119
|
+
onChange: onChange,
|
|
120
|
+
onCompositionStart: onCompositionStart,
|
|
121
|
+
onCompositionEnd: onCompositionEnd
|
|
122
|
+
})), !isNodeEmpty && !(0, _helpers.isNotSupportTransform)(slateNode) && !transformMenuSearchMap['searchingForTransformMenu'] && /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
88
123
|
menuConfig: {
|
|
89
124
|
id: 'sdoc-side-menu-item-transform',
|
|
90
125
|
text: 'Transform_to',
|
|
@@ -96,51 +131,67 @@ const SideMenu = (_ref, ref) => {
|
|
|
96
131
|
}), /*#__PURE__*/_react.default.createElement(_transformMenus.default, {
|
|
97
132
|
target: "sdoc-side-menu-item-transform",
|
|
98
133
|
slateNode: slateNode,
|
|
99
|
-
|
|
134
|
+
editor: editor,
|
|
135
|
+
onSetType: onSetType
|
|
100
136
|
}))), isNodeEmpty && /*#__PURE__*/_react.default.createElement(_insertBlockMenu.default, {
|
|
101
137
|
isNodeEmpty: isNodeEmpty,
|
|
102
|
-
slateNode: slateNode
|
|
138
|
+
slateNode: slateNode,
|
|
139
|
+
insertMenuSearchMap: insertMenuSearchMap
|
|
103
140
|
}), !isNodeEmpty && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
104
141
|
menuConfig: {
|
|
105
142
|
id: 'sdoc-side-menu-item-insert-below',
|
|
106
143
|
text: 'Insert_below',
|
|
107
144
|
iconClass: 'sdocfont sdoc-insert'
|
|
108
145
|
},
|
|
109
|
-
className: "pr-2 sdoc-dropdown-menu-item-relative"
|
|
146
|
+
className: "pr-2 sdoc-dropdown-menu-item-relative",
|
|
147
|
+
isHidden: transformMenuSearchMap['searchingForTransformMenu']
|
|
110
148
|
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
111
149
|
className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
|
|
112
150
|
}), /*#__PURE__*/_react.default.createElement(_insertBelowMenu.default, {
|
|
113
151
|
target: "sdoc-side-menu-item-insert-below",
|
|
114
152
|
slateNode: slateNode
|
|
115
|
-
})),
|
|
153
|
+
})), transformMenuSearchMap['searchingForTransformMenu'] && (0, _helpers.getTransformMenusConfig)(editor, slateNode).map(item => {
|
|
154
|
+
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
155
|
+
isHidden: !transformMenuSearchMap[item.type],
|
|
156
|
+
key: item.id,
|
|
157
|
+
menuConfig: item,
|
|
158
|
+
onClick: () => onSetType(item.type)
|
|
159
|
+
});
|
|
160
|
+
}), !transformMenuSearchMap['searchingForTransformMenu'] && /*#__PURE__*/_react.default.createElement("div", {
|
|
116
161
|
className: "sdoc-dropdown-menu-divider"
|
|
117
162
|
}), [_constants.HEADER1, _constants.HEADER2, _constants.HEADER3].includes(slateNode === null || slateNode === void 0 ? void 0 : slateNode.type) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
118
163
|
menuConfig: {
|
|
119
164
|
text: 'Copy_link_of_section',
|
|
120
165
|
iconClass: 'sdocfont sdoc-link'
|
|
121
166
|
},
|
|
122
|
-
onClick: onCopyHeaderLink
|
|
123
|
-
|
|
167
|
+
onClick: onCopyHeaderLink,
|
|
168
|
+
isHidden: !transformMenuSearchMap['COPY_LINK_OF_SECTION']
|
|
169
|
+
}), !transformMenuSearchMap['searchingForTransformMenu'] && /*#__PURE__*/_react.default.createElement("div", {
|
|
124
170
|
className: "sdoc-dropdown-menu-divider"
|
|
125
171
|
})), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
126
172
|
menuConfig: {
|
|
127
173
|
text: 'Copy',
|
|
128
174
|
iconClass: 'sdocfont sdoc-copy'
|
|
129
175
|
},
|
|
130
|
-
onClick: onCopy
|
|
176
|
+
onClick: onCopy,
|
|
177
|
+
isHidden: !transformMenuSearchMap['COPY']
|
|
131
178
|
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
132
179
|
menuConfig: {
|
|
133
180
|
text: 'Cut',
|
|
134
181
|
iconClass: 'sdocfont sdoc-cut'
|
|
135
182
|
},
|
|
136
|
-
onClick: onCut
|
|
183
|
+
onClick: onCut,
|
|
184
|
+
isHidden: !transformMenuSearchMap['CUT']
|
|
137
185
|
}), /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
138
186
|
menuConfig: {
|
|
139
187
|
text: 'Delete',
|
|
140
188
|
iconClass: 'sdocfont sdoc-delete'
|
|
141
189
|
},
|
|
142
|
-
onClick: onDelete
|
|
143
|
-
|
|
190
|
+
onClick: onDelete,
|
|
191
|
+
isHidden: !transformMenuSearchMap['DELETE']
|
|
192
|
+
}), transformMenuSearchMap['searchingForTransformMenu'] && Object.keys(transformMenuSearchMap).length === 1 && /*#__PURE__*/_react.default.createElement("div", {
|
|
193
|
+
className: "sdoc-dropdown-menu-item-no-results"
|
|
194
|
+
}, t('No_results')))));
|
|
144
195
|
};
|
|
145
196
|
var _default = exports.default = (0, _reactI18next.withTranslation)('sdoc-editor', {
|
|
146
197
|
withRef: true
|
|
@@ -1,65 +1,22 @@
|
|
|
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 _reactstrap = require("reactstrap");
|
|
11
10
|
var _reactI18next = require("react-i18next");
|
|
12
|
-
var _slateReact = require("@seafile/slate-react");
|
|
13
11
|
var _helpers = require("./helpers");
|
|
14
|
-
var _constants = require("../../constants");
|
|
15
12
|
var _dropdownMenuItem = _interopRequireDefault(require("../../commons/dropdown-menu-item"));
|
|
16
|
-
var _core = require("../../core");
|
|
17
13
|
const TransformMenus = _ref => {
|
|
18
14
|
let {
|
|
19
|
-
|
|
15
|
+
editor,
|
|
20
16
|
slateNode,
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
target,
|
|
18
|
+
onSetType
|
|
23
19
|
} = _ref;
|
|
24
|
-
const editor = (0, _slateReact.useSlateStatic)();
|
|
25
|
-
const onSetType = (0, _react.useCallback)(newType => {
|
|
26
|
-
(0, _helpers.onSetNodeType)(editor, slateNode, newType);
|
|
27
|
-
onReset();
|
|
28
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
29
|
-
}, []);
|
|
30
|
-
const getSideMenusConfig = (0, _react.useCallback)(SIDE_TRANSFORM_MENUS_CONFIG => {
|
|
31
|
-
let newSideMenusConfig = SIDE_TRANSFORM_MENUS_CONFIG;
|
|
32
|
-
if (_constants.LIST_ITEM_CORRELATION_TYPE.includes(slateNode.type)) {
|
|
33
|
-
newSideMenusConfig = SIDE_TRANSFORM_MENUS_CONFIG.filter(item => _constants.LIST_ITEM_SUPPORTED_TRANSFORMATION.includes(item.type));
|
|
34
|
-
}
|
|
35
|
-
const path = _slateReact.ReactEditor.findPath(editor, slateNode);
|
|
36
|
-
if (path) {
|
|
37
|
-
const nodeIndex = path[0];
|
|
38
|
-
const highestNode = editor.children[nodeIndex];
|
|
39
|
-
if (path.length > 1) {
|
|
40
|
-
if (highestNode.type === _constants.BLOCKQUOTE) {
|
|
41
|
-
newSideMenusConfig = SIDE_TRANSFORM_MENUS_CONFIG.filter(item => item.type !== _constants.CALL_OUT);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// headers can't be nested by quote block
|
|
46
|
-
if (_constants.HEADERS.includes(highestNode.type)) {
|
|
47
|
-
newSideMenusConfig = SIDE_TRANSFORM_MENUS_CONFIG.filter(item => item.type !== _constants.BLOCKQUOTE);
|
|
48
|
-
}
|
|
49
|
-
if ([_constants.ORDERED_LIST, _constants.UNORDERED_LIST].includes(highestNode.type)) {
|
|
50
|
-
// If it's not the top list item, cannot be converted to checks
|
|
51
|
-
if (!(0, _core.isTopLevelListItem)(editor)) {
|
|
52
|
-
newSideMenusConfig = SIDE_TRANSFORM_MENUS_CONFIG.filter(item => item.type !== _constants.CALL_OUT);
|
|
53
|
-
}
|
|
54
|
-
// Multi-level list items cannot be converted to checks
|
|
55
|
-
if ((0, _core.isMultiLevelList)(highestNode)) {
|
|
56
|
-
newSideMenusConfig = newSideMenusConfig.filter(item => item.type !== _constants.CHECK_LIST_ITEM);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return newSideMenusConfig;
|
|
61
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
62
|
-
}, [slateNode]);
|
|
63
20
|
return /*#__PURE__*/_react.default.createElement(_reactstrap.UncontrolledPopover, {
|
|
64
21
|
boundariesElement: "viewport",
|
|
65
22
|
target: target,
|
|
@@ -70,7 +27,7 @@ const TransformMenus = _ref => {
|
|
|
70
27
|
fade: false
|
|
71
28
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
72
29
|
className: "sdoc-dropdown-menu-container"
|
|
73
|
-
},
|
|
30
|
+
}, (0, _helpers.getTransformMenusConfig)(editor, slateNode).map(item => {
|
|
74
31
|
return /*#__PURE__*/_react.default.createElement(_dropdownMenuItem.default, {
|
|
75
32
|
key: item.id,
|
|
76
33
|
menuConfig: item,
|
|
@@ -51,7 +51,7 @@ const SDocOutline = _ref => {
|
|
|
51
51
|
updateOutlineState(!isShown);
|
|
52
52
|
}, [isShown, updateOutlineState]);
|
|
53
53
|
const list = (0, _react.useMemo)(() => {
|
|
54
|
-
return doc.filter(item => ['header1', 'header2', 'header3'].includes(item.type));
|
|
54
|
+
return doc === null || doc === void 0 ? void 0 : doc.filter(item => ['header1', 'header2', 'header3'].includes(item.type));
|
|
55
55
|
}, [doc]);
|
|
56
56
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
57
57
|
className: (0, _classnames.default)('sdoc-outline-wrapper', {
|
package/package.json
CHANGED
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "Enter comment, Enter for new line, Shift + Enter to send",
|
|
567
|
-
"Sub_table": "Tabulka"
|
|
567
|
+
"Sub_table": "Tabulka",
|
|
568
|
+
"Search_action...": "Search action..."
|
|
568
569
|
}
|
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "Enter comment, Enter for new line, Shift + Enter to send",
|
|
567
|
-
"Sub_table": "Tabelle"
|
|
567
|
+
"Sub_table": "Tabelle",
|
|
568
|
+
"Search_action...": "Search action..."
|
|
568
569
|
}
|
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "Enter comment, Enter for new line, Shift + Enter to send",
|
|
567
|
-
"Sub_table": "Table"
|
|
567
|
+
"Sub_table": "Table",
|
|
568
|
+
"Search_action...": "Search action..."
|
|
568
569
|
}
|
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "Enter comment, Enter for new line, Shift + Enter to send",
|
|
567
|
-
"Sub_table": "Tabla"
|
|
567
|
+
"Sub_table": "Tabla",
|
|
568
|
+
"Search_action...": "Search action..."
|
|
568
569
|
}
|
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "Enter comment, Enter for new line, Shift + Enter to send",
|
|
567
|
-
"Sub_table": "Tabla"
|
|
567
|
+
"Sub_table": "Tabla",
|
|
568
|
+
"Search_action...": "Search action..."
|
|
568
569
|
}
|
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "Enter comment, Enter for new line, Shift + Enter to send",
|
|
567
|
-
"Sub_table": "Tabla"
|
|
567
|
+
"Sub_table": "Tabla",
|
|
568
|
+
"Search_action...": "Search action..."
|
|
568
569
|
}
|
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "Enter comment, Enter for new line, Shift + Enter to send",
|
|
567
|
-
"Sub_table": "Tableau"
|
|
567
|
+
"Sub_table": "Tableau",
|
|
568
|
+
"Search_action...": "Search action..."
|
|
568
569
|
}
|
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "the past numbers of days",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Double click to enter edit mode and adjust field width",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "Enter comment, Enter for new line, Shift + Enter to send",
|
|
567
|
-
"Sub_table": "Tabella"
|
|
567
|
+
"Sub_table": "Tabella",
|
|
568
|
+
"Search_action...": "Search action..."
|
|
568
569
|
}
|
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "прошедшее количество дней",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "Дважды щелкните, чтобы войти в режим редактирования и отрегулировать ширину поля",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "Введите комментарий, Enter для новой строки, Shift + Enter для отправки",
|
|
567
|
-
"Sub_table": "Таблица"
|
|
567
|
+
"Sub_table": "Таблица",
|
|
568
|
+
"Search_action...": "Search action..."
|
|
568
569
|
}
|
|
@@ -564,5 +564,6 @@
|
|
|
564
564
|
"the_past_numbers_of_days": "今天之前的指定天数",
|
|
565
565
|
"Double_click_to_enter_edit_mode_and_adjust_field_width" : "双击可进入编辑模式并调整字段宽度",
|
|
566
566
|
"Enter_comment_Enter_for_new_line_shift_enter_to_send": "输入评论,Enter 换行,Shift + Enter 发送",
|
|
567
|
-
"Sub_table": "子表"
|
|
567
|
+
"Sub_table": "子表",
|
|
568
|
+
"Search_action...": "搜索操作..."
|
|
568
569
|
}
|