@seafile/sdoc-editor 0.1.125 → 0.1.127

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.
Files changed (44) hide show
  1. package/dist/basic-sdk/comment/comment/editor-comment.js +11 -2
  2. package/dist/basic-sdk/comment/comment/style.css +1 -0
  3. package/dist/basic-sdk/constants/index.js +2 -1
  4. package/dist/basic-sdk/editor.js +2 -1
  5. package/dist/basic-sdk/extension/constants/index.js +71 -0
  6. package/dist/basic-sdk/extension/index.js +2 -2
  7. package/dist/basic-sdk/extension/plugins/blockquote/render-elem.js +2 -1
  8. package/dist/basic-sdk/extension/plugins/check-list/index.js +2 -2
  9. package/dist/basic-sdk/extension/plugins/check-list/render-elem.js +7 -10
  10. package/dist/basic-sdk/extension/plugins/code-block/render-elem.js +8 -9
  11. package/dist/basic-sdk/extension/plugins/header/render-elem.js +2 -2
  12. package/dist/basic-sdk/extension/plugins/link/menu/add-link-dialog.js +7 -2
  13. package/dist/basic-sdk/extension/plugins/list/render-elem.js +3 -1
  14. package/dist/basic-sdk/extension/plugins/paragraph/render-elem.js +2 -1
  15. package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/index.css +55 -0
  16. package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-file-dialog.js → dialogs/select-sdoc-file-dialog/index.js} +36 -29
  17. package/dist/basic-sdk/extension/plugins/sdoc-link/dialogs/select-sdoc-file-dialog/local-files/index.css +75 -0
  18. package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/local-files.js → dialogs/select-sdoc-file-dialog/local-files/index.js} +42 -32
  19. package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-hover-menu.js → hover-menu/index.js} +1 -1
  20. package/dist/basic-sdk/extension/plugins/sdoc-link/menu/index.js +3 -3
  21. package/dist/basic-sdk/extension/plugins/sdoc-link/render-elem.js +2 -2
  22. package/dist/basic-sdk/extension/plugins/table/popover/table-size-popover/index.js +11 -4
  23. package/dist/basic-sdk/extension/plugins/table/render/table-root.js +1 -0
  24. package/dist/basic-sdk/extension/render/render-element.js +20 -7
  25. package/dist/basic-sdk/extension/toolbar/index.js +2 -1
  26. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +121 -0
  27. package/dist/basic-sdk/extension/toolbar/side-toolbar/index.css +24 -0
  28. package/dist/basic-sdk/extension/toolbar/side-toolbar/index.js +123 -0
  29. package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-below-menu.js +23 -0
  30. package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +95 -0
  31. package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu-item.js +35 -0
  32. package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.css +64 -0
  33. package/dist/basic-sdk/extension/toolbar/side-toolbar/side-menu.js +76 -0
  34. package/dist/basic-sdk/extension/toolbar/side-toolbar/transform-menus.js +41 -0
  35. package/dist/basic-sdk/layout/article-container.js +3 -2
  36. package/dist/basic-sdk/outline/index.js +6 -6
  37. package/dist/basic-sdk/socket/socket-client.js +1 -1
  38. package/dist/basic-sdk/socket/socket-manager.js +0 -4
  39. package/package.json +1 -1
  40. package/public/locales/en/sdoc-editor.json +7 -1
  41. package/public/locales/zh-CN/sdoc-editor.json +8 -1
  42. package/dist/basic-sdk/extension/plugins/sdoc-link/menu/local-files.css +0 -98
  43. package/dist/basic-sdk/extension/plugins/sdoc-link/menu/sdoc-link-file-dialog.css +0 -35
  44. /package/dist/basic-sdk/extension/plugins/sdoc-link/{menu/sdoc-link-hover-menu.css → hover-menu/index.css} +0 -0
@@ -1,5 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useCallback, useEffect, useMemo, useState } from 'react';
3
+ import { useSlateStatic } from '@seafile/slate-react';
4
+ import { Node } from '@seafile/slate';
3
5
  import useSelectionUpdate from '../../hooks/use-selection-update';
4
6
  import { useCursorPosition } from '../helper';
5
7
  import CommentList from './comment-list';
@@ -7,6 +9,7 @@ import { useSelectionElement } from '../../hooks/use-selection-element';
7
9
  import { useCommentContext } from '../hooks/use-comment-context';
8
10
  var EditorComment = function EditorComment() {
9
11
  useSelectionUpdate();
12
+ var editor = useSlateStatic();
10
13
  var selectionElement = useSelectionElement();
11
14
  var _useState = useState(false),
12
15
  _useState2 = _slicedToArray(_useState, 2),
@@ -17,10 +20,16 @@ var EditorComment = function EditorComment() {
17
20
  }, []);
18
21
  var cursor = useCursorPosition();
19
22
  var style = useMemo(function () {
23
+ var _Node$string;
24
+ if (selectionElement && ((_Node$string = Node.string(selectionElement)) === null || _Node$string === void 0 ? void 0 : _Node$string.length) === 0) {
25
+ return {
26
+ top: '-99999px'
27
+ };
28
+ }
20
29
  return {
21
30
  top: cursor.y === 0 || isShowComments ? '-99999px' : cursor.y
22
31
  };
23
- }, [cursor, isShowComments]);
32
+ }, [cursor, isShowComments, selectionElement]);
24
33
 
25
34
  // When selectionElement update, recalculate comment's panel state
26
35
  var _useState3 = useState([]),
@@ -41,7 +50,7 @@ var EditorComment = function EditorComment() {
41
50
  }
42
51
  setComments([]);
43
52
  setIsShowComments(false);
44
- }, [element_comments_map, selectionElement]);
53
+ }, [element_comments_map, selectionElement, editor.selection]);
45
54
  return /*#__PURE__*/React.createElement("div", {
46
55
  className: "sdoc-comment-container"
47
56
  }, /*#__PURE__*/React.createElement("div", {
@@ -29,6 +29,7 @@
29
29
 
30
30
  .sdoc-comment-container .comment-container-right .comment-add-wrapper .sdocfont:hover {
31
31
  color: #333;
32
+ cursor: pointer;
32
33
  }
33
34
 
34
35
  .sdoc-comment-container .comment-container-right .comment-list-wrapper {
@@ -1,6 +1,7 @@
1
1
  export var INTERNAL_EVENT = {
2
2
  CANCEL_TABLE_SELECT_RANGE: 'cancel_table_select_range',
3
3
  SET_TABLE_SELECT_RANGE: 'set_table_select_range',
4
- HIDDEN_CODE_BLOCK_HOVER_MENU: 'hidden_code_block_hover_menu'
4
+ HIDDEN_CODE_BLOCK_HOVER_MENU: 'hidden_code_block_hover_menu',
5
+ ON_MOUSE_ENTER_BLOCK: 'on_mouse_enter_block'
5
6
  };
6
7
  export var PAGE_EDIT_AREA_WIDTH = 672; // 672 = 794 - 2[borderLeft + borderRight] - 120[paddingLeft + paddingRight]
@@ -22,6 +22,7 @@ import ArticleContainer from './layout/article-container';
22
22
  import './assets/css/layout.css';
23
23
  import './assets/css/sdoc-editor-plugins.css';
24
24
  import './assets/css/dropdown-menu.css';
25
+ import SideToolbar from './extension/toolbar/side-toolbar';
25
26
  var SDocEditor = forwardRef(function (_ref, ref) {
26
27
  var document = _ref.document,
27
28
  config = _ref.config;
@@ -241,6 +242,6 @@ var SDocEditor = forwardRef(function (_ref, ref) {
241
242
  onMouseDown: onMouseDown,
242
243
  decorate: decorate,
243
244
  onCut: eventProxy.onCut
244
- })), /*#__PURE__*/React.createElement(CommentContextProvider, null, /*#__PURE__*/React.createElement(CommentWrapper, null)))))))))));
245
+ })), /*#__PURE__*/React.createElement(SideToolbar, null), /*#__PURE__*/React.createElement(CommentContextProvider, null, /*#__PURE__*/React.createElement(CommentWrapper, null)))))))))));
245
246
  });
246
247
  export default SDocEditor;
@@ -161,4 +161,75 @@ export var LIST_TYPE_ARRAY = ['unordered_list', 'ordered_list'];
161
161
  export var TRANSPARENT = 'transparent';
162
162
  export var CLIPBOARD_FORMAT_KEY = 'x-slate-fragment';
163
163
  export var INSERT_FILE_DISPLAY_TYPE = ['text_link', 'icon_link', 'card_link'];
164
+ export var SIDE_MENUS_CONFIG = [{
165
+ id: PARAGRAPH,
166
+ iconClass: 'sdocfont sdoc-text',
167
+ type: PARAGRAPH,
168
+ title: 'Paragraph'
169
+ }, {
170
+ id: HEADER1,
171
+ iconClass: 'sdocfont sdoc-header1',
172
+ type: HEADER1,
173
+ title: 'Header_one'
174
+ }, {
175
+ id: HEADER2,
176
+ iconClass: 'sdocfont sdoc-header2',
177
+ type: HEADER2,
178
+ title: 'Header_two'
179
+ }, {
180
+ id: HEADER3,
181
+ iconClass: 'sdocfont sdoc-header3',
182
+ type: HEADER3,
183
+ title: 'Header_three'
184
+ }, {
185
+ id: HEADER4,
186
+ iconClass: 'sdocfont sdoc-header4',
187
+ type: HEADER4,
188
+ title: 'Header_four'
189
+ }, {
190
+ id: HEADER5,
191
+ iconClass: 'sdocfont sdoc-header5',
192
+ type: HEADER5,
193
+ title: 'Header_five'
194
+ }, {
195
+ id: HEADER6,
196
+ iconClass: 'sdocfont sdoc-header6',
197
+ type: HEADER6,
198
+ title: 'Header_six'
199
+ }, {
200
+ id: UNORDERED_LIST,
201
+ iconClass: 'sdocfont sdoc-list-ul',
202
+ type: UNORDERED_LIST,
203
+ title: 'Unordered_list'
204
+ }, {
205
+ id: ORDERED_LIST,
206
+ iconClass: 'sdocfont sdoc-list-ol',
207
+ type: ORDERED_LIST,
208
+ title: 'Ordered_list'
209
+ }, {
210
+ id: CHECK_LIST_ITEM,
211
+ iconClass: 'sdocfont sdoc-check-square',
212
+ type: CHECK_LIST_ITEM,
213
+ title: 'Check_list_item'
214
+ }, {
215
+ id: ALIGN_LEFT,
216
+ iconClass: 'sdocfont sdoc-align-left',
217
+ type: 'left',
218
+ title: 'Left'
219
+ }, {
220
+ id: ALIGN_CENTER,
221
+ iconClass: 'sdocfont sdoc-align-center',
222
+ type: 'center',
223
+ title: 'Center'
224
+ }, {
225
+ id: ALIGN_RIGHT,
226
+ iconClass: 'sdocfont sdoc-align-right',
227
+ type: 'right',
228
+ title: 'Right'
229
+ }, {
230
+ id: BLOCKQUOTE,
231
+ iconClass: 'sdocfont sdoc-quote1',
232
+ type: BLOCKQUOTE,
233
+ title: 'Quote'
234
+ }];
164
235
  export { BLOCKQUOTE, HEADER, HEADER1, HEADER2, HEADER3, HEADER4, HEADER5, HEADER6, PARAGRAPH, BOLD, ITALIC, UNDERLINE, STRIKETHROUGH, SUPERSCRIPT, SUBSCRIPT, ORDERED_LIST, UNORDERED_LIST, LIST_ITEM, LIST_LIC, CHECK_LIST, CHECK_LIST_ITEM, LINK, HTML, CODE_BLOCK, CODE_LINE, IMAGE, TABLE, TABLE_CELL, TABLE_ROW, FORMULA, COLUMN, TEXT_STYLE, TEXT_STYLE_MORE, BOLD_ITALIC, TEXT_ALIGN, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER, ELEMENT_TYPE, KEYBOARD, DEFAULT_COLORS, STANDARD_COLORS, DEFAULT_RECENT_USED_LIST, CLEAR_FORMAT, DEFAULT_FONT_COLOR, RECENT_USED_HIGHLIGHT_COLORS_KEY, RECENT_USED_FONT_COLORS_KEY, RECENT_USED_TABLE_CELL_BG_COLORS_KEY, DEFAULT_LAST_USED_FONT_COLOR, DEFAULT_LAST_USED_HIGHLIGHT_COLOR, DEFAULT_LAST_USED_TABLE_CELL_BG_COLOR, SPECIAL_FONT_SIZE_NAME, DEFAULT_COMMON_FONT_SIZE, FONT_SIZE, DEFAULT_FONT, FONT, GOOGLE_FONT_CLASS, RECENT_USED_FONTS_KEY, HEADER_FONT_SIZE, SDOC_LINK };
@@ -4,7 +4,7 @@ import { withHistory } from '@seafile/slate-history';
4
4
  import Plugins from './plugins';
5
5
  import renderElement from './render/render-element';
6
6
  import renderLeaf from './render/render-leaf';
7
- import { Toolbar, ContextToolbar } from './toolbar';
7
+ import { Toolbar, ContextToolbar, SideToolbar } from './toolbar';
8
8
  var baseEditor = withHistory(withReact(createEditor()));
9
9
  var defaultEditor = Plugins === null || Plugins === void 0 ? void 0 : Plugins.reduce(function (editor, pluginItem) {
10
10
  var withPlugin = pluginItem.editorPlugin;
@@ -14,4 +14,4 @@ var defaultEditor = Plugins === null || Plugins === void 0 ? void 0 : Plugins.re
14
14
  return editor;
15
15
  }, baseEditor);
16
16
  export default defaultEditor;
17
- export { renderLeaf, renderElement, Toolbar, ContextToolbar };
17
+ export { renderLeaf, renderElement, Toolbar, ContextToolbar, SideToolbar };
@@ -7,7 +7,8 @@ var renderBlockquote = function renderBlockquote(props, editor) {
7
7
  textAlign: element.align
8
8
  };
9
9
  return /*#__PURE__*/React.createElement("blockquote", Object.assign({
10
- "data-id": element.id
10
+ "data-id": element.id,
11
+ "data-root": "true"
11
12
  }, attributes, {
12
13
  style: style
13
14
  }), children);
@@ -1,7 +1,7 @@
1
1
  import withCheckList from './plugin';
2
- import { CheckListItem, renderCheckList } from './render-elem';
2
+ import { renderCheckListItem } from './render-elem';
3
3
  var CheckListPlugin = {
4
4
  editorPlugin: withCheckList,
5
- renderElements: [renderCheckList, CheckListItem]
5
+ renderElements: [renderCheckListItem]
6
6
  };
7
7
  export default CheckListPlugin;
@@ -5,14 +5,6 @@ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React from 'react';
6
6
  import { Transforms } from '@seafile/slate';
7
7
  import { ReactEditor } from '@seafile/slate-react';
8
- var renderCheckList = function renderCheckList(props, editor) {
9
- var attributes = props.attributes,
10
- children = props.children,
11
- style = props.style;
12
- return /*#__PURE__*/React.createElement("p", Object.assign({}, attributes, {
13
- style: style
14
- }), children);
15
- };
16
8
  var CheckListItem = /*#__PURE__*/function (_React$PureComponent) {
17
9
  _inherits(CheckListItem, _React$PureComponent);
18
10
  var _super = _createSuper(CheckListItem);
@@ -53,7 +45,8 @@ var CheckListItem = /*#__PURE__*/function (_React$PureComponent) {
53
45
  textAlign: align
54
46
  };
55
47
  return /*#__PURE__*/React.createElement("div", Object.assign({
56
- "data-id": id
48
+ "data-id": id,
49
+ "data-root": "true"
57
50
  }, attributes, {
58
51
  style: style
59
52
  }), /*#__PURE__*/React.createElement("span", {
@@ -70,4 +63,8 @@ var CheckListItem = /*#__PURE__*/function (_React$PureComponent) {
70
63
  }]);
71
64
  return CheckListItem;
72
65
  }(React.PureComponent);
73
- export { CheckListItem, renderCheckList };
66
+ export var renderCheckListItem = function renderCheckListItem(props, editor) {
67
+ return /*#__PURE__*/React.createElement(CheckListItem, Object.assign({}, props, {
68
+ editor: editor
69
+ }));
70
+ };
@@ -1,7 +1,7 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import React, { useCallback, useEffect, useState, useRef } from 'react';
4
- import { ReactEditor, useSlateStatic, useReadOnly } from '@seafile/slate-react';
4
+ import { ReactEditor, useReadOnly } from '@seafile/slate-react';
5
5
  import { Transforms } from '@seafile/slate';
6
6
  import EventBus from '../../../utils/event-bus';
7
7
  import { useScrollContext } from '../../../hooks/use-scroll-context';
@@ -10,14 +10,13 @@ import { setClipboardData } from './helpers';
10
10
  import { INTERNAL_EVENT } from '../../../constants';
11
11
  import '../../../assets/css/code-block.css';
12
12
  var CodeBlock = function CodeBlock(_ref) {
13
- var codeBlockProps = _ref.codeBlockProps;
13
+ var attributes = _ref.attributes,
14
+ children = _ref.children,
15
+ element = _ref.element,
16
+ editor = _ref.editor;
14
17
  var readOnly = useReadOnly();
15
- var editor = useSlateStatic();
16
18
  var codeBlockRef = useRef();
17
19
  var scrollRef = useScrollContext();
18
- var attributes = codeBlockProps.attributes,
19
- children = codeBlockProps.children,
20
- element = codeBlockProps.element;
21
20
  var _element$style = element.style,
22
21
  style = _element$style === void 0 ? {
23
22
  white_space: 'nowrap'
@@ -127,6 +126,7 @@ var CodeBlock = function CodeBlock(_ref) {
127
126
  }, []);
128
127
  return /*#__PURE__*/React.createElement("div", {
129
128
  "data-id": element.id,
129
+ "data-root": "true",
130
130
  ref: codeBlockRef,
131
131
  className: 'sdoc-code-block-container',
132
132
  onClick: onFocusCodeBlock,
@@ -148,10 +148,9 @@ var CodeBlock = function CodeBlock(_ref) {
148
148
  }));
149
149
  };
150
150
  export var renderCodeBlock = function renderCodeBlock(props, editor) {
151
- return /*#__PURE__*/React.createElement(CodeBlock, {
152
- codeBlockProps: _objectSpread({}, props),
151
+ return /*#__PURE__*/React.createElement(CodeBlock, Object.assign({}, props, {
153
152
  editor: editor
154
- });
153
+ }));
155
154
  };
156
155
  export var renderCodeLine = function renderCodeLine(props, editor) {
157
156
  var element = props.element,
@@ -19,8 +19,8 @@ var renderHeader = function renderHeader(props, editor) {
19
19
  isShowPlaceHolder = true;
20
20
  }
21
21
  return /*#__PURE__*/React.createElement(Tag, Object.assign({
22
- id: element.id,
23
- "data-id": element.id
22
+ "data-id": element.id,
23
+ "data-root": "true"
24
24
  }, attributes, {
25
25
  style: _objectSpread({
26
26
  position: isShowPlaceHolder ? 'relative' : ''
@@ -56,12 +56,17 @@ var AddLinkDialog = /*#__PURE__*/function (_React$PureComponent) {
56
56
  var _this$props = _this.props,
57
57
  editor = _this$props.editor,
58
58
  propsUrl = _this$props.url,
59
- propsTitle = _this$props.title;
59
+ propsTitle = _this$props.title,
60
+ propsInsertLink = _this$props.insertLink;
60
61
  var isEdit = propsUrl && propsTitle;
61
62
  if (isEdit) {
62
63
  updateLink(editor, title, url);
63
64
  } else {
64
- insertLink(editor, title, url);
65
+ if (propsInsertLink) {
66
+ propsInsertLink(editor, title, url);
67
+ } else {
68
+ insertLink(editor, title, url);
69
+ }
65
70
  }
66
71
  _this.props.onLinkDialogToggle();
67
72
  };
@@ -7,6 +7,7 @@ var renderList = function renderList(props, editor) {
7
7
  var Tag = node.type === ORDERED_LIST ? 'ol' : 'ul';
8
8
  return /*#__PURE__*/React.createElement(Tag, Object.assign({
9
9
  "data-id": node.id,
10
+ "data-root": "true",
10
11
  className: "list-container d-flex flex-column"
11
12
  }, attributes), children);
12
13
  };
@@ -27,7 +28,8 @@ var renderListItem = function renderListItem(props, editor) {
27
28
  className = '';
28
29
  }
29
30
  return /*#__PURE__*/React.createElement("li", Object.assign({
30
- "data-id": element.id
31
+ "data-id": element.id,
32
+ "data-root": "true"
31
33
  }, attributes, {
32
34
  className: className
33
35
  }), children);
@@ -21,7 +21,8 @@ var Paragraph = function Paragraph(_ref) {
21
21
  textAlign: element.align
22
22
  };
23
23
  return /*#__PURE__*/React.createElement("p", Object.assign({
24
- "data-id": element.id
24
+ "data-id": element.id,
25
+ "data-root": "true"
25
26
  }, attributes, {
26
27
  style: _objectSpread({
27
28
  position: isShowPlaceHolder ? 'relative' : ''
@@ -0,0 +1,55 @@
1
+ .sdoc-file-select-dialog {
2
+ max-width: 620px;
3
+ }
4
+
5
+ .sdoc-file-select-dialog .sdoc-file-select-modal {
6
+ width: 620px;
7
+ }
8
+
9
+ .sdoc-file-select-dialog .sdoc-file-select-container {
10
+ display: flex;
11
+ }
12
+
13
+ .sdoc-file-select-dialog .sdoc-file-select-left {
14
+ border-right: 1px solid #e9ecef;
15
+ width: 150px;
16
+ padding: 12px 8px;
17
+ }
18
+
19
+ .sdoc-file-select-dialog .sdoc-file-select-left .sdoc-file-select-nav-item {
20
+ padding: 5px 0 5px 8px;
21
+ border-radius: 3px;
22
+ display: inline-block;
23
+ cursor: pointer;
24
+ width: 100%;
25
+ }
26
+
27
+ .sdoc-file-select-dialog .sdoc-file-select-left .sdoc-file-select-nav-item:hover {
28
+ background-color: #f5f5f5;
29
+ }
30
+
31
+ .sdoc-file-select-dialog .sdoc-file-select-container .sdoc-file-select-left .selected-sdoc-file-select-nav-item {
32
+ background-color: #ff8000;
33
+ color: #fff;
34
+ }
35
+
36
+ .sdoc-file-select-dialog .sdoc-file-select-right {
37
+ height: 440px;
38
+ width: 468px;
39
+ display: flex;
40
+ padding: 0;
41
+ flex-direction: column;
42
+ }
43
+
44
+ .sdoc-file-select-dialog .sdoc-file-select-footer {
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: flex-end;
48
+ padding: 1rem;
49
+ border-top: 1px solid #e9ecef;
50
+ }
51
+
52
+ .sdoc-file-select-dialog .highlight-bg-color {
53
+ background-color: #FF8000;
54
+ border-color: #FF8000;
55
+ }
@@ -1,14 +1,15 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import React, { useCallback, useState } from 'react';
3
- import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
4
- import { withTranslation } from 'react-i18next';
3
+ import { Button, Modal, ModalHeader, ModalBody } from 'reactstrap';
4
+ import { useTranslation } from 'react-i18next';
5
5
  import LocalFiles from './local-files';
6
- import { insertSdocFileLink } from '../helpers';
7
- import './sdoc-link-file-dialog.css';
8
- var SdocLinkFileDialog = function SdocLinkFileDialog(_ref) {
6
+ import { insertSdocFileLink } from '../../helpers';
7
+ import './index.css';
8
+ var SelectSdocFileDialog = function SelectSdocFileDialog(_ref) {
9
9
  var editor = _ref.editor,
10
- onDialogToggle = _ref.onDialogToggle,
11
- t = _ref.t;
10
+ toggle = _ref.toggle;
11
+ var _useTranslation = useTranslation(),
12
+ t = _useTranslation.t;
12
13
  var _useState = useState(null),
13
14
  _useState2 = _slicedToArray(_useState, 2),
14
15
  currentSelectedFile = _useState2[0],
@@ -16,8 +17,13 @@ var SdocLinkFileDialog = function SdocLinkFileDialog(_ref) {
16
17
  var onSelectedFile = useCallback(function (fileInfo) {
17
18
  setCurrentSelectedFile(fileInfo);
18
19
  }, []);
20
+ var closeDialog = useCallback(function () {
21
+ toggle(false);
22
+
23
+ // eslint-disable-next-line react-hooks/exhaustive-deps
24
+ }, []);
19
25
  var onSubmit = useCallback(function () {
20
- onDialogToggle(false);
26
+ closeDialog(false);
21
27
  if (currentSelectedFile) {
22
28
  insertSdocFileLink(editor, currentSelectedFile.name, currentSelectedFile.doc_uuid);
23
29
  }
@@ -27,36 +33,37 @@ var SdocLinkFileDialog = function SdocLinkFileDialog(_ref) {
27
33
  isOpen: true,
28
34
  autoFocus: false,
29
35
  zIndex: 1071,
30
- returnFocusAfterClose: false
36
+ returnFocusAfterClose: false,
37
+ className: "sdoc-file-select-dialog",
38
+ contentClassName: "sdoc-file-select-modal"
31
39
  }, /*#__PURE__*/React.createElement(ModalHeader, {
32
- toggle: function toggle() {
33
- return onDialogToggle(false);
34
- }
35
- }, t('Select_sdoc_document')), /*#__PURE__*/React.createElement(ModalBody, null, /*#__PURE__*/React.createElement("div", {
36
- className: "sdoc-file-addition-container"
40
+ toggle: closeDialog
41
+ }, t('Select_sdoc_document')), /*#__PURE__*/React.createElement(ModalBody, {
42
+ className: "p-0"
37
43
  }, /*#__PURE__*/React.createElement("div", {
38
- className: "sdoc-file-addition-left"
44
+ className: "sdoc-file-select-container"
39
45
  }, /*#__PURE__*/React.createElement("div", {
40
- className: "sdoc-file-addition-nav"
46
+ className: "sdoc-file-select-left"
41
47
  }, /*#__PURE__*/React.createElement("div", {
42
- className: 'sdoc-addition-item selected-sdoc-addition-item',
43
- onClick: onDialogToggle
48
+ className: "sdoc-file-select-nav"
49
+ }, /*#__PURE__*/React.createElement("div", {
50
+ className: "sdoc-file-select-nav-item selected-sdoc-file-select-nav-item"
44
51
  }, t('Local_file')))), /*#__PURE__*/React.createElement("div", {
45
- className: "sdoc-file-addition-right"
52
+ className: "sdoc-file-select-right"
46
53
  }, /*#__PURE__*/React.createElement(LocalFiles, {
47
54
  onSelectedFile: onSelectedFile,
48
- toggle: function toggle() {
49
- return onDialogToggle(false);
50
- }
51
- })))), /*#__PURE__*/React.createElement(ModalFooter, null, /*#__PURE__*/React.createElement(Button, {
55
+ toggle: closeDialog
56
+ }), /*#__PURE__*/React.createElement("div", {
57
+ className: "sdoc-file-select-footer"
58
+ }, /*#__PURE__*/React.createElement(Button, {
52
59
  color: "secondary",
53
- onClick: function onClick() {
54
- return onDialogToggle(false);
55
- }
60
+ className: "mr-2",
61
+ onClick: closeDialog
56
62
  }, t('Cancel')), /*#__PURE__*/React.createElement(Button, {
57
63
  color: "primary",
58
- disabled: false,
64
+ className: "highlight-bg-color",
65
+ disabled: !currentSelectedFile,
59
66
  onClick: onSubmit
60
- }, t('Confirm'))));
67
+ }, t('Confirm')))))));
61
68
  };
62
- export default withTranslation('sdoc-editor')(SdocLinkFileDialog);
69
+ export default SelectSdocFileDialog;
@@ -0,0 +1,75 @@
1
+ .sdoc-files-tree {
2
+ flex: 1;
3
+ padding: 16px;
4
+ overflow: auto;
5
+ width: 100%;
6
+ display: flex;
7
+ flex-direction: column;
8
+ }
9
+
10
+ .sdoc-files-tree .sdoc-file-info {
11
+ border-radius: 2px;
12
+ height: 1.5rem;
13
+ line-height: 1.625;
14
+ overflow: hidden;
15
+ text-overflow: ellipsis;
16
+ white-space: nowrap;
17
+ position: relative;
18
+ padding-left: 2.8rem;
19
+ }
20
+
21
+ .sdoc-files-tree .sdoc-file-info:hover {
22
+ cursor: pointer;
23
+ background: #fdefb9;
24
+ box-shadow: inset 0 0 1px #999;
25
+ }
26
+
27
+ .sdoc-files-tree .sdoc-file-info .sdoc-file-icon-container {
28
+ width: 2.8rem;
29
+ height: 100%;
30
+ padding-left: 1.5rem;
31
+ position: absolute;
32
+ left: 0;
33
+ }
34
+
35
+ .sdoc-files-tree .sdoc-file-info .sdoc-file-icon {
36
+ color: #9aa0ac;
37
+ }
38
+
39
+ .sdoc-files-tree .sdoc-file-info.active {
40
+ background: #ff8000;
41
+ box-shadow: inset 0 0 1px #999;
42
+ color: #fff;
43
+ }
44
+
45
+ .sdoc-files-tree .sdoc-file-info.active .sdoc-file-icon {
46
+ color: #fff;
47
+ }
48
+
49
+ .sdoc-files-tree .sdoc-file-icon-toggle {
50
+ height: 1.5rem;
51
+ width: 1.5rem;
52
+ line-height: 1.5rem !important;
53
+ font-size: 12px !important;
54
+ transform: scale(.8);
55
+ text-align: center;
56
+ position: absolute;
57
+ left: 0;
58
+ }
59
+
60
+ .sdoc-files-tree .sdoc-file-info.expanded .sdoc-file-icon-toggle {
61
+ transform: rotate(90deg) scale(.8);
62
+ }
63
+
64
+ .sdoc-files-tree .sdoc-file-info .sdoc-file-name {
65
+ font-size: 14px;
66
+ }
67
+
68
+ .sdoc-files-tree .sdoc-folder-children {
69
+ padding-left: 20px;
70
+ }
71
+
72
+ .sdoc-files-tree .sdoc-folder-children-empty {
73
+ color: #999;
74
+ padding: 4px 20px;
75
+ }