@seafile/sdoc-editor 1.0.220 → 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.
Files changed (67) hide show
  1. package/dist/basic-sdk/assets/css/sdoc-editor-plugins.css +0 -23
  2. package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +12 -2
  3. package/dist/basic-sdk/extension/commons/search-list/index.css +28 -0
  4. package/dist/basic-sdk/extension/commons/search-list/index.js +150 -0
  5. package/dist/basic-sdk/extension/constants/element-type.js +2 -1
  6. package/dist/basic-sdk/extension/constants/index.js +8 -2
  7. package/dist/basic-sdk/extension/constants/menus-config.js +5 -0
  8. package/dist/basic-sdk/extension/plugins/font/helpers.js +7 -0
  9. package/dist/basic-sdk/extension/plugins/header/render-elem.js +2 -1
  10. package/dist/basic-sdk/extension/plugins/image/helpers.js +9 -21
  11. package/dist/basic-sdk/extension/plugins/image/image-loader/index.css +37 -0
  12. package/dist/basic-sdk/extension/plugins/image/image-loader/index.js +23 -0
  13. package/dist/basic-sdk/extension/plugins/image/render-elem.js +24 -76
  14. package/dist/basic-sdk/extension/plugins/image/use-upload-image.js +80 -0
  15. package/dist/basic-sdk/extension/plugins/index.js +7 -0
  16. package/dist/basic-sdk/extension/plugins/multi-column/plugin.js +1 -1
  17. package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-item.js +36 -0
  18. package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-menu.css +4 -2
  19. package/dist/basic-sdk/extension/plugins/seatable-column/menu/column-list-menu.js +8 -13
  20. package/dist/basic-sdk/extension/plugins/seatable-column/menu/index.js +5 -9
  21. package/dist/basic-sdk/extension/plugins/seatable-column/plugin.js +9 -1
  22. package/dist/basic-sdk/extension/plugins/seatable-column/render-elem.js +71 -7
  23. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/helpers.js +35 -0
  24. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +106 -0
  25. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +81 -0
  26. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +201 -0
  27. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-item.js +41 -0
  28. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +108 -0
  29. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +143 -0
  30. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +240 -0
  31. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +37 -0
  32. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table.js +134 -0
  33. package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +90 -0
  34. package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
  35. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +44 -0
  36. package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +61 -0
  37. package/dist/basic-sdk/extension/plugins/seatable-row/model.js +19 -0
  38. package/dist/basic-sdk/extension/plugins/seatable-row/plugin.js +60 -0
  39. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.css +123 -0
  40. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +161 -0
  41. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-header.js +78 -0
  42. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-item.js +41 -0
  43. package/dist/basic-sdk/extension/plugins/seatable-tables/menu/index.js +3 -6
  44. package/dist/basic-sdk/extension/plugins/text-style/helpers.js +1 -1
  45. package/dist/basic-sdk/extension/plugins/text-style/menu/index.js +10 -1
  46. package/dist/basic-sdk/extension/render/custom-element.js +5 -0
  47. package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +7 -2
  48. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +3 -1
  49. package/dist/pages/document-plugin-editor.js +3 -1
  50. package/package.json +1 -1
  51. package/public/locales/cs/sdoc-editor.json +7 -1
  52. package/public/locales/de/sdoc-editor.json +66 -60
  53. package/public/locales/en/sdoc-editor.json +8 -1
  54. package/public/locales/es/sdoc-editor.json +7 -1
  55. package/public/locales/es_AR/sdoc-editor.json +7 -1
  56. package/public/locales/es_MX/sdoc-editor.json +7 -1
  57. package/public/locales/fr/sdoc-editor.json +240 -234
  58. package/public/locales/it/sdoc-editor.json +7 -1
  59. package/public/locales/ru/sdoc-editor.json +8 -2
  60. package/public/locales/zh_CN/sdoc-editor.json +7 -1
  61. package/public/media/sdoc-editor-font/iconfont.css +15 -14
  62. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  63. package/public/media/sdoc-editor-font/iconfont.svg +3 -1
  64. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  65. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  66. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  67. 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 deleteBackward(unit);
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 onMousedown = (0, _react.useCallback)(option => {
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
- }, options.map(option => {
64
- return /*#__PURE__*/_react.default.createElement("div", {
65
- key: option.value,
66
- className: "column-list-menu-item-container",
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 = _interopRequireWildcard(require("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
- let displayValue = columnName ? `{${columnName}}` : '';
28
- if (editor.getColumnCellValue) {
29
- displayValue = editor.getColumnCellValue(columnKey) || 'null';
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
- }), displayValue, children);
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, {
@@ -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;
@@ -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;