dtable-ui-component 4.4.34 → 4.4.35

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.
@@ -10,6 +10,30 @@
10
10
  margin-bottom: 5px;
11
11
  }
12
12
 
13
+ .dtable-ui.dtable-row-expand-formatter .formula-url-formatter-column .formula-url-link,
14
+ .dtable-ui.dtable-row-expand-formatter .formula-url-formatter-column .formula-email-link {
15
+ display: flex;
16
+ align-items: center;
17
+ font-size: 14px;
18
+ height: 22px;
19
+ position: absolute;
20
+ top: 8px;
21
+ right: 9px;
22
+ border: 1px solid #eee;
23
+ padding: 0 4px;
24
+ color: #999;
25
+ border-radius: 2px;
26
+ background: #fff;
27
+ cursor: pointer;
28
+ box-shadow: 0 0 1px;
29
+ }
30
+
31
+ .dtable-ui.dtable-row-expand-formatter .formula-url-formatter-column .formula-email-link:hover,
32
+ .dtable-ui.dtable-row-expand-formatter .formula-url-formatter-column .formula-url-link:hover {
33
+ background: #f5f5f5;
34
+ border: 1px solid #c9c9c9;
35
+ }
36
+
13
37
  .dtable-ui.formula-formatter.multiple .formula-formatter-content-item.simple-cell-formatter {
14
38
  height: 20px;
15
39
  padding: 0 8px;
@@ -8,7 +8,7 @@ exports.getTwoDimensionArrayValue = exports.getFormulaArrayValue = exports.conve
8
8
  exports.isArrayFormatColumn = isArrayFormatColumn;
9
9
  exports.isFunction = void 0;
10
10
  exports.isSimpleCellFormatter = isSimpleCellFormatter;
11
- exports.isValidCellValue = void 0;
11
+ exports.openUrlLink = exports.isValidUrl = exports.isValidCellValue = void 0;
12
12
  var _constants = require("../constants");
13
13
  var _normalizeLongTextValue = _interopRequireDefault(require("../SimpleLongTextFormatter/normalize-long-text-value"));
14
14
  function isSimpleCellFormatter(type) {
@@ -31,6 +31,21 @@ const isValidCellValue = value => {
31
31
  return true;
32
32
  };
33
33
  exports.isValidCellValue = isValidCellValue;
34
+ const isValidUrl = url => {
35
+ const reg = /^(([-a-zA-Z0-9+.]+):\/\/)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/;
36
+ return reg.test(url);
37
+ };
38
+ exports.isValidUrl = isValidUrl;
39
+ const openUrlLink = url => {
40
+ let a = document.createElement('a');
41
+ document.body.appendChild(a);
42
+ a.href = url;
43
+ a.target = '_blank';
44
+ a.rel = 'noopener noreferrer';
45
+ a.click();
46
+ document.body.removeChild(a);
47
+ };
48
+ exports.openUrlLink = openUrlLink;
34
49
  const getFormulaArrayValue = function (value) {
35
50
  let isFlat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
36
51
  if (!Array.isArray(value)) {
@@ -6,15 +6,31 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
+ var _classnames = _interopRequireDefault(require("classnames"));
9
10
  var _dtableUtils = require("dtable-utils");
10
11
  var _baseFormatterConfig = _interopRequireDefault(require("../formatterConfig/base-formatter-config"));
11
12
  var _TextFormatter = _interopRequireDefault(require("../TextFormatter"));
12
13
  var _utils = require("../FormulaFormatter/utils");
13
14
  var _cellValueValidator = _interopRequireDefault(require("../FormulaFormatter/cell-value-validator"));
15
+ var _toaster = _interopRequireDefault(require("../toaster"));
16
+ var _lang = require("../lang");
14
17
  require("../FormulaFormatter/index.css");
15
18
  class RowExpandFormulaFormatter extends _react.default.Component {
16
19
  constructor() {
17
20
  super(...arguments);
21
+ this.onOpenUrlLink = url => {
22
+ if (!(0, _utils.isValidUrl)(url)) {
23
+ url = "http://".concat(url);
24
+ }
25
+ try {
26
+ (0, _utils.openUrlLink)(url);
27
+ } catch {
28
+ _toaster.default.danger((0, _lang.getLocale)('URL_is_invalid'));
29
+ }
30
+ };
31
+ this.onOpenEmailLink = email => {
32
+ window.location.href = "mailto:".concat(email.trim());
33
+ };
18
34
  this.renderBorder = dom => {
19
35
  const {
20
36
  column
@@ -30,6 +46,13 @@ class RowExpandFormulaFormatter extends _react.default.Component {
30
46
  width: '320px'
31
47
  };
32
48
  }
49
+ const columnType = (0, _dtableUtils.getColumnType)(column);
50
+ if ([_dtableUtils.CellType.URL, _dtableUtils.CellType.EMAIL].includes(columnType)) {
51
+ style = {
52
+ ...style,
53
+ position: 'relative'
54
+ };
55
+ }
33
56
  return /*#__PURE__*/_react.default.createElement("div", {
34
57
  className: "d-flex align-items-center form-control disabled h-auto",
35
58
  style: style
@@ -54,18 +77,41 @@ class RowExpandFormulaFormatter extends _react.default.Component {
54
77
  formatterProps.value = value;
55
78
  return this.renderBorder(this.createColumnFormatter(Formatter, formatterProps));
56
79
  }
80
+ const columnType = (0, _dtableUtils.getColumnType)(column);
57
81
  let cellValue = value;
58
82
  if (!Array.isArray(value)) {
59
83
  cellValue = (0, _cellValueValidator.default)(value, array_type) ? [value] : [];
60
84
  }
85
+ let formulaUrl = '';
86
+ if (columnType === _dtableUtils.CellType.URL) {
87
+ formulaUrl = cellValue[0];
88
+ formulaUrl = formulaUrl ? formulaUrl.trim() : '';
89
+ }
90
+ let formulaEmail = '';
91
+ if (columnType === _dtableUtils.CellType.EMAIL) {
92
+ formulaEmail = cellValue[0];
93
+ formulaEmail = formulaEmail ? formulaEmail.trim() : '';
94
+ }
61
95
  return this.renderBorder( /*#__PURE__*/_react.default.createElement("div", {
62
96
  className: "dtable-ui formula-formatter multiple"
63
97
  }, cellValue.map((v, index) => {
64
98
  formatterProps.value = v;
65
99
  return /*#__PURE__*/_react.default.createElement("div", {
66
- className: "formula-formatter-content-item ".concat((0, _utils.isSimpleCellFormatter)(array_type) ? 'simple-cell-formatter' : ''),
100
+ className: (0, _classnames.default)('formula-formatter-content-item', {
101
+ 'simple-cell-formatter': (0, _utils.isSimpleCellFormatter)(array_type)
102
+ }, {
103
+ 'formula-url-formatter-column': formulaUrl || formulaEmail
104
+ }),
67
105
  key: "formula-formatter-content-item-".concat(index)
68
- }, this.createColumnFormatter(Formatter, formatterProps));
106
+ }, formulaUrl && /*#__PURE__*/_react.default.createElement("span", {
107
+ "aria-hidden": "true",
108
+ className: "dtable-font dtable-icon-url formula-url-link",
109
+ onClick: this.onOpenUrlLink.bind(this, formulaUrl)
110
+ }), formulaEmail && /*#__PURE__*/_react.default.createElement("span", {
111
+ "aria-hidden": "true",
112
+ className: "dtable-font dtable-icon-email formula-email-link",
113
+ onClick: this.onOpenEmailLink.bind(this, formulaEmail)
114
+ }), this.createColumnFormatter(Formatter, formatterProps));
69
115
  })));
70
116
  };
71
117
  this.getFormatterProps = (array_type, array_data, collaborators) => {
package/lib/locals/de.js CHANGED
@@ -93,6 +93,7 @@ const de = {
93
93
  "this_year": "Dieses Jahr",
94
94
  "last_week": "letzte Woche",
95
95
  "last_month": "letzten Monat",
96
- "last_year": "letztes Jahr"
96
+ "last_year": "letztes Jahr",
97
+ "URL_is_invalid": "Die URL ist ungültig."
97
98
  };
98
99
  var _default = exports.default = de;
package/lib/locals/en.js CHANGED
@@ -93,6 +93,7 @@ const en = {
93
93
  "this_year": "this year",
94
94
  "last_week": "last week",
95
95
  "last_month": "last month",
96
- "last_year": "last year"
96
+ "last_year": "last year",
97
+ "URL_is_invalid": "URL is invalid"
97
98
  };
98
99
  var _default = exports.default = en;
package/lib/locals/es.js CHANGED
@@ -93,6 +93,7 @@ const es = {
93
93
  "this_year": "este año",
94
94
  "last_week": "la semana pasada",
95
95
  "last_month": "el mes pasado",
96
- "last_year": "el año pasado"
96
+ "last_year": "el año pasado",
97
+ "URL_is_invalid": "URL no válida"
97
98
  };
98
99
  var _default = exports.default = es;
package/lib/locals/fr.js CHANGED
@@ -93,6 +93,7 @@ const fr = {
93
93
  "this_year": "cette année",
94
94
  "last_week": "la semaine dernière",
95
95
  "last_month": "le mois dernier",
96
- "last_year": "l'année dernière"
96
+ "last_year": "l'année dernière",
97
+ "URL_is_invalid": "L'URL est invalide."
97
98
  };
98
99
  var _default = exports.default = fr;
package/lib/locals/pt.js CHANGED
@@ -93,6 +93,7 @@ const pt = {
93
93
  "this_year": "este ano",
94
94
  "last_week": "semana anterior",
95
95
  "last_month": "mês passado",
96
- "last_year": "ano passado"
96
+ "last_year": "ano passado",
97
+ "URL_is_invalid": "URL é inválido"
97
98
  };
98
99
  var _default = exports.default = pt;
package/lib/locals/ru.js CHANGED
@@ -93,6 +93,7 @@ const ru = {
93
93
  "this_year": "в этом году",
94
94
  "last_week": "last week",
95
95
  "last_month": "last month",
96
- "last_year": "last year"
96
+ "last_year": "last year",
97
+ "URL_is_invalid": "URL-адрес недействителен"
97
98
  };
98
99
  var _default = exports.default = ru;
@@ -93,6 +93,7 @@ const zh_CN = {
93
93
  "this_year": "今年",
94
94
  "last_week": "上个星期",
95
95
  "last_month": "上个月",
96
- "last_year": "去年"
96
+ "last_year": "去年",
97
+ "URL_is_invalid": "URL 无效"
97
98
  };
98
99
  var _default = exports.default = zh_CN;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-ui-component",
3
- "version": "4.4.34",
3
+ "version": "4.4.35",
4
4
  "main": "./lib/index.js",
5
5
  "dependencies": {
6
6
  "@seafile/react-image-lightbox": "2.0.5",