@seafile/sdoc-editor 2.0.17 → 2.0.18-alph-0.0.2

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 (48) hide show
  1. package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +12 -2
  2. package/dist/basic-sdk/extension/constants/element-type.js +2 -1
  3. package/dist/basic-sdk/extension/constants/index.js +8 -2
  4. package/dist/basic-sdk/extension/constants/menus-config.js +5 -0
  5. package/dist/basic-sdk/extension/plugins/index.js +7 -0
  6. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/helpers.js +35 -0
  7. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +106 -0
  8. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +81 -0
  9. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +201 -0
  10. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-item.js +41 -0
  11. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +108 -0
  12. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +143 -0
  13. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +240 -0
  14. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +37 -0
  15. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table.js +134 -0
  16. package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +90 -0
  17. package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
  18. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +44 -0
  19. package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +61 -0
  20. package/dist/basic-sdk/extension/plugins/seatable-row/model.js +19 -0
  21. package/dist/basic-sdk/extension/plugins/seatable-row/plugin.js +60 -0
  22. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.css +123 -0
  23. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +161 -0
  24. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-header.js +78 -0
  25. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-item.js +41 -0
  26. package/dist/basic-sdk/extension/render/custom-element.js +5 -0
  27. package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +3 -2
  28. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +2 -1
  29. package/dist/basic-sdk/extension/toolbar/side-toolbar/insert-block-menu.js +4 -4
  30. package/dist/pages/document-plugin-editor.js +3 -1
  31. package/package.json +1 -1
  32. package/public/locales/cs/sdoc-editor.json +7 -1
  33. package/public/locales/de/sdoc-editor.json +66 -60
  34. package/public/locales/en/sdoc-editor.json +7 -1
  35. package/public/locales/es/sdoc-editor.json +7 -1
  36. package/public/locales/es_AR/sdoc-editor.json +7 -1
  37. package/public/locales/es_MX/sdoc-editor.json +7 -1
  38. package/public/locales/fr/sdoc-editor.json +240 -234
  39. package/public/locales/it/sdoc-editor.json +7 -1
  40. package/public/locales/ru/sdoc-editor.json +8 -2
  41. package/public/locales/zh_CN/sdoc-editor.json +6 -1
  42. package/public/media/sdoc-editor-font/iconfont.css +15 -14
  43. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  44. package/public/media/sdoc-editor-font/iconfont.svg +3 -1
  45. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  46. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  47. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  48. package/public/media/sdoc-editor-font.css +11 -7
@@ -0,0 +1,108 @@
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _reactDom = _interopRequireDefault(require("react-dom"));
11
+ var _classnames = _interopRequireDefault(require("classnames"));
12
+ // import { EventTypes } from '../../lib/constants';
13
+ // import ResizeHandle from '../../lib/third-support/resize-handle/ResizeHandle';
14
+
15
+ class RowCardHeaderCell extends _react.default.Component {
16
+ constructor(props) {
17
+ super(props);
18
+ (0, _defineProperty2.default)(this, "getHeaderCellWidth", () => {
19
+ const {
20
+ column,
21
+ rowCardType,
22
+ table
23
+ } = this.props;
24
+ const {
25
+ key,
26
+ width
27
+ } = column;
28
+ let headerCellWidth = width;
29
+ if (rowCardType === 'link') {
30
+ const tableId = table._id;
31
+ const draggedCellId = `${tableId}-${key}`;
32
+ const existedWidth = JSON.parse(localStorage.getItem(draggedCellId));
33
+ if (existedWidth) {
34
+ headerCellWidth = existedWidth;
35
+ }
36
+ }
37
+ return headerCellWidth;
38
+ });
39
+ (0, _defineProperty2.default)(this, "onDrag", e => {
40
+ const headerCellWidth = this.getWidthFromMouseEvent(e);
41
+ this.setState({
42
+ headerCellWidth
43
+ });
44
+ });
45
+ (0, _defineProperty2.default)(this, "onDragStart", e => {
46
+ this.setState({
47
+ resizing: true
48
+ });
49
+ });
50
+ // onDragEnd = (e) => {
51
+ // const { column, table } = this.props;
52
+ // const columnKey = column.key;
53
+ // const { _id: tableId } = table;
54
+ // const draggedCellId = `${tableId}-${columnKey}`;
55
+ // let width = this.getWidthFromMouseEvent(e);
56
+ // this.setState({ resizing: false });
57
+ // const { eventBus } = window.app;
58
+ // eventBus.dispatch(EventTypes.CHANGE_HEADER_WIDTH, { id: draggedCellId, width });
59
+ // localStorage.setItem(draggedCellId, width);
60
+ // };
61
+ (0, _defineProperty2.default)(this, "getWidthFromMouseEvent", e => {
62
+ let right = e.pageX || e.touches && e.touches[0] && e.touches[0].pageX || e.changedTouches && e.changedTouches[e.changedTouches.length - 1].pageX;
63
+ if (e.pageX === 0) {
64
+ right = 0;
65
+ }
66
+ const left = _reactDom.default.findDOMNode(this.headerCell).getBoundingClientRect().left;
67
+ // add 5px is ResizeHandle component DOM width, and the draggable column minimum width is 50px
68
+ return Math.max(right - left + 5, 50);
69
+ });
70
+ this.state = {
71
+ resizing: false,
72
+ headerCellWidth: this.getHeaderCellWidth(),
73
+ isDraggable: props.rowCardType === 'link'
74
+ };
75
+ }
76
+ render() {
77
+ const {
78
+ column
79
+ } = this.props;
80
+ const {
81
+ headerCellWidth,
82
+ resizing,
83
+ isDraggable
84
+ } = this.state;
85
+ const {
86
+ name,
87
+ key
88
+ } = column;
89
+ return /*#__PURE__*/_react.default.createElement("div", {
90
+ className: (0, _classnames.default)('row-card-column-name text-truncate position-relative', {
91
+ 'row-card-column--resizing': resizing
92
+ }, {
93
+ 'row-card-draggable': isDraggable
94
+ })
95
+ }, /*#__PURE__*/_react.default.createElement("div", {
96
+ ref: ref => this.headerCell = ref,
97
+ className: "row-card-column-name-item position-relative",
98
+ style: {
99
+ width: headerCellWidth
100
+ },
101
+ key: key,
102
+ title: name
103
+ }, /*#__PURE__*/_react.default.createElement("span", {
104
+ title: name
105
+ }, name)));
106
+ }
107
+ }
108
+ var _default = exports.default = RowCardHeaderCell;
@@ -0,0 +1,143 @@
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _rowCardHeaderCell = _interopRequireDefault(require("./row-card-header-cell"));
12
+ class RowCardHeader extends _react.default.Component {
13
+ constructor(props) {
14
+ super(props);
15
+ (0, _defineProperty2.default)(this, "onScrollControlClick", type => {
16
+ const tablesNav = this.linkRecordsHeader;
17
+ const {
18
+ offsetWidth,
19
+ scrollWidth,
20
+ scrollLeft
21
+ } = tablesNav;
22
+ let targetScrollLeft;
23
+ if (type === 'prev') {
24
+ if (scrollLeft === 0) {
25
+ return;
26
+ }
27
+ targetScrollLeft = scrollLeft - offsetWidth;
28
+ targetScrollLeft = targetScrollLeft > 0 ? targetScrollLeft : 0;
29
+ }
30
+ if (type === 'next') {
31
+ if (scrollLeft + offsetWidth === scrollWidth) {
32
+ return;
33
+ }
34
+ targetScrollLeft = scrollLeft + offsetWidth;
35
+ targetScrollLeft = targetScrollLeft > scrollWidth - offsetWidth ? scrollWidth - offsetWidth : targetScrollLeft;
36
+ }
37
+ if (this.state.canCardHeaderScroll) {
38
+ this.setState({
39
+ canCardHeaderScroll: false
40
+ });
41
+ let timer = null;
42
+ let step = (targetScrollLeft - scrollLeft) / 10;
43
+ step = step > 0 ? Math.ceil(step) : Math.floor(step);
44
+ timer = setInterval(() => {
45
+ tablesNav.scrollLeft = tablesNav.scrollLeft + step;
46
+ if (Math.abs(targetScrollLeft - tablesNav.scrollLeft) <= Math.abs(step)) {
47
+ tablesNav.scrollLeft = targetScrollLeft;
48
+ clearInterval(timer);
49
+ this.setState({
50
+ canCardHeaderScroll: true
51
+ });
52
+ }
53
+ }, 30);
54
+ }
55
+ });
56
+ (0, _defineProperty2.default)(this, "onScrollHeader", () => {
57
+ let {
58
+ scrollLeft
59
+ } = this.linkRecordsHeader;
60
+ this.props.setItemScrollLeft(scrollLeft, -1);
61
+ if (this.timer) {
62
+ clearTimeout(this.timer);
63
+ }
64
+ this.timer = setTimeout(() => {
65
+ this.props.setScrollLeft(scrollLeft);
66
+ }, 60);
67
+ });
68
+ (0, _defineProperty2.default)(this, "setHeaderScrollLeft", scrollLeft => {
69
+ this.linkRecordsHeader.scrollLeft = scrollLeft;
70
+ });
71
+ (0, _defineProperty2.default)(this, "getCardHeaderCells", () => {
72
+ const cardHeaderCells = [];
73
+ const {
74
+ renderedColumns,
75
+ rowCardType,
76
+ table
77
+ } = this.props;
78
+ for (let i = 0; i < renderedColumns.length; i++) {
79
+ const renderedColumn = renderedColumns[i];
80
+ cardHeaderCells.push( /*#__PURE__*/_react.default.createElement(_rowCardHeaderCell.default, {
81
+ key: renderedColumn.key,
82
+ column: renderedColumn,
83
+ rowCardType: rowCardType,
84
+ table: table
85
+ }));
86
+ }
87
+ return cardHeaderCells;
88
+ });
89
+ this.state = {
90
+ canCardHeaderScroll: true,
91
+ linkRecordsNavScrollWidth: 0,
92
+ linkRecordsNavWidth: 0
93
+ };
94
+ }
95
+ componentDidUpdate(prevProps, prevState) {
96
+ const {
97
+ offsetWidth,
98
+ scrollWidth
99
+ } = this.linkRecordsHeader;
100
+ if (prevState.linkRecordsNavScrollWidth !== scrollWidth || prevState.linkRecordsNavWidth !== offsetWidth) {
101
+ this.props.getCurrentDisplayRowMaxIndex();
102
+ this.setState({
103
+ linkRecordsNavScrollWidth: scrollWidth,
104
+ linkRecordsNavWidth: offsetWidth
105
+ });
106
+ }
107
+ }
108
+ render() {
109
+ const {
110
+ showScrollBtn,
111
+ scrollLeft,
112
+ cardHeaderClassName
113
+ } = this.props;
114
+ const {
115
+ linkRecordsNavWidth,
116
+ linkRecordsNavScrollWidth
117
+ } = this.state;
118
+ const cardHeaderCells = this.getCardHeaderCells();
119
+ return /*#__PURE__*/_react.default.createElement("div", {
120
+ className: `row-card-header ${cardHeaderClassName ? cardHeaderClassName : ''}`
121
+ }, /*#__PURE__*/_react.default.createElement("div", {
122
+ className: "row-card-column-names records-column-names",
123
+ ref: ref => this.recordItemRef = ref
124
+ }, showScrollBtn && /*#__PURE__*/_react.default.createElement("span", {
125
+ className: (0, _classnames.default)('dtable-font', 'dtable-icon-left', 'row-card-scroll', 'link-scroll-prev', {
126
+ 'scroll-active': scrollLeft > 0
127
+ }),
128
+ onClick: this.onScrollControlClick.bind(this, 'prev')
129
+ }), /*#__PURE__*/_react.default.createElement("div", {
130
+ className: "row-card-columns-container",
131
+ onScroll: this.onScrollHeader,
132
+ ref: ref => this.linkRecordsHeader = ref
133
+ }, /*#__PURE__*/_react.default.createElement("div", {
134
+ className: "d-inline-flex"
135
+ }, cardHeaderCells)), showScrollBtn && /*#__PURE__*/_react.default.createElement("span", {
136
+ className: (0, _classnames.default)('dtable-font', 'dtable-icon-right', 'row-card-scroll', 'link-scroll-next', {
137
+ 'scroll-active': scrollLeft + linkRecordsNavWidth < linkRecordsNavScrollWidth
138
+ }),
139
+ onClick: this.onScrollControlClick.bind(this, 'next')
140
+ })));
141
+ }
142
+ }
143
+ var _default = exports.default = RowCardHeader;
@@ -0,0 +1,240 @@
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 = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _dtableStore = require("dtable-store");
12
+ var _reactI18next = require("react-i18next");
13
+ var _classnames = _interopRequireDefault(require("classnames"));
14
+ // import { getFormattedCell, getRowRecord } from '../../utils/row-record-utils';
15
+ // import Highlighter from '../highlighter';
16
+ // import LinkContent from '../../lib/formatters/widgets/link-content';
17
+ // import { EventTypes } from '../../lib/constants';
18
+
19
+ const EMPTY_LINK = /*#__PURE__*/_react.default.createElement("span", {
20
+ className: "row-cell-value-empty"
21
+ });
22
+ class RowCardItem extends _react.PureComponent {
23
+ constructor(props) {
24
+ super(props);
25
+ (0, _defineProperty2.default)(this, "setDraggedCell", draggedCell => {
26
+ this.setState({
27
+ draggedCell
28
+ });
29
+ });
30
+ (0, _defineProperty2.default)(this, "onSelectRow", e => {
31
+ const {
32
+ rowCardType,
33
+ isAdditionEditorView,
34
+ row,
35
+ table,
36
+ closeSelect,
37
+ onSelectRow,
38
+ onExpandRow
39
+ } = this.props;
40
+
41
+ // 1. row card opened by other module(statistic, search)
42
+ if (rowCardType !== 'link') {
43
+ window.app.expandRow(row, table);
44
+ return;
45
+ }
46
+
47
+ // 2. row card opened by link module
48
+ // 2.1 mobile
49
+ if (window.isMobile) {
50
+ // add link
51
+ if (isAdditionEditorView) {
52
+ onSelectRow && onSelectRow(row);
53
+ } else {
54
+ // preview link
55
+ if (!row._deleted && onExpandRow) {
56
+ onExpandRow(row, table);
57
+ }
58
+ }
59
+ return;
60
+ }
61
+
62
+ // 2.2 pc: add link | preview link
63
+ const expandedRowPosition = e.target.getBoundingClientRect();
64
+ window.app.setExpandRowPosition(expandedRowPosition);
65
+ closeSelect && closeSelect();
66
+ // add link
67
+ if (isAdditionEditorView) {
68
+ e.nativeEvent.stopImmediatePropagation();
69
+ e.stopPropagation();
70
+ onSelectRow && onSelectRow(row, e);
71
+ return;
72
+ }
73
+ // preview link
74
+ if (row._deleted) return; // the linked row has been deleted, can not be expand row's detail
75
+ onExpandRow && onExpandRow(row, table);
76
+ });
77
+ (0, _defineProperty2.default)(this, "getRowRecord", () => {
78
+ // let { row, table, columns, rowCardType, unShowColumnKeyList, matchResult } = this.props;
79
+ // let { _id: tableId } = table;
80
+ // if (rowCardType === 'search') {
81
+ // return getRowRecord(tableId, row, columns, unShowColumnKeyList, matchResult);
82
+ // }
83
+ return this.linkRowRecord();
84
+ });
85
+ (0, _defineProperty2.default)(this, "linkRowRecord", () => {
86
+ let {
87
+ row,
88
+ formulaRow,
89
+ columns,
90
+ table,
91
+ rowCardType,
92
+ isShowColumnName
93
+ } = this.props;
94
+ const {
95
+ draggedCell
96
+ } = this.state;
97
+ const {
98
+ _id: tableId
99
+ } = table;
100
+ return columns.map(column => {
101
+ const {
102
+ key,
103
+ type,
104
+ data,
105
+ width,
106
+ name
107
+ } = column;
108
+ const draggedCellId = `${tableId}-${key}`;
109
+ const existedWidth = JSON.parse(localStorage.getItem(draggedCellId));
110
+ let columnWidth = existedWidth && rowCardType === 'link' ? existedWidth : width;
111
+ if (draggedCell.id === draggedCellId) {
112
+ columnWidth = draggedCell.width;
113
+ }
114
+ if (type === _dtableStore.CellType.LINK) {
115
+ const {
116
+ display_column_key,
117
+ array_type,
118
+ array_data
119
+ } = data;
120
+ // linked table's linked column
121
+ const linkedColumn = {
122
+ key: display_column_key,
123
+ type: array_type,
124
+ data: array_data
125
+ };
126
+ return /*#__PURE__*/_react.default.createElement("div", {
127
+ className: `row-cell-value text-truncate ${isShowColumnName && 'show-name'}`,
128
+ key: row._id + '_' + key,
129
+ style: {
130
+ width: columnWidth
131
+ }
132
+ }, isShowColumnName && /*#__PURE__*/_react.default.createElement("span", {
133
+ className: "column-name text-truncate"
134
+ }, name), /*#__PURE__*/_react.default.createElement("div", {
135
+ className: "links-formatter"
136
+ }, /*#__PURE__*/_react.default.createElement("div", {
137
+ className: "formatter-show"
138
+ })));
139
+ }
140
+ return null;
141
+ // return getFormattedCell(column, row, { formulaRow, tableId }, columnWidth, isShowColumnName);
142
+ });
143
+ });
144
+ (0, _defineProperty2.default)(this, "removeCardItem", e => {
145
+ e.stopPropagation();
146
+ let {
147
+ row,
148
+ removeCardItem,
149
+ closeSelect
150
+ } = this.props;
151
+ closeSelect && closeSelect();
152
+ removeCardItem && removeCardItem(row._id);
153
+ });
154
+ (0, _defineProperty2.default)(this, "changeScroll", event => {
155
+ event.stopPropagation();
156
+ const {
157
+ setItemScrollLeft,
158
+ rowIdx
159
+ } = this.props;
160
+ if (this.scrollActive) {
161
+ this.scrollActive = false;
162
+ return;
163
+ }
164
+ if (setItemScrollLeft) setItemScrollLeft(this.cardRecordsItemRef.scrollLeft, rowIdx);
165
+ });
166
+ (0, _defineProperty2.default)(this, "setScrollLeft", scrollLeft => {
167
+ this.scrollActive = true;
168
+ this.cardRecordsItemRef.scrollLeft = scrollLeft;
169
+ });
170
+ (0, _defineProperty2.default)(this, "getScrollLeft", () => {
171
+ return this.cardRecordsItemRef.scrollLeft;
172
+ });
173
+ (0, _defineProperty2.default)(this, "setCardRecordsItemRef", ref => {
174
+ this.cardRecordsItemRef = ref;
175
+ });
176
+ this.state = {
177
+ draggedCell: {}
178
+ };
179
+ }
180
+ componentDidMount() {
181
+ const {
182
+ rowIdx,
183
+ onRef
184
+ } = this.props;
185
+ onRef && onRef(this, rowIdx);
186
+ // const { eventBus } = window.app;
187
+ // this.unsubscribeChangeHeaderWidth = eventBus.subscribe(EventTypes.CHANGE_HEADER_WIDTH, this.setDraggedCell);
188
+ }
189
+ componentWillUnmount() {
190
+ this.unsubscribeChangeHeaderWidth();
191
+ }
192
+ UNSAFE_componentWillUpdate(nextProps) {
193
+ const {
194
+ onRef
195
+ } = this.props;
196
+ onRef && onRef(this, nextProps.rowIdx);
197
+ }
198
+ render() {
199
+ const {
200
+ row,
201
+ t,
202
+ matchResult,
203
+ isShowRemoveCardItemBtn,
204
+ displayRowName
205
+ } = this.props;
206
+ const cardItemClass = (0, _classnames.default)('row-card-item', {
207
+ 'row-card-item-highlight': this.props.isHighlightRow
208
+ });
209
+ return /*#__PURE__*/_react.default.createElement("div", {
210
+ tabIndex: 0,
211
+ "aria-label": displayRowName,
212
+ className: cardItemClass,
213
+ onClick: this.onSelectRow
214
+ }, /*#__PURE__*/_react.default.createElement("div", {
215
+ className: "row-card-item-container"
216
+ }, /*#__PURE__*/_react.default.createElement("div", {
217
+ className: "row-card-item-header"
218
+ }, row.isShowTick && /*#__PURE__*/_react.default.createElement("span", {
219
+ className: "row-card-item-check dtable-font dtable-icon-check-circle"
220
+ }), isShowRemoveCardItemBtn && /*#__PURE__*/_react.default.createElement("span", {
221
+ className: "row-card-item-remove d-print-none",
222
+ onClick: this.removeCardItem
223
+ }, /*#__PURE__*/_react.default.createElement("i", {
224
+ className: "row-card-remove-icon dtable-font dtable-icon-x-"
225
+ }))), /*#__PURE__*/_react.default.createElement("div", {
226
+ className: "row-card-item-content",
227
+ onScroll: this.changeScroll,
228
+ ref: this.setCardRecordsItemRef
229
+ }, row._deleted ? /*#__PURE__*/_react.default.createElement("div", {
230
+ className: "d-flex flex-fill justify-content-center error"
231
+ }, t('The_linked_row_has_been_deleted')) : /*#__PURE__*/_react.default.createElement("div", {
232
+ className: "d-inline-flex"
233
+ }, this.getRowRecord()))));
234
+ }
235
+ }
236
+ RowCardItem.defaultProps = {
237
+ isShowColumnName: false,
238
+ unShowColumnKeyList: ['0000']
239
+ };
240
+ var _default = exports.default = (0, _reactI18next.withTranslation)('dtable')(RowCardItem);
@@ -0,0 +1,37 @@
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 = _interopRequireDefault(require("react"));
9
+ var _dtableUtils = require("dtable-utils");
10
+ var _recordContent = _interopRequireDefault(require("./record-content"));
11
+ const SeatableTableRecord = _ref => {
12
+ let {
13
+ table
14
+ } = _ref;
15
+ console.log(1, table);
16
+ const renderedColumns = () => {
17
+ var _table$columns;
18
+ return table === null || table === void 0 ? void 0 : (_table$columns = table.columns) === null || _table$columns === void 0 ? void 0 : _table$columns.filter(column => {
19
+ if (column.type === _dtableUtils.CellType.LONG_TEXT) {
20
+ return false;
21
+ }
22
+ // if (['0000', ...hiddenColumns].includes(column.key)) {
23
+ // return false;
24
+ // }
25
+ return true;
26
+ }).map(column => Object.assign({}, column, {
27
+ width: 100
28
+ }));
29
+ };
30
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_recordContent.default, {
31
+ table: table,
32
+ renderedColumns: renderedColumns(),
33
+ columns: renderedColumns(),
34
+ rows: table.rows
35
+ }));
36
+ };
37
+ var _default = exports.default = SeatableTableRecord;
@@ -0,0 +1,134 @@
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 _dtableUtils = require("dtable-utils");
11
+ var _recordItem = _interopRequireDefault(require("./record-item"));
12
+ const SeatableTable = _ref => {
13
+ var _tableInfoRef$current, _tableInfoRef$current2;
14
+ let {
15
+ tableID,
16
+ setSelectedRowsID,
17
+ editor
18
+ } = _ref;
19
+ const tableInfoRef = (0, _react.useRef)(null);
20
+ const [shownRecords, setShownRecords] = (0, _react.useState)([]);
21
+ const [columns, setColumns] = (0, _react.useState)([]);
22
+ const headerCellRef = (0, _react.useRef)({});
23
+ (0, _react.useEffect)(() => {
24
+ async function initTableData() {
25
+ const table = await editor.getTableById(tableID);
26
+ if (!tableInfoRef.current) {
27
+ tableInfoRef.current = {};
28
+ }
29
+ if (!tableInfoRef.current[tableID]) {
30
+ tableInfoRef.current[tableID] = {
31
+ formulaRows: editor.getTableFormulaResults(table, table.rows),
32
+ idRowMap: table.rows.reduce((result, item) => {
33
+ result[item._id] = item;
34
+ return result;
35
+ }, {})
36
+ };
37
+ }
38
+ const validRecords = table.rows;
39
+ setShownRecords(validRecords);
40
+ let validColumns = table.columns;
41
+
42
+ // formatted columns
43
+ validColumns = validColumns.map(column => {
44
+ const {
45
+ type
46
+ } = column;
47
+ if (type === _dtableUtils.CellType.LINK) {
48
+ const {
49
+ data
50
+ } = column;
51
+ const {
52
+ display_column_key,
53
+ array_type,
54
+ array_data
55
+ } = data;
56
+ const display_column = {
57
+ key: display_column_key || '0000',
58
+ type: array_type || _dtableUtils.CellType.TEXT,
59
+ data: array_data || null
60
+ };
61
+ return {
62
+ ...column,
63
+ data: {
64
+ ...data,
65
+ display_column
66
+ }
67
+ };
68
+ }
69
+ return column;
70
+ });
71
+ setColumns(validColumns);
72
+ }
73
+ initTableData();
74
+
75
+ // eslint-disable-next-line react-hooks/exhaustive-deps
76
+ }, [tableID]);
77
+ const onClick = (0, _react.useCallback)(e => {
78
+ const domCell = e.target;
79
+ const recordId = domCell.getAttribute('data-record-id') ? domCell.getAttribute('data-record-id') : domCell.parentNode.getAttribute('data-record-id');
80
+ setSelectedRowsID(prevSelectedRowsID => {
81
+ if (!prevSelectedRowsID.includes(recordId)) {
82
+ var _domCell$closest;
83
+ (_domCell$closest = domCell.closest('tr')) === null || _domCell$closest === void 0 ? void 0 : _domCell$closest.classList.add('isSelected');
84
+ return [...prevSelectedRowsID, recordId];
85
+ } else {
86
+ var _domCell$closest2;
87
+ (_domCell$closest2 = domCell.closest('tr')) === null || _domCell$closest2 === void 0 ? void 0 : _domCell$closest2.classList.remove('isSelected');
88
+ return prevSelectedRowsID.filter(id => id !== recordId);
89
+ }
90
+ });
91
+ }, [setSelectedRowsID]);
92
+ const formulaRows = (tableInfoRef === null || tableInfoRef === void 0 ? void 0 : (_tableInfoRef$current = tableInfoRef.current) === null || _tableInfoRef$current === void 0 ? void 0 : (_tableInfoRef$current2 = _tableInfoRef$current[tableID]) === null || _tableInfoRef$current2 === void 0 ? void 0 : _tableInfoRef$current2.formulaRows) || {};
93
+ (0, _react.useEffect)(() => {
94
+ const seatableRowsContaniner = document.getElementById('seatable-table-rows-view');
95
+ seatableRowsContaniner.addEventListener('click', onClick);
96
+ return () => {
97
+ seatableRowsContaniner.removeEventListener('click', onClick);
98
+ };
99
+ }, [onClick]);
100
+ return /*#__PURE__*/_react.default.createElement("div", {
101
+ className: "seatable-table-wrapper"
102
+ }, /*#__PURE__*/_react.default.createElement("table", {
103
+ className: "seatable-view-records"
104
+ }, /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", {
105
+ className: "seatable-view-column-header-row"
106
+ }, columns.map(column => {
107
+ const width = 100;
108
+ return /*#__PURE__*/_react.default.createElement("th", {
109
+ ref: ref => {
110
+ headerCellRef.current[column.key] = ref;
111
+ },
112
+ className: "seatable-view-column-header-cell",
113
+ key: column.key,
114
+ style: {
115
+ width,
116
+ minWidth: width
117
+ }
118
+ }, /*#__PURE__*/_react.default.createElement("span", null, column.name));
119
+ }))), /*#__PURE__*/_react.default.createElement("tbody", {
120
+ className: "seatable-view-body-row",
121
+ id: "seatable-table-rows-view"
122
+ }, shownRecords.map((record, index) => {
123
+ const formulaRow = formulaRows[record._id] || {};
124
+ return /*#__PURE__*/_react.default.createElement(_recordItem.default, {
125
+ key: record._id,
126
+ index: index,
127
+ editor: editor,
128
+ record: record,
129
+ formulaRow: formulaRow,
130
+ columns: columns
131
+ });
132
+ }))));
133
+ };
134
+ var _default = exports.default = SeatableTable;