dtable-ui-component 0.1.75-beta2 → 0.1.75-beta3

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 (223) hide show
  1. package/es/AutoNumberFormatter/index.css +1 -0
  2. package/es/AutoNumberFormatter/index.js +36 -0
  3. package/es/ButtonFormatter/index.css +13 -0
  4. package/es/ButtonFormatter/index.js +56 -0
  5. package/es/CTimeFormatter/index.css +1 -0
  6. package/es/CTimeFormatter/index.js +58 -0
  7. package/es/CheckboxFormatter/index.css +1 -0
  8. package/es/CheckboxFormatter/index.js +45 -0
  9. package/es/CollaboratorFormatter/index.css +1 -0
  10. package/es/CollaboratorFormatter/index.js +91 -0
  11. package/es/CollaboratorItem/index.css +49 -0
  12. package/es/CollaboratorItem/index.js +64 -0
  13. package/es/CreatorFormatter/index.css +1 -0
  14. package/es/CreatorFormatter/index.js +87 -0
  15. package/es/DateFormatter/index.css +1 -0
  16. package/es/DateFormatter/index.js +60 -0
  17. package/es/DurationFormatter/index.css +1 -0
  18. package/es/DurationFormatter/index.js +38 -0
  19. package/es/EmailFormatter/index.css +5 -0
  20. package/es/EmailFormatter/index.js +36 -0
  21. package/es/FileFormatter/index.css +29 -0
  22. package/es/FileFormatter/index.js +64 -0
  23. package/es/FileItemFormatter/index.js +50 -0
  24. package/es/FileUploader/index.js +53 -0
  25. package/es/FormulaFormatter/index.css +19 -0
  26. package/es/FormulaFormatter/index.js +164 -0
  27. package/es/GeolocationFormatter/index.css +1 -0
  28. package/es/GeolocationFormatter/index.js +53 -0
  29. package/es/ImageFormatter/images-lazy-load.js +150 -0
  30. package/es/ImageFormatter/index.css +34 -0
  31. package/es/ImageFormatter/index.js +154 -0
  32. package/es/ImagePreviewerLightbox/index.css +87 -0
  33. package/es/ImagePreviewerLightbox/index.js +119 -0
  34. package/es/LastModifierFormatter/index.css +1 -0
  35. package/es/LastModifierFormatter/index.js +87 -0
  36. package/es/LinkFormatter/index.css +27 -0
  37. package/es/LinkFormatter/index.js +144 -0
  38. package/es/Loading/index.css +54 -0
  39. package/es/Loading/index.js +7 -0
  40. package/es/LongTextFormatter/html-long-text-formatter.js +96 -0
  41. package/es/LongTextFormatter/index.css +63 -0
  42. package/es/LongTextFormatter/index.js +29 -0
  43. package/es/LongTextFormatter/simple-long-text-formatter.js +104 -0
  44. package/es/MTimeFormatter/index.css +1 -0
  45. package/es/MTimeFormatter/index.js +58 -0
  46. package/es/ModalPortal/index.js +44 -0
  47. package/es/MultipleSelectFormatter/index.css +1 -0
  48. package/es/MultipleSelectFormatter/index.js +70 -0
  49. package/es/NumberFormatter/index.css +1 -0
  50. package/es/NumberFormatter/index.js +47 -0
  51. package/es/RateFormatter/index.css +1 -0
  52. package/es/RateFormatter/index.js +80 -0
  53. package/es/SelectItem/index.js +58 -0
  54. package/es/SingleSelectFormatter/index.css +1 -0
  55. package/es/SingleSelectFormatter/index.js +70 -0
  56. package/es/TextFormatter/index.css +1 -0
  57. package/es/TextFormatter/index.js +56 -0
  58. package/es/UrlFormatter/index.css +5 -0
  59. package/es/UrlFormatter/index.js +36 -0
  60. package/es/app.css +20 -0
  61. package/es/app.js +91 -0
  62. package/es/assets/images/avatar/default_avatar.png +0 -0
  63. package/es/assets/images/file/192/excel.png +0 -0
  64. package/es/assets/images/file/192/file.png +0 -0
  65. package/es/assets/images/file/192/music.png +0 -0
  66. package/es/assets/images/file/192/pdf.png +0 -0
  67. package/es/assets/images/file/192/pic.png +0 -0
  68. package/es/assets/images/file/192/ppt.png +0 -0
  69. package/es/assets/images/file/192/txt.png +0 -0
  70. package/es/assets/images/file/192/video.png +0 -0
  71. package/es/assets/images/file/192/word.png +0 -0
  72. package/es/assets/images/file/24/excel.png +0 -0
  73. package/es/assets/images/file/24/file.png +0 -0
  74. package/es/assets/images/file/24/music.png +0 -0
  75. package/es/assets/images/file/24/pdf.png +0 -0
  76. package/es/assets/images/file/24/pic.png +0 -0
  77. package/es/assets/images/file/24/ppt.png +0 -0
  78. package/es/assets/images/file/24/txt.png +0 -0
  79. package/es/assets/images/file/24/video.png +0 -0
  80. package/es/assets/images/file/24/word.png +0 -0
  81. package/es/assets/images/folder/folder-192.png +0 -0
  82. package/es/assets/images/folder/folder-24.png +0 -0
  83. package/es/cellFormatterFactory/index.js +25 -0
  84. package/es/components/cell-editor/checkbox-editor.js +104 -0
  85. package/es/components/cell-editor/collaborator-editor.js +236 -0
  86. package/es/components/cell-editor/date-editor.js +151 -0
  87. package/es/components/cell-editor/index.js +9 -0
  88. package/es/components/cell-editor/link-editor.js +303 -0
  89. package/es/components/cell-editor/multiple-select-editor.js +237 -0
  90. package/es/components/cell-editor/number-editor.js +154 -0
  91. package/es/components/cell-editor/single-select-editor.js +202 -0
  92. package/es/components/cell-editor/text-editor.js +122 -0
  93. package/es/components/cell-editor-dialog/pc-file-editor-dialog.js +46 -0
  94. package/es/components/cell-editor-dialog/pc-files-addition/index.js +0 -0
  95. package/es/components/cell-editor-dialog/pc-files-addition/pc-file-uploaded-item.js +0 -0
  96. package/es/components/cell-editor-dialog/pc-files-preview/index.js +0 -0
  97. package/es/components/cell-editor-dialog/pc-files-preview/pc-file-item-preview.js +0 -0
  98. package/es/components/cell-editor-popover/mb-collaborator-editor-popover.js +177 -0
  99. package/es/components/cell-editor-popover/mb-date-editor-popover.js +245 -0
  100. package/es/components/cell-editor-popover/mb-link-editor-popover.js +170 -0
  101. package/es/components/cell-editor-popover/mb-select-editor-popover.js +230 -0
  102. package/es/components/cell-editor-popover/pc-collaborator-editor-popover.js +109 -0
  103. package/es/components/cell-editor-popover/pc-date-editor-popover.js +142 -0
  104. package/es/components/cell-editor-popover/pc-link-editor-popover.js +114 -0
  105. package/es/components/cell-editor-popover/pc-select-editor-popover.js +143 -0
  106. package/es/components/common/collaborator-item.js +63 -0
  107. package/es/components/common/edit-editor-button.js +56 -0
  108. package/es/components/common/link-editor-option.js +113 -0
  109. package/es/components/common/mobile/mb-editor-header.js +48 -0
  110. package/es/components/common/select-editor-option.js +106 -0
  111. package/es/constants/cell-types.js +25 -0
  112. package/es/constants/index.js +49 -0
  113. package/es/css/cell-editor.css +614 -0
  114. package/es/css/cell-formatter.css +4 -0
  115. package/es/css/custom-rc-calendar.css +118 -0
  116. package/es/formatterConfig/index.js +31 -0
  117. package/es/index.js +31 -0
  118. package/es/lang/index.js +50 -0
  119. package/es/locals/de.js +2 -0
  120. package/es/locals/en.js +17 -0
  121. package/es/locals/fr.js +2 -0
  122. package/es/locals/zh-CN.js +17 -0
  123. package/{lib/toast → es/toaster}/alert.js +0 -0
  124. package/{lib/toast → es/toaster}/index.js +0 -0
  125. package/{lib/toast → es/toaster}/toast.js +0 -0
  126. package/{lib/toast → es/toaster}/toastManager.js +0 -0
  127. package/{lib/toast → es/toaster}/toaster.js +0 -0
  128. package/es/utils/cell-value-validator.js +31 -0
  129. package/es/utils/column-utils.js +7 -0
  130. package/es/utils/editor-utils.js +71 -0
  131. package/es/utils/markdown2html.js +62 -0
  132. package/es/utils/normalize-long-text-value.js +69 -0
  133. package/es/utils/number-precision.js +164 -0
  134. package/es/utils/unified/index.js +470 -0
  135. package/es/utils/utils.js +116 -0
  136. package/es/utils/value-format-utils.js +497 -0
  137. package/es/utils/vfile/core.js +172 -0
  138. package/es/utils/vfile/index.js +48 -0
  139. package/lib/AutoNumberFormatter/index.js +38 -27
  140. package/lib/ButtonFormatter/index.js +59 -47
  141. package/lib/CTimeFormatter/index.js +53 -39
  142. package/lib/CheckboxFormatter/index.js +48 -35
  143. package/lib/CollaboratorFormatter/index.js +64 -42
  144. package/lib/CollaboratorItem/index.js +61 -44
  145. package/lib/CreatorFormatter/index.js +62 -42
  146. package/lib/DateFormatter/index.js +55 -40
  147. package/lib/DurationFormatter/index.js +42 -29
  148. package/lib/EmailFormatter/index.js +38 -27
  149. package/lib/FileFormatter/index.js +65 -50
  150. package/lib/FileItemFormatter/index.js +44 -31
  151. package/lib/FileUploader/index.js +44 -34
  152. package/lib/FormulaFormatter/index.js +102 -81
  153. package/lib/GeolocationFormatter/index.js +50 -35
  154. package/lib/ImageFormatter/images-lazy-load.js +81 -73
  155. package/lib/ImageFormatter/index.js +109 -90
  156. package/lib/ImagePreviewerLightbox/index.js +60 -27
  157. package/lib/LastModifierFormatter/index.js +62 -42
  158. package/lib/LinkFormatter/index.js +80 -59
  159. package/lib/Loading/index.js +13 -4
  160. package/lib/LongTextFormatter/html-long-text-formatter.js +60 -49
  161. package/lib/LongTextFormatter/index.js +28 -9
  162. package/lib/LongTextFormatter/simple-long-text-formatter.js +58 -52
  163. package/lib/MTimeFormatter/index.js +53 -39
  164. package/lib/ModalPortal/index.js +37 -30
  165. package/lib/MultipleSelectFormatter/index.js +55 -39
  166. package/lib/NumberFormatter/index.js +50 -35
  167. package/lib/RateFormatter/index.js +52 -37
  168. package/lib/SelectItem/index.js +46 -31
  169. package/lib/SingleSelectFormatter/index.js +54 -38
  170. package/lib/TextFormatter/index.js +44 -31
  171. package/lib/UrlFormatter/index.js +38 -27
  172. package/lib/app.js +80 -75
  173. package/lib/cellFormatterFactory/index.js +20 -17
  174. package/lib/components/cell-editor/checkbox-editor.js +66 -59
  175. package/lib/components/cell-editor/collaborator-editor.js +126 -113
  176. package/lib/components/cell-editor/date-editor.js +119 -99
  177. package/lib/components/cell-editor/index.js +40 -9
  178. package/lib/components/cell-editor/link-editor.js +140 -122
  179. package/lib/components/cell-editor/multiple-select-editor.js +127 -114
  180. package/lib/components/cell-editor/number-editor.js +86 -78
  181. package/lib/components/cell-editor/single-select-editor.js +120 -106
  182. package/lib/components/cell-editor/text-editor.js +72 -65
  183. package/lib/components/cell-editor-dialog/pc-file-editor-dialog.js +51 -31
  184. package/lib/components/cell-editor-dialog/pc-files-addition/index.js +1 -0
  185. package/lib/components/cell-editor-dialog/pc-files-addition/pc-file-uploaded-item.js +1 -0
  186. package/lib/components/cell-editor-dialog/pc-files-preview/index.js +1 -0
  187. package/lib/components/cell-editor-dialog/pc-files-preview/pc-file-item-preview.js +1 -0
  188. package/lib/components/cell-editor-popover/mb-collaborator-editor-popover.js +111 -105
  189. package/lib/components/cell-editor-popover/mb-date-editor-popover.js +157 -140
  190. package/lib/components/cell-editor-popover/mb-link-editor-popover.js +109 -103
  191. package/lib/components/cell-editor-popover/mb-select-editor-popover.js +155 -142
  192. package/lib/components/cell-editor-popover/pc-collaborator-editor-popover.js +89 -74
  193. package/lib/components/cell-editor-popover/pc-date-editor-popover.js +102 -88
  194. package/lib/components/cell-editor-popover/pc-link-editor-popover.js +91 -77
  195. package/lib/components/cell-editor-popover/pc-select-editor-popover.js +105 -91
  196. package/lib/components/common/collaborator-item.js +59 -43
  197. package/lib/components/common/edit-editor-button.js +39 -28
  198. package/lib/components/common/link-editor-option.js +71 -63
  199. package/lib/components/common/mobile/mb-editor-header.js +52 -39
  200. package/lib/components/common/select-editor-option.js +74 -58
  201. package/lib/constants/cell-types.js +54 -25
  202. package/lib/constants/index.js +28 -5
  203. package/lib/formatterConfig/index.js +59 -28
  204. package/lib/index.js +139 -31
  205. package/lib/lang/index.js +27 -11
  206. package/lib/locals/de.js +6 -1
  207. package/lib/locals/en.js +6 -1
  208. package/lib/locals/fr.js +6 -1
  209. package/lib/locals/zh-CN.js +6 -1
  210. package/lib/toaster/alert.js +164 -0
  211. package/lib/toaster/index.js +12 -0
  212. package/lib/toaster/toast.js +223 -0
  213. package/lib/toaster/toastManager.js +189 -0
  214. package/lib/toaster/toaster.js +92 -0
  215. package/lib/utils/cell-value-validator.js +9 -5
  216. package/lib/utils/column-utils.js +13 -5
  217. package/lib/utils/editor-utils.js +13 -3
  218. package/lib/utils/markdown2html.js +7 -1
  219. package/lib/utils/normalize-long-text-value.js +6 -1
  220. package/lib/utils/number-precision.js +32 -13
  221. package/lib/utils/utils.js +33 -8
  222. package/lib/utils/value-format-utils.js +110 -58
  223. package/package.json +5 -5
@@ -0,0 +1,29 @@
1
+ @import url('../css/cell-formatter.css');
2
+
3
+ .dtable-ui.file-formatter {
4
+ display: flex;
5
+ align-items: center;
6
+ }
7
+
8
+ .dtable-ui.file-formatter .file-item-icon {
9
+ display: inline-block;
10
+ height: 28px;
11
+ width: 28px;
12
+ border: 1px solid #f0f0f0;
13
+ }
14
+
15
+ .dtable-ui.file-formatter .file-item-count {
16
+ display: inline-block;
17
+ padding: 0 3px;
18
+ min-width: 14px;
19
+ line-height: 14px;
20
+ font-size: 12px;
21
+ border-radius: 6px;
22
+ text-align: center;
23
+ text-overflow: ellipsis;
24
+ white-space: nowrap;
25
+ color: #fff;
26
+ background-color: #999;
27
+ -webkit-transform: translate(-50%, 8px) scale(.8);
28
+ transform: translate(-50%, 8px) scale(.8);
29
+ }
@@ -0,0 +1,64 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React from 'react';
6
+ import cn from 'astro-classname';
7
+ import FileItemFormatter from '../FileItemFormatter';
8
+ import './index.css';
9
+
10
+ var FileFormatter = /*#__PURE__*/function (_React$PureComponent) {
11
+ _inherits(FileFormatter, _React$PureComponent);
12
+
13
+ var _super = _createSuper(FileFormatter);
14
+
15
+ function FileFormatter() {
16
+ _classCallCheck(this, FileFormatter);
17
+
18
+ return _super.apply(this, arguments);
19
+ }
20
+
21
+ _createClass(FileFormatter, [{
22
+ key: "render",
23
+ value: function render() {
24
+ var _this$props = this.props,
25
+ isSample = _this$props.isSample,
26
+ value = _this$props.value,
27
+ containerClassName = _this$props.containerClassName;
28
+ var className = cn('dtable-ui cell-formatter-container file-formatter', containerClassName);
29
+
30
+ if (!Array.isArray(value) || value.length === 0) {
31
+ return null;
32
+ }
33
+
34
+ if (isSample) {
35
+ var item = value[0];
36
+ return /*#__PURE__*/React.createElement("div", {
37
+ className: className
38
+ }, /*#__PURE__*/React.createElement(FileItemFormatter, {
39
+ file: item
40
+ }), value.length !== 1 && /*#__PURE__*/React.createElement("span", {
41
+ className: "file-item-count"
42
+ }, "+".concat(value.length)));
43
+ }
44
+
45
+ return /*#__PURE__*/React.createElement("div", {
46
+ className: className
47
+ }, value.map(function (item, index) {
48
+ return /*#__PURE__*/React.createElement(FileItemFormatter, {
49
+ file: item,
50
+ key: index
51
+ });
52
+ }));
53
+ }
54
+ }]);
55
+
56
+ return FileFormatter;
57
+ }(React.PureComponent);
58
+
59
+ FileFormatter.defaultProps = {
60
+ isSample: false,
61
+ value: [],
62
+ containerClassName: ''
63
+ };
64
+ export default FileFormatter;
@@ -0,0 +1,50 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React, { Component } from 'react';
6
+ import { getFileIconUrl } from '../utils/utils';
7
+
8
+ var FileItemFormatter = /*#__PURE__*/function (_Component) {
9
+ _inherits(FileItemFormatter, _Component);
10
+
11
+ var _super = _createSuper(FileItemFormatter);
12
+
13
+ function FileItemFormatter() {
14
+ var _this;
15
+
16
+ _classCallCheck(this, FileItemFormatter);
17
+
18
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
19
+ args[_key] = arguments[_key];
20
+ }
21
+
22
+ _this = _super.call.apply(_super, [this].concat(args));
23
+
24
+ _this.getFileIconData = function (item) {
25
+ var fileIconUrl = getFileIconUrl(item.name, item.type);
26
+
27
+ var fileIconData = require('' + fileIconUrl);
28
+
29
+ return fileIconData;
30
+ };
31
+
32
+ return _this;
33
+ }
34
+
35
+ _createClass(FileItemFormatter, [{
36
+ key: "render",
37
+ value: function render() {
38
+ var file = this.props.file;
39
+ return /*#__PURE__*/React.createElement("img", {
40
+ className: "file-item-icon",
41
+ src: this.getFileIconData(file),
42
+ alt: file.name
43
+ });
44
+ }
45
+ }]);
46
+
47
+ return FileItemFormatter;
48
+ }(Component);
49
+
50
+ export default FileItemFormatter;
@@ -0,0 +1,53 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React from 'react';
6
+
7
+ var FileUploader = /*#__PURE__*/function (_React$Component) {
8
+ _inherits(FileUploader, _React$Component);
9
+
10
+ var _super = _createSuper(FileUploader);
11
+
12
+ function FileUploader(props) {
13
+ var _this;
14
+
15
+ _classCallCheck(this, FileUploader);
16
+
17
+ _this = _super.call(this, props);
18
+
19
+ _this.onFilesChanged = function () {};
20
+
21
+ _this.uploadFiles = function (fileList) {
22
+ var isMultiple = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
23
+ };
24
+
25
+ _this.checkRepeat = function () {};
26
+
27
+ _this.cancelUploadFile = function () {};
28
+
29
+ _this.onFileUploadProgress = function () {};
30
+
31
+ _this.onFileUploadSuccss = function () {};
32
+
33
+ _this.onFileUploadFailed = function () {};
34
+
35
+ _this.state = {};
36
+ _this.uploadFiles = [];
37
+ return _this;
38
+ }
39
+
40
+ _createClass(FileUploader, [{
41
+ key: "render",
42
+ value: function render() {
43
+ return /*#__PURE__*/React.createElement("input", {
44
+ type: "file",
45
+ onChange: this.onFilesChanged
46
+ });
47
+ }
48
+ }]);
49
+
50
+ return FileUploader;
51
+ }(React.Component);
52
+
53
+ export default FileUploader;
@@ -0,0 +1,19 @@
1
+ @import url('../css/cell-formatter.css');
2
+
3
+ .dtable-ui.formula-formatter.multiple .formula-formatter-content-item {
4
+ display: inline-flex;
5
+ margin-right: 10px;
6
+ }
7
+
8
+
9
+ .dtable-ui.formula-formatter.multiple .formula-formatter-content-item.simple-cell-formatter {
10
+ height: 20px;
11
+ padding: 0 8px;
12
+ align-items: center;
13
+ background: #eceff4;
14
+ border-radius: 3px;
15
+ }
16
+
17
+ .dtable-ui.formula-formatter.multiple .formula-formatter-content-item .collaborator {
18
+ margin-right: 0;
19
+ }
@@ -0,0 +1,164 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
5
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
6
+ import React from 'react';
7
+ import { FORMULA_RESULT_TYPE, CellType } from '../constants';
8
+ import cellFormatterFactory from '../cellFormatterFactory';
9
+ import { isFunction } from '../utils/utils';
10
+ import TextFormatter from '../TextFormatter';
11
+ import { isArrayFormalColumn, isSimpleCellFormatter } from '../utils/column-utils';
12
+ import cellValueValidator from '../utils/cell-value-validator';
13
+ import { getFormulaDisplayString } from '../utils/value-format-utils';
14
+ import './index.css';
15
+
16
+ var FormulaFormatter = /*#__PURE__*/function (_React$Component) {
17
+ _inherits(FormulaFormatter, _React$Component);
18
+
19
+ var _super = _createSuper(FormulaFormatter);
20
+
21
+ function FormulaFormatter() {
22
+ var _this;
23
+
24
+ _classCallCheck(this, FormulaFormatter);
25
+
26
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
27
+ args[_key] = arguments[_key];
28
+ }
29
+
30
+ _this = _super.call.apply(_super, [this].concat(args));
31
+
32
+ _this.getGridCellClassName = function (resultType) {
33
+ switch (resultType) {
34
+ case FORMULA_RESULT_TYPE.NUMBER:
35
+ {
36
+ return 'text-right';
37
+ }
38
+
39
+ default:
40
+ {
41
+ return '';
42
+ }
43
+ }
44
+ };
45
+
46
+ _this.renderOtherColumnFormatter = function () {
47
+ var _this$props = _this.props,
48
+ value = _this$props.value,
49
+ column = _this$props.column,
50
+ collaborators = _this$props.collaborators;
51
+ var columnData = column.data;
52
+ var array_type = columnData.array_type,
53
+ array_data = columnData.array_data;
54
+
55
+ if (!array_type || array_type === CellType.LINK) {
56
+ return null;
57
+ }
58
+
59
+ var Formatter = cellFormatterFactory.createFormatter(array_type);
60
+
61
+ var formatterProps = _this.getFormatterProps(array_type, array_data, collaborators);
62
+
63
+ if (isArrayFormalColumn(array_type)) {
64
+ formatterProps.value = value;
65
+ return _this.createColumnFormatter(Formatter, formatterProps);
66
+ }
67
+
68
+ var _isSimpleCellFormatterColumn = isSimpleCellFormatter(array_type);
69
+
70
+ var cellValue = value;
71
+
72
+ if (!Array.isArray(value)) {
73
+ cellValue = cellValueValidator(value, array_type) ? [value] : [];
74
+ }
75
+
76
+ var contentItemClassName = "formula-formatter-content-item ".concat(_isSimpleCellFormatterColumn ? 'simple-cell-formatter' : '');
77
+ return /*#__PURE__*/React.createElement("div", {
78
+ className: "dtable-ui formula-formatter multiple"
79
+ }, cellValue.map(function (v, index) {
80
+ formatterProps.value = v;
81
+ return /*#__PURE__*/React.createElement("div", {
82
+ className: contentItemClassName,
83
+ key: "formula-formatter-content-item-".concat(index)
84
+ }, _this.createColumnFormatter(Formatter, formatterProps));
85
+ }));
86
+ };
87
+
88
+ _this.getFormatterProps = function (array_type, array_data, collaborators) {
89
+ switch (array_type) {
90
+ case CellType.DURATION:
91
+ {
92
+ var duration_format = array_data.duration_format;
93
+ return {
94
+ format: duration_format
95
+ };
96
+ }
97
+
98
+ case CellType.NUMBER:
99
+ case CellType.RATE:
100
+ case CellType.GEOLOCATION:
101
+ {
102
+ return {
103
+ data: array_data
104
+ };
105
+ }
106
+
107
+ default:
108
+ {
109
+ return _objectSpread(_objectSpread({}, array_data), {}, {
110
+ collaborators: collaborators
111
+ });
112
+ }
113
+ }
114
+ };
115
+
116
+ return _this;
117
+ }
118
+
119
+ _createClass(FormulaFormatter, [{
120
+ key: "createColumnFormatter",
121
+ value: function createColumnFormatter(Formatter, formatterProps) {
122
+ if (React.isValidElement(Formatter)) {
123
+ return React.cloneElement(Formatter, _objectSpread({}, formatterProps));
124
+ } else if (isFunction(Formatter)) {
125
+ return /*#__PURE__*/React.createElement(Formatter, formatterProps);
126
+ }
127
+
128
+ return /*#__PURE__*/React.createElement(TextFormatter, formatterProps);
129
+ }
130
+ }, {
131
+ key: "render",
132
+ value: function render() {
133
+ var _this$props2 = this.props,
134
+ value = _this$props2.value,
135
+ containerClassName = _this$props2.containerClassName,
136
+ column = _this$props2.column,
137
+ collaborators = _this$props2.collaborators;
138
+ var columnData = column.data;
139
+ var resultType = columnData.result_type;
140
+
141
+ if (resultType === FORMULA_RESULT_TYPE.ARRAY) {
142
+ return this.renderOtherColumnFormatter();
143
+ }
144
+
145
+ if (typeof value === 'object') {
146
+ return null;
147
+ }
148
+
149
+ var gridCellClassName = this.getGridCellClassName(resultType);
150
+ var formattedValue = getFormulaDisplayString(value, columnData, {
151
+ collaborators: collaborators
152
+ });
153
+ return /*#__PURE__*/React.createElement("div", {
154
+ className: "dtable-ui cell-formatter-container formula-formatter ".concat(containerClassName, " ").concat(gridCellClassName),
155
+ title: formattedValue,
156
+ "aria-label": formattedValue
157
+ }, formattedValue);
158
+ }
159
+ }]);
160
+
161
+ return FormulaFormatter;
162
+ }(React.Component);
163
+
164
+ export default FormulaFormatter;
@@ -0,0 +1 @@
1
+ @import url('../css/cell-formatter.css');
@@ -0,0 +1,53 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React from 'react';
6
+ import cn from 'astro-classname';
7
+ import { getGeolocationDisplayString } from '../utils/value-format-utils';
8
+ import './index.css';
9
+
10
+ var GeolocationFormatter = /*#__PURE__*/function (_React$Component) {
11
+ _inherits(GeolocationFormatter, _React$Component);
12
+
13
+ var _super = _createSuper(GeolocationFormatter);
14
+
15
+ function GeolocationFormatter() {
16
+ _classCallCheck(this, GeolocationFormatter);
17
+
18
+ return _super.apply(this, arguments);
19
+ }
20
+
21
+ _createClass(GeolocationFormatter, [{
22
+ key: "render",
23
+ value: function render() {
24
+ var _this$props = this.props,
25
+ value = _this$props.value,
26
+ data = _this$props.data,
27
+ containerClassName = _this$props.containerClassName;
28
+ var className = cn('dtable-ui cell-formatter-container geolocation-formatter', containerClassName);
29
+
30
+ if (typeof value !== 'object') {
31
+ return null;
32
+ }
33
+
34
+ return /*#__PURE__*/React.createElement("div", {
35
+ className: className
36
+ }, getGeolocationDisplayString(value, data));
37
+ }
38
+ }]);
39
+
40
+ return GeolocationFormatter;
41
+ }(React.Component);
42
+
43
+ GeolocationFormatter.defaultProps = {
44
+ value: {
45
+ province: '',
46
+ city: '',
47
+ district: '',
48
+ detail: ''
49
+ },
50
+ data: {},
51
+ containerClassName: ''
52
+ };
53
+ export default GeolocationFormatter;
@@ -0,0 +1,150 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
+ import React from 'react';
6
+ import Loading from '../Loading';
7
+ import { getImageThumbnailUrl } from '../utils/utils';
8
+
9
+ var ImagesLazyLoad = /*#__PURE__*/function (_React$Component) {
10
+ _inherits(ImagesLazyLoad, _React$Component);
11
+
12
+ var _super = _createSuper(ImagesLazyLoad);
13
+
14
+ function ImagesLazyLoad(props) {
15
+ var _this;
16
+
17
+ _classCallCheck(this, ImagesLazyLoad);
18
+
19
+ _this = _super.call(this, props);
20
+
21
+ _this.componentDidMount = function () {
22
+ var images = _this.state.images;
23
+
24
+ _this.lazyLoadImages(images);
25
+ };
26
+
27
+ _this.componentWillReceiveProps = function (nextProps) {
28
+ if (nextProps.images.toString() !== _this.props.images.toString()) {
29
+ _this.lazyLoadImages(nextProps.images);
30
+ }
31
+ };
32
+
33
+ _this.componentWillUnmount = function () {
34
+ // prevent async operation
35
+ _this.setState = function (state, callback) {
36
+ return;
37
+ };
38
+ };
39
+
40
+ _this.lazyLoadImages = function (images) {
41
+ if (!Array.isArray(images) || images.length === 0) {
42
+ return;
43
+ }
44
+
45
+ var server = _this.props.server.server;
46
+ images.forEach(function (item) {
47
+ var url = getImageThumbnailUrl(item, server);
48
+
49
+ _this.lazyLoadImage(url, function (image) {
50
+ var _this$state = _this.state,
51
+ loadedCount = _this$state.loadedCount,
52
+ loadedImages = _this$state.loadedImages;
53
+
54
+ _this.setState({
55
+ loadedCount: loadedCount + 1,
56
+ loadedImages: loadedImages.concat(image)
57
+ });
58
+ }, function () {
59
+ var loadedCount = _this.state.loadedCount;
60
+
61
+ _this.setState({
62
+ loadedCount: loadedCount + 1
63
+ });
64
+ });
65
+ });
66
+ };
67
+
68
+ _this.lazyLoadImage = function (url, resolve, reject) {
69
+ if (!url) {
70
+ reject('img path is require');
71
+ return;
72
+ }
73
+
74
+ var image = new Image();
75
+
76
+ image.onload = function () {
77
+ resolve(image);
78
+ };
79
+
80
+ image.onerror = function (e) {
81
+ reject(e);
82
+ };
83
+
84
+ image.src = url;
85
+ };
86
+
87
+ _this.onMouseDown = function (event) {
88
+ event.stopPropagation();
89
+ };
90
+
91
+ _this.onImageClick = function (event, index) {
92
+ event.stopPropagation();
93
+
94
+ _this.props.onImageClick(index);
95
+ };
96
+
97
+ _this.state = {
98
+ images: props.images,
99
+ loadedImages: [],
100
+ loadedCount: 0
101
+ };
102
+ return _this;
103
+ }
104
+
105
+ _createClass(ImagesLazyLoad, [{
106
+ key: "render",
107
+ value: function render() {
108
+ var _this2 = this;
109
+
110
+ var _this$state2 = this.state,
111
+ images = _this$state2.images,
112
+ loadedImages = _this$state2.loadedImages,
113
+ loadedCount = _this$state2.loadedCount;
114
+
115
+ if (!Array.isArray(images) || images.length === 0) {
116
+ return '';
117
+ }
118
+
119
+ if (images.length > loadedCount) {
120
+ var style = {
121
+ marginLeft: '4px'
122
+ };
123
+ return /*#__PURE__*/React.createElement("div", {
124
+ style: style
125
+ }, /*#__PURE__*/React.createElement(Loading, null));
126
+ }
127
+
128
+ if (images.length === loadedCount) {
129
+ return loadedImages.map(function (image, index) {
130
+ return /*#__PURE__*/React.createElement("img", {
131
+ key: index,
132
+ className: "image-item",
133
+ src: image.src,
134
+ onMouseDown: _this2.onMouseDown,
135
+ onClick: function onClick(event) {
136
+ return _this2.onImageClick(event, index);
137
+ },
138
+ alt: ""
139
+ });
140
+ });
141
+ }
142
+
143
+ return '';
144
+ }
145
+ }]);
146
+
147
+ return ImagesLazyLoad;
148
+ }(React.Component);
149
+
150
+ export default ImagesLazyLoad;
@@ -0,0 +1,34 @@
1
+ @import url('../css/cell-formatter.css');
2
+
3
+ .dtable-ui.image-formatter {
4
+ display: flex;
5
+ align-items: center;
6
+ }
7
+
8
+ .dtable-ui.image-formatter .image-item {
9
+ display: inline-block;
10
+ height: 28px;
11
+ width: 28px;
12
+ margin-right: 4px;
13
+ border: 1px solid #f0f0f0;
14
+ }
15
+
16
+ .dtable-ui.image-formatter .image-item:hover {
17
+ border: 1px solid #c9c9c9;
18
+ }
19
+
20
+ .dtable-ui.image-formatter .image-item-count {
21
+ display: inline-block;
22
+ padding: 0 3px;
23
+ min-width: 14px;
24
+ line-height: 14px;
25
+ font-size: 12px;
26
+ border-radius: 6px;
27
+ text-align: center;
28
+ text-overflow: ellipsis;
29
+ white-space: nowrap;
30
+ color: #fff;
31
+ background-color: #999;
32
+ -webkit-transform: translate(-50%, 8px) scale(.8);
33
+ transform: translate(-50%, 8px) scale(.8);
34
+ }