@seafile/sdoc-editor 2.0.23 → 2.0.25

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 (53) hide show
  1. package/dist/api/seafile-api.js +4 -1
  2. package/dist/basic-sdk/extension/commons/insert-element-dialog/index.js +12 -2
  3. package/dist/basic-sdk/extension/constants/element-type.js +2 -1
  4. package/dist/basic-sdk/extension/constants/index.js +8 -2
  5. package/dist/basic-sdk/extension/constants/menus-config.js +5 -0
  6. package/dist/basic-sdk/extension/plugins/ai/ai-module/index.js +44 -24
  7. package/dist/basic-sdk/extension/plugins/ai/ai-module/style.css +6 -0
  8. package/dist/basic-sdk/extension/plugins/index.js +7 -0
  9. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.css +414 -0
  10. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/index.js +76 -0
  11. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/record-content.js +209 -0
  12. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/ResizeHandle.js +38 -0
  13. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/resize-handle/index.css +384 -0
  14. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header-cell.js +125 -0
  15. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-header.js +144 -0
  16. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/row-card-item.js +161 -0
  17. package/dist/basic-sdk/extension/plugins/seatable-row/dialog/add-seatable-row-dialog/seatable-table-record.js +47 -0
  18. package/dist/basic-sdk/extension/plugins/seatable-row/helpers.js +98 -0
  19. package/dist/basic-sdk/extension/plugins/seatable-row/index.js +17 -0
  20. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.css +3 -0
  21. package/dist/basic-sdk/extension/plugins/seatable-row/menu/index.js +46 -0
  22. package/dist/basic-sdk/extension/plugins/seatable-row/menu/seatable-list.js +62 -0
  23. package/dist/basic-sdk/extension/plugins/seatable-row/model.js +19 -0
  24. package/dist/basic-sdk/extension/plugins/seatable-row/plugin.js +60 -0
  25. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.css +124 -0
  26. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/index.js +160 -0
  27. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-header.js +78 -0
  28. package/dist/basic-sdk/extension/plugins/seatable-row/render-elem/record-item.js +41 -0
  29. package/dist/basic-sdk/extension/plugins/seatable-tables/formatter/index.js +7 -2
  30. package/dist/basic-sdk/extension/render/custom-element.js +5 -0
  31. package/dist/basic-sdk/extension/toolbar/header-toolbar/insert-toolbar/index.js +3 -2
  32. package/dist/basic-sdk/extension/toolbar/side-toolbar/helpers.js +2 -1
  33. package/dist/constants/index.js +1 -0
  34. package/dist/context.js +2 -2
  35. package/dist/pages/document-plugin-editor.js +2 -1
  36. package/package.json +1 -1
  37. package/public/locales/cs/sdoc-editor.json +7 -1
  38. package/public/locales/de/sdoc-editor.json +66 -60
  39. package/public/locales/en/sdoc-editor.json +10 -2
  40. package/public/locales/es/sdoc-editor.json +7 -1
  41. package/public/locales/es_AR/sdoc-editor.json +7 -1
  42. package/public/locales/es_MX/sdoc-editor.json +7 -1
  43. package/public/locales/fr/sdoc-editor.json +240 -234
  44. package/public/locales/it/sdoc-editor.json +7 -1
  45. package/public/locales/ru/sdoc-editor.json +8 -2
  46. package/public/locales/zh_CN/sdoc-editor.json +7 -2
  47. package/public/media/sdoc-editor-font/iconfont.css +15 -14
  48. package/public/media/sdoc-editor-font/iconfont.eot +0 -0
  49. package/public/media/sdoc-editor-font/iconfont.svg +3 -1
  50. package/public/media/sdoc-editor-font/iconfont.ttf +0 -0
  51. package/public/media/sdoc-editor-font/iconfont.woff +0 -0
  52. package/public/media/sdoc-editor-font/iconfont.woff2 +0 -0
  53. package/public/media/sdoc-editor-font.css +11 -7
@@ -0,0 +1,414 @@
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-select-dialog .modal-body {
35
+ padding: 0 !important;
36
+ }
37
+
38
+ .seatable-rows-select-dialog .modal-body .form-label {
39
+ margin: 1rem 1rem 0;
40
+ padding-bottom: 1rem;
41
+ border-bottom: 1px solid #e2e2e2;
42
+ }
43
+
44
+ .seatable-rows-close-dialog {
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ width: 28px;
49
+ }
50
+
51
+ .modal-header-container .sdoc-close1 {
52
+ font-size: 16px;
53
+ color: #666666;
54
+ }
55
+
56
+ .modal-header-container .sdoc-close1:hover {
57
+ background-color: #EFEFEF;
58
+ border-radius: 3px;
59
+ height: 28px;
60
+ width: 28px;
61
+ }
62
+
63
+ .seatable-rows-select-dialog .seatable-table-wrapper {
64
+ height: 280px;
65
+ overflow-x: auto;
66
+ overflow-y: hidden;
67
+ border: 2px solid transparent;
68
+ }
69
+
70
+ .seatable-rows-select-dialog .row-card-container {
71
+ height: 100%;
72
+ width: 100%;
73
+ }
74
+
75
+ .row-card-container::-webkit-scrollbar {
76
+ display: none;
77
+ }
78
+
79
+ .records-column-names {
80
+ padding: 12px 32px;
81
+ min-width: 100%;
82
+ background-color: #fff;
83
+ box-shadow: -1px 0 2px 0 #ccc;
84
+ display: flex;
85
+ align-items: center;
86
+ }
87
+
88
+ .row-card-header .row-card-column-names {
89
+ padding: 8px 32px;
90
+ width: 100%;
91
+ position: relative;
92
+ min-width: 100%;
93
+ background-color: #fff;
94
+ box-shadow: -1px 0 2px 0 #ccc;
95
+ display: flex;
96
+ align-items: center;
97
+ }
98
+
99
+ .row-card-header .row-card-column-names .link-scroll-prev {
100
+ left: 4px;
101
+ }
102
+
103
+ .row-card-header .row-card-column-names .row-card-scroll {
104
+ color: #999;
105
+ font-size: 14px;
106
+ width: 24px;
107
+ height: 24px;
108
+ text-align: center;
109
+ line-height: 24px;
110
+ position: absolute;
111
+ top: 10px;
112
+ background-color: #fff;
113
+ }
114
+
115
+ .row-card-header .row-card-column-names .scroll-active {
116
+ color: #000;
117
+ cursor: pointer;
118
+ }
119
+
120
+ .row-card-header .row-card-column-names .link-scroll-next {
121
+ right: 4px;
122
+ }
123
+
124
+ .row-card-header .row-card-column-names .scroll-active:hover {
125
+ background: #efefef;
126
+ border-radius: 4px;
127
+ }
128
+
129
+ .row-card-header .row-card-columns-container {
130
+ width: 100%;
131
+ overflow: hidden;
132
+ overflow-x: scroll;
133
+ scrollbar-width: none;
134
+ }
135
+
136
+ .row-card-header .row-card-columns-container .row-card-column-name:first-child,
137
+ .mobile-link-records-container .link-records-column-name:first-child {
138
+ margin: 0 8px 0 0;
139
+ }
140
+
141
+ .row-card-header .row-card-columns-container .row-card-column-name {
142
+ flex-shrink: 0;
143
+ margin: 0 8px;
144
+ font-size: 14px;
145
+ color: #666666;
146
+ height: 30px;
147
+ line-height: 30px;
148
+ cursor: default;
149
+ }
150
+
151
+ .row-card-header .row-card-columns-container::-webkit-scrollbar {
152
+ display: none;
153
+ }
154
+
155
+ .seatable-rows-select-dialog .row-card-container .row-card-list {
156
+ height: calc(100% - 40px);
157
+ width: 100%;
158
+ min-width: 100%;
159
+ padding: 10px 20px;
160
+ overflow-y: auto;
161
+ margin-top: 3px;
162
+ }
163
+
164
+ .row-card-list .no-records-tips {
165
+ color: #666666;
166
+ text-align: center;
167
+ }
168
+
169
+ .row-card-list .no-views-tips {
170
+ color: #666666;
171
+ text-align: center;
172
+ }
173
+
174
+ .row-card-list .row-card-content {
175
+ padding: 0;
176
+ height: auto;
177
+ overflow-y: unset;
178
+ }
179
+
180
+ .row-card-list .row-card-content::-webkit-scrollbar {
181
+ width: 0;
182
+ }
183
+
184
+ .row-card-item {
185
+ height: 88px;
186
+ margin-top: 10px;
187
+ background-color: #fff;
188
+ border-radius: 4px;
189
+ border: 1px solid rgba(0, 0, 0, 0.1);
190
+ font-size: 14px;
191
+ display: flex;
192
+ flex-direction: column;
193
+ justify-content: space-between;
194
+ align-items: flex-start;
195
+ position: relative;
196
+ }
197
+
198
+ .row-card-item:first-child {
199
+ margin-top: 0;
200
+ }
201
+
202
+ .row-card-item:last-child {
203
+ margin-bottom: 10px;
204
+ }
205
+
206
+ .row-card-item:hover {
207
+ cursor: pointer;
208
+ border-color: rgba(0, 0, 0, 0.3);
209
+ }
210
+
211
+ .row-card-item.row-card-item-highlight {
212
+ border-color: rgba(0, 0, 0, 0.3);
213
+ }
214
+
215
+ .row-card-item .row-card-item-container {
216
+ width: 100%;
217
+ overflow: hidden;
218
+ padding: 12px;
219
+ }
220
+
221
+ .row-card-item-container .row-cell-empty {
222
+ display: inline-block;
223
+ height: 8px;
224
+ width: 20px;
225
+ background-color: #f1f1f1;
226
+ border-radius: 4px;
227
+ }
228
+
229
+ .row-card-item-header {
230
+ z-index: 1;
231
+ }
232
+
233
+ .row-card-item .row-card-item-header {
234
+ width: 100%;
235
+ height: 24px;
236
+ display: inline-flex;
237
+ justify-content: space-between;
238
+ align-items: center;
239
+ }
240
+
241
+ .row-card-item .row-card-item-name {
242
+ height: 100%;
243
+ flex: 1 1;
244
+ font-weight: 400;
245
+ }
246
+
247
+ .row-card-item .row-card-item-check {
248
+ color: #59cb74;
249
+ }
250
+
251
+ .row-card-item .row-card-item-content {
252
+ display: flex;
253
+ width: 100%;
254
+ overflow-x: scroll;
255
+ height: 40px;
256
+ }
257
+
258
+ .row-card-item .row-card-item-content::-webkit-scrollbar {
259
+ display: none;
260
+ }
261
+
262
+ .row-card-item .row-cell-value {
263
+ display: flex;
264
+ justify-content: flex-start;
265
+ align-items: center;
266
+ flex-shrink: 0;
267
+ text-align: left;
268
+ margin: 0 8px;
269
+ }
270
+
271
+ .row-card-item .row-cell-value.show-name {
272
+ flex-direction: column;
273
+ align-items: flex-start;
274
+ justify-content: center !important;
275
+ }
276
+
277
+ .row-card-item .row-cell-value.show-name .row-cell-value-content {
278
+ max-height: 20px;
279
+ }
280
+
281
+ .row-card-item .row-cell-value.show-name .column-name {
282
+ margin: 0.25rem 0;
283
+ font-size: 12px;
284
+ color: #666;
285
+ max-width: 100px;
286
+ }
287
+
288
+ .row-card-item .row-cell-value.show-name .links-formatter .formatter-show {
289
+ display: inline-block;
290
+ }
291
+
292
+ .row-card-item .row-cell-value.show-name .image-cell-value {
293
+ height: inherit;
294
+ }
295
+
296
+ .row-card-item .row-cell-value:first-child {
297
+ justify-content: flex-start;
298
+ margin: 0 8px 0 0;
299
+ }
300
+
301
+ .row-card-item .row-cell-value-empty {
302
+ display: inline-block;
303
+ height: 8px;
304
+ width: 20px;
305
+ background-color: #f1f1f1;
306
+ border-radius: 4px;
307
+ }
308
+
309
+ .row-card-item-content .collaborators-formatter {
310
+ width: 100%;
311
+ overflow: hidden;
312
+ }
313
+
314
+ .row-card-item-content .collaborators-formatter .formatter-show {
315
+ align-items: center;
316
+ }
317
+
318
+ .row-card-item-content .multiple-select-formatter {
319
+ width: 100%;
320
+ overflow: hidden;
321
+ display: inline-flex;
322
+ }
323
+
324
+ .multiple-select-formatter .grid_cell_type_multiple-select {
325
+ margin-right: 10px;
326
+ }
327
+
328
+ .multiple-select-formatter .grid_cell_type_multiple-select:last-child {
329
+ margin-right: 0;
330
+ }
331
+
332
+ .row-card-item-content .cell-value-ellipsis {
333
+ display: inline-block;
334
+ height: auto;
335
+ width: 100%;
336
+ }
337
+
338
+ .row-card-item-content .image-cell-value {
339
+ height: 30px;
340
+ width: 40px;
341
+ position: relative;
342
+ display: inline-flex;
343
+ align-items: center;
344
+ justify-content: flex-start;
345
+ }
346
+
347
+ .row-card-item-content .image-cell-value img {
348
+ display: inline-block;
349
+ max-height: 30px;
350
+ max-width: 40px;
351
+ border-radius: 3px;
352
+ }
353
+
354
+ .image-cell-value .cell-value-size {
355
+ position: absolute;
356
+ bottom: -2px;
357
+ right: -4px;
358
+ display: inline-block;
359
+ height: 12px;
360
+ padding: 0 4px;
361
+ border-radius: 6px;
362
+ text-align: center;
363
+ background-color: #999;
364
+ font-size: 10px;
365
+ line-height: 12px;
366
+ color: #fff;
367
+ }
368
+
369
+ .row-card-item .number-formatter {
370
+ width: 100%;
371
+ height: 100%;
372
+ display: inline-flex;
373
+ align-items: center;
374
+ }
375
+
376
+ .row-card-item .geolocation-formatter {
377
+ width: 100%;
378
+ }
379
+
380
+ .row-card-item .geolocation-formatter div {
381
+ width: 100%;
382
+ overflow: hidden;
383
+ text-overflow: ellipsis;
384
+ white-space: nowrap;
385
+ }
386
+
387
+ .row-card-content .row-card-item .row-card-item-container {
388
+ padding: 0;
389
+ position: relative;
390
+ }
391
+
392
+ .row-card-item .row-card-item-header {
393
+ position: absolute;
394
+ top: 12px;
395
+ padding: 0 12px;
396
+ pointer-events: none;
397
+ }
398
+
399
+ .row-card-item .row-card-item-name {
400
+ pointer-events: none;
401
+ }
402
+
403
+ .row-card-item .row-card-item-container .row-card-item-content {
404
+ height: 88px;
405
+ padding: 24px 12px 0;
406
+ }
407
+
408
+ .row-card-column--resizing {
409
+ background-color: #f5f5f5;
410
+ }
411
+
412
+ .row-card-draggable:hover {
413
+ background-color: #f5f5f5;
414
+ }
@@ -0,0 +1,76 @@
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 _seatableTableRecord = _interopRequireDefault(require("./seatable-table-record"));
14
+ require("./index.css");
15
+ const AddSeatableRowDialog = _ref => {
16
+ let {
17
+ editor,
18
+ closeDialog,
19
+ handleSubmit,
20
+ data
21
+ } = _ref;
22
+ const {
23
+ table
24
+ } = data;
25
+ const [rowRecordsErrorMessage, setRowRecordsErrorMessage] = (0, _react.useState)('');
26
+ const [selectedRow, setSelectedRow] = (0, _react.useState)(null);
27
+ const {
28
+ t
29
+ } = (0, _reactI18next.useTranslation)('sdoc-editor');
30
+ const submit = (0, _react.useCallback)(() => {
31
+ setRowRecordsErrorMessage('');
32
+ if (!selectedRow) {
33
+ setRowRecordsErrorMessage(t('Please_select_one_row_record'));
34
+ return;
35
+ }
36
+ if (selectedRow) {
37
+ (0, _helpers.insertSeaTableRow)(editor, table._id, selectedRow, 'after');
38
+ }
39
+ handleSubmit && handleSubmit();
40
+ closeDialog();
41
+ // eslint-disable-next-line react-hooks/exhaustive-deps
42
+ }, [editor, selectedRow]);
43
+ return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
44
+ isOpen: true,
45
+ autoFocus: false,
46
+ toggle: closeDialog,
47
+ className: "seatable-rows-select-dialog",
48
+ zIndex: 1071,
49
+ returnFocusAfterClose: false
50
+ }, /*#__PURE__*/_react.default.createElement("div", {
51
+ className: "modal-header-container"
52
+ }, /*#__PURE__*/_react.default.createElement("h5", {
53
+ className: "modal-title-container"
54
+ }, t('Select_seatable_rows')), /*#__PURE__*/_react.default.createElement("div", {
55
+ className: "sdocfont sdoc-close1 seatable-rows-close-dialog",
56
+ onClick: closeDialog
57
+ })), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalBody, null, /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
58
+ className: "form-group"
59
+ }, /*#__PURE__*/_react.default.createElement(_reactstrap.Label, null, table.name), /*#__PURE__*/_react.default.createElement(_seatableTableRecord.default, {
60
+ table: table,
61
+ setSelectedRow: setSelectedRow
62
+ }), rowRecordsErrorMessage && /*#__PURE__*/_react.default.createElement(_reactstrap.Alert, {
63
+ color: "danger",
64
+ className: "mt-2"
65
+ }, t(rowRecordsErrorMessage))))), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalFooter, {
66
+ className: "sdoc-seatable-rows-select-footer"
67
+ }, /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
68
+ color: "secondary",
69
+ onClick: closeDialog
70
+ }, t('Cancel')), /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
71
+ color: "primary",
72
+ disabled: false,
73
+ onClick: submit
74
+ }, t('Add_row_record'))));
75
+ };
76
+ var _default = exports.default = AddSeatableRowDialog;
@@ -0,0 +1,209 @@
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 _rowCardHeader = _interopRequireDefault(require("./row-card-header"));
12
+ var _rowCardItem = _interopRequireDefault(require("./row-card-item"));
13
+ // 98: row-card-item height + margin top = 88 + 10 = 98
14
+ const CARD_RECORD_ITEM_HEIGHT = 98;
15
+ class RecordContent extends _react.Component {
16
+ constructor(_props) {
17
+ super(_props);
18
+ (0, _defineProperty2.default)(this, "initState", props => {
19
+ const {
20
+ rows
21
+ } = props;
22
+ this.recordItem = [];
23
+ this.currentDisplayRowMinIndex = 0;
24
+ this.currentDisplayRowMaxIndex = Math.floor((0 + this.recordsList.offsetHeight) / CARD_RECORD_ITEM_HEIGHT);
25
+ const displayRows = rows.slice(0, this.shownLength);
26
+ const isHasMore = rows.length === this.shownLength;
27
+ this.setState({
28
+ displayRows,
29
+ isHasMore
30
+ });
31
+ });
32
+ (0, _defineProperty2.default)(this, "scrollToMore", e => {
33
+ e.stopPropagation();
34
+ const {
35
+ clientHeight,
36
+ scrollTop,
37
+ scrollHeight
38
+ } = this.recordsList;
39
+ this.currentDisplayRowMinIndex = Math.floor(scrollTop / CARD_RECORD_ITEM_HEIGHT);
40
+ this.currentDisplayRowMaxIndex = Math.floor(scrollHeight / CARD_RECORD_ITEM_HEIGHT);
41
+ const {
42
+ scrollLeft,
43
+ isHasMore
44
+ } = this.state;
45
+ if (scrollLeft >= 0) {
46
+ this.setItemScrollLeft(scrollLeft, -1);
47
+ }
48
+ if (!isHasMore || this.isLoadingMore) return;
49
+ if (clientHeight + scrollTop >= scrollHeight) {
50
+ const offset = this.shownLength;
51
+ this.isLoadingMore = true;
52
+ this.shownLength = offset + 10;
53
+ this.props.onLoadMore(offset);
54
+ }
55
+ });
56
+ (0, _defineProperty2.default)(this, "onRef", (ref, rowIdx) => {
57
+ this.recordItem[rowIdx] = ref;
58
+ });
59
+ (0, _defineProperty2.default)(this, "getCurrentDisplayRowMaxIndex", () => {
60
+ if (this.recordsList) {
61
+ this.currentDisplayRowMaxIndex = Math.floor((0 + this.recordsList.offsetHeight) / CARD_RECORD_ITEM_HEIGHT);
62
+ }
63
+ });
64
+ (0, _defineProperty2.default)(this, "setScrollLeft", scrollLeft => {
65
+ this.setState({
66
+ scrollLeft
67
+ });
68
+ });
69
+ (0, _defineProperty2.default)(this, "setItemScrollLeft", (scrollLeft, currentRecordIdx) => {
70
+ const {
71
+ isShowRowCardHeader
72
+ } = this.props;
73
+ if (isShowRowCardHeader) this.rowCardHeaderRef.setHeaderScrollLeft(scrollLeft);
74
+ const start = window.isMobile ? 0 : this.currentDisplayRowMinIndex;
75
+ const end = window.isMobile ? this.recordItem.length : this.currentDisplayRowMaxIndex;
76
+ for (let i = start; i <= end; i++) {
77
+ if (i !== currentRecordIdx && this.recordItem[i]) {
78
+ let cardRecordScrollLeft = this.recordItem[i].getScrollLeft();
79
+ if (cardRecordScrollLeft !== scrollLeft) {
80
+ this.recordItem[i].setScrollLeft(scrollLeft);
81
+ }
82
+ }
83
+ }
84
+ });
85
+ (0, _defineProperty2.default)(this, "setRecordsListRef", ref => {
86
+ this.recordsList = ref;
87
+ });
88
+ (0, _defineProperty2.default)(this, "handleRowClick", rowId => {
89
+ const {
90
+ setSelectedRow
91
+ } = this.props;
92
+
93
+ // Select one row, then make other selected one unselected
94
+ // Select one row to make itself toggled state
95
+ this.setState(prevState => {
96
+ const newSelectedRowId = prevState.selectedRowId === rowId ? null : rowId;
97
+ setTimeout(() => {
98
+ setSelectedRow(newSelectedRowId ? rowId : '');
99
+ }, 0);
100
+ return {
101
+ selectedRowId: newSelectedRowId
102
+ };
103
+ });
104
+ });
105
+ this.state = {
106
+ isHasMore: false,
107
+ displayRows: [],
108
+ scrollLeft: 0,
109
+ selectedRowId: null
110
+ };
111
+ this.shownLength = 10;
112
+ this.recordsList = null;
113
+ this.recordsContainer = null;
114
+ this.recordItem = [];
115
+ this.currentDisplayRowMinIndex = 0;
116
+ this.currentDisplayRowMaxIndex = 0;
117
+ this.isLoadingMore = false;
118
+ }
119
+ componentDidMount() {
120
+ this.initState(this.props);
121
+ }
122
+ UNSAFE_componentWillReceiveProps(nextProps) {
123
+ const {
124
+ rows
125
+ } = nextProps;
126
+ if (this.shownLength === 10) {
127
+ this.isLoadingMore = false;
128
+ this.initState(nextProps);
129
+ return;
130
+ }
131
+ this.isLoadingMore = false;
132
+ const displayRows = rows.slice(0, this.shownLength);
133
+ const isHasMore = rows.length === this.shownLength;
134
+ this.setState({
135
+ displayRows,
136
+ isHasMore
137
+ });
138
+ if (this.props.isAdditionEditorView !== nextProps.isAdditionEditorView) {
139
+ this.recordsList.scrollTop = 0;
140
+ }
141
+ }
142
+ componentWillUnmount() {
143
+ this.recordsList = null;
144
+ this.recordsContainer = null;
145
+ this.recordItem = [];
146
+ this.currentDisplayRowMinIndex = 0;
147
+ this.currentDisplayRowMaxIndex = 0;
148
+ }
149
+ render() {
150
+ const {
151
+ table,
152
+ noCardItemTip,
153
+ rowCardType,
154
+ columns,
155
+ renderedColumns,
156
+ showScrollBtn,
157
+ cardListClassName,
158
+ formulaRows,
159
+ cardHeaderClassName
160
+ } = this.props;
161
+ const {
162
+ displayRows,
163
+ scrollLeft,
164
+ selectedRowId
165
+ } = this.state;
166
+ const rowCardListClass = `row-card-list ${cardListClassName ? cardListClassName : ''}`;
167
+ return /*#__PURE__*/_react.default.createElement("div", {
168
+ className: "seatable-table-wrapper"
169
+ }, /*#__PURE__*/_react.default.createElement("div", {
170
+ className: "row-card-container"
171
+ }, /*#__PURE__*/_react.default.createElement(_rowCardHeader.default, {
172
+ cardHeaderClassName: cardHeaderClassName,
173
+ setItemScrollLeft: this.setItemScrollLeft,
174
+ renderedColumns: renderedColumns,
175
+ getCurrentDisplayRowMaxIndex: this.getCurrentDisplayRowMaxIndex,
176
+ showScrollBtn: showScrollBtn,
177
+ scrollLeft: scrollLeft,
178
+ setScrollLeft: this.setScrollLeft,
179
+ rowCardType: rowCardType,
180
+ ref: ref => this.rowCardHeaderRef = ref,
181
+ table: table
182
+ }), /*#__PURE__*/_react.default.createElement("div", {
183
+ className: rowCardListClass,
184
+ ref: this.setRecordsListRef,
185
+ onScroll: this.scrollToMore
186
+ }, displayRows.length === 0 && /*#__PURE__*/_react.default.createElement("div", {
187
+ className: "no-records-tips"
188
+ }, noCardItemTip), displayRows.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
189
+ className: "row-card-content",
190
+ ref: ref => this.recordsContent = ref
191
+ }, displayRows.map((row, rowIdx) => {
192
+ const formulaRow = formulaRows && formulaRows[row._id] || {};
193
+ return /*#__PURE__*/_react.default.createElement(_rowCardItem.default, {
194
+ key: `row-card-${rowIdx}`,
195
+ setItemScrollLeft: this.setItemScrollLeft,
196
+ onRef: this.onRef,
197
+ rowCardType: rowCardType,
198
+ table: table,
199
+ row: row,
200
+ formulaRow: formulaRow,
201
+ rowIdx: rowIdx,
202
+ columns: columns,
203
+ isSelected: selectedRowId === row._id,
204
+ onRowClick: () => this.handleRowClick(row._id)
205
+ });
206
+ })))));
207
+ }
208
+ }
209
+ var _default = exports.default = RecordContent;