@seafile/sdoc-editor 1.0.30 → 1.0.32

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 (28) hide show
  1. package/dist/basic-sdk/extension/plugins/seatable-column/helpers.js +11 -1
  2. package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-menu.js +9 -4
  3. package/dist/basic-sdk/extension/plugins/seatable-column/menu/index.js +8 -6
  4. package/dist/basic-sdk/extension/plugins/seatable-tables/helpers.js +10 -2
  5. package/dist/basic-sdk/extension/plugins/seatable-tables/menu/index.js +11 -6
  6. package/dist/basic-sdk/extension/plugins/seatable-tables/op-menu/index.css +171 -6
  7. package/dist/basic-sdk/extension/plugins/seatable-tables/op-menu/index.js +313 -18
  8. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/index.css +1 -1
  9. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/record-item.js +7 -1
  10. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/record-list.js +4 -1
  11. package/dist/basic-sdk/extension/plugins/seatable-tables/render-element/seatable-table.js +6 -5
  12. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover-widgets/filters-list.css +1 -0
  13. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/filter-popover.js +5 -12
  14. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/filter-setter/index.js +7 -30
  15. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/hide-column-setter/hide-column-popover.js +5 -12
  16. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/hide-column-setter/index.js +8 -52
  17. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/sort-setter/index.js +10 -34
  18. package/dist/basic-sdk/extension/plugins/seatable-tables/seatable-settings/sort-setter/sort-popover.js +6 -12
  19. package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +11 -1
  20. package/dist/basic-sdk/layout/article-container.js +2 -1
  21. package/dist/pages/sdoc-wiki-editor.js +0 -2
  22. package/package.json +2 -1
  23. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  24. package/public/media/sdoc-editor-font/iconfont.svg +8 -0
  25. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  26. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  27. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  28. package/public/media/sdoc-editor-font.css +24 -10
@@ -2,6 +2,7 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import { Editor, Transforms, Range } from '@seafile/slate';
3
3
  import slugid from 'slugid';
4
4
  import { BLOCKQUOTE, CHECK_LIST_ITEM, COLUMN, IMAGE, ORDERED_LIST, PARAGRAPH, TABLE_CELL, UNORDERED_LIST } from '../../constants/element-type';
5
+ import { INSERT_POSITION } from '../../constants';
5
6
  import { focusEditor, getNodeType } from '../../core';
6
7
  import Column from './model';
7
8
  import * as CellType from './constants/cell-types';
@@ -46,10 +47,19 @@ export const getColumnType = editor => {
46
47
  const [n] = match;
47
48
  return getNodeType(n);
48
49
  };
49
- export const insertSeaTableColumn = (editor, active, option) => {
50
+ export const insertSeaTableColumn = function (editor, active, option) {
51
+ let insertPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : INSERT_POSITION.CURRENT;
50
52
  if (!active) {
51
53
  const column = new Column(option);
52
54
  column.id = slugid.nice();
55
+ if (insertPosition === INSERT_POSITION.AFTER) {
56
+ const path = Editor.path(editor, editor.selection);
57
+ path && Transforms.insertNodes(editor, _objectSpread({}, column), {
58
+ at: [path[0] + 1]
59
+ });
60
+ focusEditor(editor);
61
+ return;
62
+ }
53
63
  Transforms.insertNodes(editor, _objectSpread({}, column));
54
64
  }
55
65
  focusEditor(editor);
@@ -6,8 +6,10 @@ import './column-list-menu.css';
6
6
  const NOT_SUPPORT_COLUMN_TYPES = ['button', 'file'];
7
7
  export default function ColumnListMenu(_ref) {
8
8
  let {
9
- editor
9
+ editor,
10
+ insertPosition
10
11
  } = _ref;
12
+ const computedBottom = insertPosition ? '0px' : '';
11
13
  const columns = useMemo(() => {
12
14
  if (!editor.columns) return [];
13
15
  return editor.columns.filter(column => !NOT_SUPPORT_COLUMN_TYPES.includes(column.type));
@@ -27,10 +29,13 @@ export default function ColumnListMenu(_ref) {
27
29
  };
28
30
  const onMousedown = useCallback(option => {
29
31
  const active = isActive(editor);
30
- insertSeaTableColumn(editor, active, option);
31
- }, [editor]);
32
+ insertSeaTableColumn(editor, active, option, insertPosition);
33
+ }, [editor, insertPosition]);
32
34
  return /*#__PURE__*/React.createElement("div", {
33
- className: "column-list-menu"
35
+ className: "column-list-menu",
36
+ style: {
37
+ bottom: computedBottom
38
+ }
34
39
  }, options.map(option => {
35
40
  return /*#__PURE__*/React.createElement("div", {
36
41
  key: option.value,
@@ -7,7 +7,8 @@ import { isMenuDisabled } from '../helpers';
7
7
  const SeaTableColumnMenu = _ref => {
8
8
  let {
9
9
  editor,
10
- readonly
10
+ readonly,
11
+ insertPosition
11
12
  } = _ref;
12
13
  const disabled = isMenuDisabled(editor, readonly);
13
14
  const menuConfig = MENUS_CONFIG_MAP[ELEMENT_TYPE.COLUMN];
@@ -17,16 +18,17 @@ const SeaTableColumnMenu = _ref => {
17
18
  className: "pr-2"
18
19
  }, !disabled && /*#__PURE__*/React.createElement("i", {
19
20
  className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
20
- })), !disabled && /*#__PURE__*/React.createElement(UncontrolledPopover, {
21
+ }), !disabled && /*#__PURE__*/React.createElement(UncontrolledPopover, {
21
22
  target: menuConfig.id,
22
- className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu",
23
23
  trigger: "hover",
24
24
  placement: "right-start",
25
25
  hideArrow: true,
26
- fade: false
26
+ fade: false,
27
+ popperClassName: "seatable-column-popover"
27
28
  }, /*#__PURE__*/React.createElement(ColumnListMenu, {
28
29
  editor: editor,
29
- readonly: readonly
30
- })));
30
+ readonly: readonly,
31
+ insertPosition: insertPosition
32
+ }))));
31
33
  };
32
34
  export default SeaTableColumnMenu;
@@ -2,7 +2,7 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import { Editor, Transforms } from '@seafile/slate';
3
3
  import slugId from 'slugid';
4
4
  import { getNodeType, isTextNode, getParentNode, generateDefaultText } from '../../core';
5
- import { ELEMENT_TYPE, SEATABLE_TABLE } from '../../constants';
5
+ import { ELEMENT_TYPE, SEATABLE_TABLE, INSERT_POSITION } from '../../constants';
6
6
  export const isInsertSeaTableTableDisabled = (editor, readonly) => {
7
7
  if (readonly) return true;
8
8
  const {
@@ -51,8 +51,16 @@ export const generateSeaTableTable = (table_id, editor) => {
51
51
  children: [generateDefaultText()]
52
52
  };
53
53
  };
54
- export const insertSeaTableTable = (editor, item) => {
54
+ export const insertSeaTableTable = function (editor, item) {
55
+ let insertPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : INSERT_POSITION.CURRENT;
55
56
  const node = generateSeaTableTable(item._id, editor);
57
+ if (insertPosition === INSERT_POSITION.AFTER) {
58
+ const path = Editor.path(editor, editor.selection);
59
+ path && Transforms.insertNodes(editor, node, {
60
+ at: [path[0] + 1]
61
+ });
62
+ return;
63
+ }
56
64
  Transforms.setNodes(editor, node);
57
65
  };
58
66
  export const updateSeaTableTable = (editor, props) => {
@@ -7,21 +7,23 @@ import './index.css';
7
7
  const SeaTableTableMenu = _ref => {
8
8
  let {
9
9
  editor,
10
- readonly
10
+ readonly,
11
+ insertPosition
11
12
  } = _ref;
12
13
  const disabled = isInsertSeaTableTableDisabled(editor, readonly);
13
14
  const menuConfig = MENUS_CONFIG_MAP[SEATABLE_TABLE];
15
+ const computedBottom = insertPosition ? '0px' : '';
14
16
  const tables = editor.tables;
15
17
  const onViewClick = useCallback(item => {
16
- insertSeaTableTable(editor, item);
17
- }, [editor]);
18
+ insertSeaTableTable(editor, item, insertPosition);
19
+ }, [editor, insertPosition]);
18
20
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DropdownMenuItem, {
19
21
  disabled: disabled,
20
22
  menuConfig: menuConfig,
21
23
  className: "pr-2"
22
24
  }, !disabled && /*#__PURE__*/React.createElement("i", {
23
25
  className: "sdocfont sdoc-right-slide sdoc-dropdown-item-right-icon"
24
- })), !disabled && /*#__PURE__*/React.createElement(UncontrolledPopover, {
26
+ }), !disabled && /*#__PURE__*/React.createElement(UncontrolledPopover, {
25
27
  target: menuConfig.id,
26
28
  trigger: "hover",
27
29
  className: "sdoc-menu-popover sdoc-dropdown-menu sdoc-sub-dropdown-menu",
@@ -29,13 +31,16 @@ const SeaTableTableMenu = _ref => {
29
31
  hideArrow: true,
30
32
  fade: false
31
33
  }, /*#__PURE__*/React.createElement("div", {
32
- className: "sdoc-dropdown-menu-container table-list-menu"
34
+ className: "sdoc-dropdown-menu-container",
35
+ style: {
36
+ bottom: computedBottom
37
+ }
33
38
  }, tables.map(item => {
34
39
  return /*#__PURE__*/React.createElement("div", {
35
40
  key: item._id,
36
41
  className: "sdoc-dropdown-menu-item",
37
42
  onClick: () => onViewClick(item)
38
43
  }, item.name);
39
- }))));
44
+ })))));
40
45
  };
41
46
  export default SeaTableTableMenu;
@@ -1,16 +1,181 @@
1
- .seatable-op-menu {
1
+ .sdoc-seatable-hover-menu-container {
2
2
  position: absolute;
3
- padding: 7px;
3
+ height: 42px;
4
+ z-index: 101;
5
+ width: fit-content;
6
+ max-width: 250px;
7
+ }
8
+
9
+ .sdoc-seatable-hover-menu-container .hover-menu-container {
4
10
  height: 36px;
11
+ width: 100%;
12
+ padding: 7px 8px;
5
13
  background-color: #fff;
6
- border: 1px solid #eee;
7
- border-radius: 3px;
8
- z-index: 100;
9
14
  display: flex;
15
+ justify-content: space-around;
16
+ align-items: center;
17
+ border-radius: 3px;
18
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08);
19
+ border: 1px solid #e8e8e8;
10
20
  }
11
21
 
12
- .seatable-op-menu .sdocfont {
22
+ .sdoc-seatable-hover-menu-container .hover-menu-container .active {
23
+ color: #212529;
24
+ text-decoration: none;
25
+ background: #f2f2f2;
26
+ }
27
+
28
+ .sdoc-seatable-hover-menu-container .hover-menu-container .op-item {
29
+ position: relative;
30
+ height: 100%;
31
+ width: 100%;
32
+ font-size: 12px;
33
+ color: #212529;
34
+ border-radius: 2px;
35
+ text-align: center;
36
+ line-height: 20px;
37
+ }
38
+
39
+ .sdoc-seatable-hover-menu-container .sdoc-seatable-hover-operation-item.sdoc-seatable-hover-operation-lang .op-item {
40
+ padding: 0 5px;
41
+ }
42
+
43
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-hover-operation-lang .icon-font {
44
+ display: inline-flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ margin-left: 8px;
48
+ }
49
+
50
+ .sdoc-seatable-hover-menu-container .sdoc-seatable-hover-operation-item {
51
+ height: 20px;
52
+ width: 20px;
53
+ text-align: center;
54
+ justify-content: center;
55
+ }
56
+
57
+ .sdoc-seatable-hover-menu-container .sdoc-seatable-hover-operation-item.sdoc-seatable-hover-operation-lang {
58
+ width: fit-content;
59
+ }
60
+
61
+ .sdoc-seatable-hover-menu-container .sdoc-seatable-hover-operation-lang .icon-font {
62
+ color: #999;
63
+ }
64
+
65
+ .sdoc-seatable-hover-menu-container .sdoc-seatable-hover-operation-divider {
66
+ height: 20px;
67
+ width: 1px;
68
+ background-color: #e5e5e5;
69
+ margin: 0 8px;
70
+ }
71
+
72
+ .sdoc-seatable-hover-menu-container .hover-menu-container .op-item:hover {
73
+ color: #212529;
74
+ text-decoration: none;
75
+ background: #f2f2f2;
76
+ }
77
+
78
+ .sdoc-seatable-hover-menu-container .icon-font {
13
79
  font-size: 12px;
14
80
  color: #444;
81
+ }
82
+
83
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver {
84
+ position: absolute;
85
+ top: 38px;
86
+ left: 0px;
87
+ width: 200px;
88
+ overflow-y: hidden;
89
+ background-color: #fff;
90
+ border-radius: 4px;
91
+ box-shadow: 0 0 5px #ccc;
92
+ border: 1px solid #dedede;
93
+ }
94
+
95
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-right-popver {
96
+ left: 200px;
97
+ width: 300px;
98
+ }
99
+
100
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .tables-list-empty {
101
+ padding: 10px;
102
+ width: 100%;
103
+ font-size: 13px;
104
+ text-align: center;
105
+ line-height: 30px;
106
+ vertical-align: middle;
107
+ }
108
+
109
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .seatable-setting-container {
110
+ list-style: none;
111
+ overflow-y: auto;
112
+ max-height: 280px;
113
+ min-height: 80px;
114
+ padding: 8px 0px;
115
+ }
116
+
117
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .seatable-setting-container .seatable-setting-item {
118
+ position: relative;
119
+ white-space: nowrap;
120
+ cursor: pointer;
121
+ line-height: 32px;
122
+ height: 32px;
123
+ font-size: 14px;
124
+ padding: 0px 16px;
125
+ display: flex;
126
+ justify-content: space-between;
127
+ }
128
+
129
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .seatable-setting-container .seatable-custom-switch-item .custom-switch-description {
130
+ margin-left: 0px;
131
+ }
132
+
133
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .seatable-setting-container .seatable-custom-switch-item .custom-switch {
134
+ padding-left: 0px;
135
+ }
136
+
137
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .seatable-setting-container .seatable-custom-switch-item .custom-switch-indicator {
138
+ position: absolute;
139
+ right: 0px;
15
140
  cursor: pointer;
16
141
  }
142
+
143
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .seatable-setting-container .seatable-setting-item:hover {
144
+ background-color: #f5f5f5;;
145
+ }
146
+
147
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .seatable-setting-container .seatable-setting-item .active {
148
+ background-color: #f5f5f5;;
149
+ }
150
+
151
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .seatable-setting-container .seatable-setting-item .check-mark {
152
+ opacity: 0;
153
+ padding: 0 10px;
154
+ }
155
+
156
+ .sdoc-seatable-hover-menu-container .hover-menu-container .sdoc-seatable-setting-popver .seatable-setting-container .seatable-setting-item .checked {
157
+ opacity: 1;
158
+ }
159
+
160
+ .sdoc-seatable-setting-filter-popver-wrapper {
161
+ top: 38px !important;
162
+ left: 83px !important;
163
+ transform: unset !important;
164
+ margin-top: 0px !important;
165
+ }
166
+
167
+ .sdoc-seatable-setting-sort-popver-wrapper {
168
+ top: 38px !important;
169
+ left: 122px !important;
170
+ transform: unset !important;
171
+ margin-top: 0px !important;
172
+ }
173
+
174
+ .sdoc-seatable-setting-hide-column-popver-wrapper {
175
+ top: 38px !important;
176
+ left: 158px !important;
177
+ transform: unset !important;
178
+ max-height: 350px;
179
+ overflow: auto;
180
+ margin-top: 0px !important;
181
+ }