sea-chart 1.1.123 → 1.1.125

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.
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { CellType } from 'dtable-utils';
2
3
  import HideColumnPopover from '../popover/hide-column-popover/hide-column-popover';
3
4
  import intl from '../../intl';
4
5
  class HideColumnSetter extends React.Component {
@@ -19,8 +20,17 @@ class HideColumnSetter extends React.Component {
19
20
  });
20
21
  };
21
22
  this.modifyHiddenColumns = shownColumnKeys => {
23
+ const {
24
+ columns = []
25
+ } = this.props;
26
+ const {
27
+ shownColumnKeys: currentShownColumnKeys = []
28
+ } = this.state;
29
+ const buttonColumnKeys = columns.filter(column => column.type === CellType.BUTTON).map(column => column.key);
30
+ const preservedButtonColumnKeys = currentShownColumnKeys.filter(columnKey => buttonColumnKeys.includes(columnKey));
31
+ const mergedShownColumnKeys = shownColumnKeys.concat(preservedButtonColumnKeys.filter(columnKey => !shownColumnKeys.includes(columnKey)));
22
32
  this.setState({
23
- shownColumnKeys
33
+ shownColumnKeys: mergedShownColumnKeys
24
34
  });
25
35
  };
26
36
  this.state = {
@@ -45,11 +55,12 @@ class HideColumnSetter extends React.Component {
45
55
  wrapperClass
46
56
  } = this.props;
47
57
  if (!columns) return null;
58
+ const configurableColumns = columns.filter(column => column.type !== CellType.BUTTON);
48
59
  const {
49
60
  shownColumnKeys
50
61
  } = this.state;
51
62
  const shown_column_keys = shownColumnKeys || [];
52
- const hiddenColumns = columns.filter(column => !shown_column_keys.includes(column.key));
63
+ const hiddenColumns = configurableColumns.filter(column => !shown_column_keys.includes(column.key));
53
64
  const hiddenColumnsLength = hiddenColumns.length;
54
65
  let message = intl.get('hide_columns');
55
66
  if (hiddenColumnsLength === 1) {
@@ -68,7 +79,7 @@ class HideColumnSetter extends React.Component {
68
79
  className: "dtable-font dtable-icon-hide mr-2",
69
80
  id: "dtable-hidden-column-popover"
70
81
  }), /*#__PURE__*/React.createElement("span", null, message)), this.state.isShowHideColumnSetter && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HideColumnPopover, {
71
- columns: columns,
82
+ columns: configurableColumns,
72
83
  target: 'dtable-hidden-column-popover',
73
84
  shownColumnKeys: shownColumnKeys,
74
85
  modifyHiddenColumns: this.modifyHiddenColumns,
@@ -18,10 +18,11 @@ import _GeolocationFormatter from "dtable-ui-component/lib/GeolocationFormatter"
18
18
  import _ImageFormatter from "dtable-ui-component/lib/ImageFormatter";
19
19
  import _LongTextFormatter from "dtable-ui-component/lib/LongTextFormatter";
20
20
  import _CollaboratorFormatter from "dtable-ui-component/lib/CollaboratorFormatter";
21
+ import _PhoneNumberLink from "dtable-ui-component/lib/PhoneNumberLink";
21
22
  import _TextFormatter from "dtable-ui-component/lib/TextFormatter";
22
23
  import _toaster from "dtable-ui-component/lib/toaster";
23
24
  import React, { Fragment } from 'react';
24
- import { CellType } from 'dtable-utils';
25
+ import { CellType, checkIsDisplayAsPhoneNumberColumn } from 'dtable-utils';
25
26
  import intl from '../../../../intl';
26
27
  import DtableFormulaFormatter from './formatters/formula-formatter';
27
28
  import LinkFormatter from './formatters/link-formatter';
@@ -64,6 +65,14 @@ class Formatter extends React.Component {
64
65
  this.onEmailClick = email => {
65
66
  window.location.href = `mailto:${getTrimmedString(email)}`;
66
67
  };
68
+ this.onUrlKeyDown = (event, url) => {
69
+ if (event.key !== 'Enter') return;
70
+ this.onUrlClick(url);
71
+ };
72
+ this.onEmailKeyDown = (event, email) => {
73
+ if (event.key !== 'Enter') return;
74
+ this.onEmailClick(email);
75
+ };
67
76
  this.renderFormatter = () => {
68
77
  let {
69
78
  column,
@@ -81,6 +90,17 @@ class Formatter extends React.Component {
81
90
  case CellType.TEXT:
82
91
  {
83
92
  if (!cellValue) return this.renderEmptyFormatter();
93
+ if (checkIsDisplayAsPhoneNumberColumn(column) && !!getTrimmedString(cellValue)) {
94
+ return /*#__PURE__*/React.createElement("div", {
95
+ className: "table-element-link-value-wrapper"
96
+ }, /*#__PURE__*/React.createElement(_TextFormatter, {
97
+ value: cellValue,
98
+ containerClassName: "table-element-phone-number-formatter"
99
+ }), /*#__PURE__*/React.createElement(_PhoneNumberLink, {
100
+ phoneNumber: getTrimmedString(cellValue),
101
+ className: "table-element-cell-jump-link"
102
+ }));
103
+ }
84
104
  return /*#__PURE__*/React.createElement(_TextFormatter, {
85
105
  value: cellValue,
86
106
  containerClassName: containerClassName
@@ -250,21 +270,37 @@ class Formatter extends React.Component {
250
270
  {
251
271
  if (!cellValue) return this.renderEmptyFormatter();
252
272
  return /*#__PURE__*/React.createElement("div", {
253
- onClick: () => this.onUrlClick(cellValue)
273
+ className: "table-element-link-value-wrapper"
254
274
  }, /*#__PURE__*/React.createElement(_UrlFormatter, {
255
275
  value: cellValue,
256
276
  containerClassName: containerClassName
257
- }), ";");
277
+ }), /*#__PURE__*/React.createElement("span", {
278
+ onClick: () => this.onUrlClick(cellValue),
279
+ onKeyDown: event => this.onUrlKeyDown(event, cellValue),
280
+ tabIndex: 0,
281
+ role: "button",
282
+ className: "table-element-cell-jump-link"
283
+ }, /*#__PURE__*/React.createElement("i", {
284
+ className: "dtable-font dtable-icon-url"
285
+ })));
258
286
  }
259
287
  case CellType.EMAIL:
260
288
  {
261
289
  if (!cellValue) return this.renderEmptyFormatter();
262
290
  return /*#__PURE__*/React.createElement("div", {
263
- onClick: () => this.onEmailClick(cellValue)
291
+ className: "table-element-link-value-wrapper"
264
292
  }, /*#__PURE__*/React.createElement(_EmailFormatter, {
265
293
  value: cellValue,
266
294
  containerClassName: containerClassName
267
- }), ";");
295
+ }), /*#__PURE__*/React.createElement("span", {
296
+ onClick: () => this.onEmailClick(cellValue),
297
+ onKeyDown: event => this.onEmailKeyDown(event, cellValue),
298
+ tabIndex: 0,
299
+ role: "button",
300
+ className: "table-element-cell-jump-link"
301
+ }, /*#__PURE__*/React.createElement("i", {
302
+ className: "dtable-font dtable-icon-email"
303
+ })));
268
304
  }
269
305
  case CellType.DURATION:
270
306
  {
@@ -28,7 +28,7 @@ class RecordsHeader extends Component {
28
28
  return /*#__PURE__*/React.createElement("div", {
29
29
  className: "static-table-element-result-content",
30
30
  style: {
31
- color: globalTheme === 'light' ? '#666666' : '#ffffff'
31
+ color: globalTheme === 'light' ? '#212529' : '#ffffff'
32
32
  },
33
33
  onMouseEnter: this.onMouseEnter,
34
34
  onMouseLeave: this.onMouseLeave
@@ -43,7 +43,7 @@
43
43
  width: 100%;
44
44
  position: relative;
45
45
  z-index: 2;
46
- color: #666666;
46
+ color: #212529;
47
47
  }
48
48
 
49
49
  .table-element-header-cell {
@@ -86,6 +86,13 @@
86
86
  position: relative;
87
87
  }
88
88
 
89
+ .table-element-result-table-cell.table-element-result-table-image-cell,
90
+ .table-element-result-table-cell.table-element-result-table-file-cell,
91
+ .table-element-result-table-cell.table-element-result-table-formula-image-cell {
92
+ padding-top: 2px;
93
+ padding-bottom: 2px;
94
+ }
95
+
89
96
  .table-element-result-table-cell:last-child {
90
97
  border-right: none;
91
98
  }
@@ -140,6 +147,21 @@
140
147
  text-align: left !important;
141
148
  }
142
149
 
150
+ .table-element-result-table-cell .dtable-ui.table-element-phone-number-formatter,
151
+ .table-element-result-table-cell .dtable-ui.table-element-url-formatter,
152
+ .table-element-result-table-cell .dtable-ui.table-element-email-formatter {
153
+ width: auto;
154
+ }
155
+
156
+ .table-element-result-table-cell .table-element-image-formatter,
157
+ .table-element-result-table-cell .table-element-file-formatter {
158
+ height: 28px;
159
+ line-height: 28px;
160
+ display: flex;
161
+ align-items: center;
162
+ overflow: visible;
163
+ }
164
+
143
165
  .table-element-result-table-cell .multiple-select-formatter,
144
166
  .table-element-result-table-cell .single-select-formatter {
145
167
  line-height: 1;
@@ -167,6 +189,7 @@
167
189
  }
168
190
 
169
191
  .table-element-result-table-cell .table-element-text-formatter,
192
+ .table-element-result-table-cell .table-element-phone-number-formatter,
170
193
  .table-element-result-table-cell .table-element-url-formatter,
171
194
  .table-element-result-table-cell .table-element-email-formatter,
172
195
  .table-element-result-table-cell .table-element-long-text-formatter .long-text-content {
@@ -175,6 +198,69 @@
175
198
  white-space: nowrap;
176
199
  }
177
200
 
201
+ .table-element-result-table-cell .table-element-link-value-wrapper {
202
+ display: flex;
203
+ align-items: center;
204
+ width: 100%;
205
+ min-width: 0;
206
+ }
207
+
208
+ .table-element-result-table-cell .table-element-link-value-wrapper .table-element-phone-number-formatter,
209
+ .table-element-result-table-cell .table-element-link-value-wrapper .table-element-url-formatter,
210
+ .table-element-result-table-cell .table-element-link-value-wrapper .table-element-email-formatter {
211
+ min-width: 0;
212
+ }
213
+
214
+ .table-element-result-table-cell .table-element-cell-jump-link {
215
+ display: inline-flex;
216
+ align-items: center;
217
+ justify-content: center;
218
+ height: 20px;
219
+ line-height: 20px;
220
+ margin-left: 8px;
221
+ border: 1px solid #eee;
222
+ padding: 0 2px;
223
+ color: #999;
224
+ border-radius: 2px;
225
+ background: #fff;
226
+ cursor: pointer;
227
+ box-shadow: 0 0 1px;
228
+ }
229
+
230
+ .table-element-result-table-cell .table-element-cell-jump-link:hover {
231
+ background: #f5f5f5;
232
+ border: 1px solid #c9c9c9;
233
+ }
234
+
235
+ .table-element-result-table-cell .table-element-cell-jump-link .dtable-font,
236
+ .table-element-result-table-cell .table-element-cell-jump-link .jump-link-icon {
237
+ color: #999;
238
+ }
239
+
240
+ .table-element-result-table-cell .table-element-image-formatter .image-item {
241
+ height: 28px;
242
+ width: auto;
243
+ max-width: 100%;
244
+ object-fit: contain;
245
+ border: 1px solid #f0f0f0;
246
+ box-sizing: border-box;
247
+ }
248
+
249
+ .table-element-result-table-cell .table-element-image-formatter .image-item:hover {
250
+ border: 1px solid #c9c9c9;
251
+ cursor: pointer;
252
+ }
253
+
254
+ .table-element-result-table-cell .table-element-file-formatter .file-item-icon {
255
+ border: 1px solid #f0f0f0;
256
+ box-sizing: border-box;
257
+ }
258
+
259
+ .table-element-result-table-cell .table-element-file-formatter .file-item-icon:hover {
260
+ border: 1px solid #c9c9c9;
261
+ cursor: pointer;
262
+ }
263
+
178
264
  .table-element-result-table-cell .dtable-ui.long-text-formatter {
179
265
  height: 100%;
180
266
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sea-chart",
3
- "version": "1.1.123",
3
+ "version": "1.1.125",
4
4
  "main": "./dist/index.js",
5
5
  "dependencies": {
6
6
  "@antv/data-set": "0.11.8",
@@ -10,7 +10,7 @@
10
10
  "@dnd-kit/modifiers": "^9.0.0",
11
11
  "@dnd-kit/sortable": "^10.0.0",
12
12
  "@dnd-kit/utilities": "^3.2.2",
13
- "@seafile/seafile-calendar": "^0.0.24",
13
+ "@seafile/seafile-calendar": "^1.0.8",
14
14
  "@seafile/seafile-editor": "^2.0.12",
15
15
  "axios": "~1.13.*",
16
16
  "classnames": "^2.3.2",