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,154 @@
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, { Fragment } from 'react';
6
+ import cn from 'astro-classname';
7
+ import ImagesLazyLoad from './images-lazy-load';
8
+ import { getImageThumbnailUrl } from '../utils/utils';
9
+ import ImagePreviewerLightbox from '../ImagePreviewerLightbox';
10
+ import './index.css';
11
+
12
+ var ImageFormatter = /*#__PURE__*/function (_React$Component) {
13
+ _inherits(ImageFormatter, _React$Component);
14
+
15
+ var _super = _createSuper(ImageFormatter);
16
+
17
+ function ImageFormatter(props) {
18
+ var _this;
19
+
20
+ _classCallCheck(this, ImageFormatter);
21
+
22
+ _this = _super.call(this, props);
23
+
24
+ _this.onImageClick = function (index) {
25
+ if (!_this.props.isSupportPreview) return;
26
+
27
+ _this.setState({
28
+ isPreviewImage: true,
29
+ previewImageIndex: index
30
+ });
31
+ };
32
+
33
+ _this.closeImagePopup = function () {
34
+ if (!_this.props.isSupportPreview) return;
35
+
36
+ _this.setState({
37
+ isPreviewImage: false,
38
+ previewImageIndex: -1
39
+ });
40
+ };
41
+
42
+ _this.movePrev = function () {
43
+ var images = _this.props.value;
44
+
45
+ _this.setState(function (prevState) {
46
+ return {
47
+ previewImageIndex: (prevState.previewImageIndex + images.length - 1) % images.length
48
+ };
49
+ });
50
+ };
51
+
52
+ _this.moveNext = function () {
53
+ var images = _this.props.value;
54
+
55
+ _this.setState(function (prevState) {
56
+ return {
57
+ previewImageIndex: (prevState.previewImageIndex + 1) % images.length
58
+ };
59
+ });
60
+ };
61
+
62
+ _this.downloadImage = function (imageItemUrl) {
63
+ if (!_this.props.downloadImage) return;
64
+
65
+ _this.props.downloadImage(imageItemUrl);
66
+ };
67
+
68
+ _this.deleteImage = function (index) {
69
+ var readOnly = _this.props.readOnly;
70
+ if (readOnly) return;
71
+ if (!_this.props.deleteImage) return;
72
+
73
+ _this.props.deleteImage(index);
74
+ };
75
+
76
+ _this.onRotateImage = function (index, degree) {
77
+ var readOnly = _this.props.readOnly;
78
+ if (readOnly) return;
79
+ if (!_this.props.rotateImage) return;
80
+
81
+ _this.props.rotateImage(index, degree);
82
+ };
83
+
84
+ _this.state = {
85
+ isPreviewImage: false,
86
+ previewImageIndex: -1
87
+ };
88
+ return _this;
89
+ }
90
+
91
+ _createClass(ImageFormatter, [{
92
+ key: "render",
93
+ value: function render() {
94
+ var _this$props = this.props,
95
+ isSample = _this$props.isSample,
96
+ value = _this$props.value,
97
+ server = _this$props.server,
98
+ containerClassName = _this$props.containerClassName,
99
+ readOnly = _this$props.readOnly;
100
+ var className = cn('dtable-ui cell-formatter-container image-formatter', containerClassName);
101
+ var _this$state = this.state,
102
+ isPreviewImage = _this$state.isPreviewImage,
103
+ previewImageIndex = _this$state.previewImageIndex;
104
+
105
+ if (!Array.isArray(value) || value.length === 0) {
106
+ return null;
107
+ }
108
+
109
+ if (isSample) {
110
+ var item = value[0];
111
+ var url = getImageThumbnailUrl(item, server);
112
+ return /*#__PURE__*/React.createElement("div", {
113
+ className: className
114
+ }, /*#__PURE__*/React.createElement("img", {
115
+ className: "image-item",
116
+ src: url,
117
+ alt: ""
118
+ }), value.length !== 1 && /*#__PURE__*/React.createElement("span", {
119
+ className: "image-item-count"
120
+ }, "+".concat(value.length)));
121
+ }
122
+
123
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
124
+ className: className
125
+ }, /*#__PURE__*/React.createElement(ImagesLazyLoad, {
126
+ images: value,
127
+ server: server,
128
+ onImageClick: this.onImageClick
129
+ })), isPreviewImage && /*#__PURE__*/React.createElement(ImagePreviewerLightbox, {
130
+ imageItems: value,
131
+ imageIndex: previewImageIndex,
132
+ closeImagePopup: this.closeImagePopup,
133
+ moveToPrevImage: this.movePrev,
134
+ moveToNextImage: this.moveNext,
135
+ deleteImage: readOnly ? null : this.deleteImage,
136
+ downloadImage: this.downloadImage,
137
+ onRotateImage: readOnly ? null : this.onRotateImage,
138
+ readOnly: readOnly
139
+ }));
140
+ }
141
+ }]);
142
+
143
+ return ImageFormatter;
144
+ }(React.Component);
145
+
146
+ ImageFormatter.defaultProps = {
147
+ isSample: false,
148
+ isSupportPreview: false,
149
+ readOnly: true,
150
+ value: [],
151
+ server: '',
152
+ containerClassName: ''
153
+ };
154
+ export default ImageFormatter;
@@ -0,0 +1,87 @@
1
+ .dtable-ui-component.mobile-image-previewer .ril-prev-button,
2
+ .dtable-ui-component.mobile-image-previewer .ril-next-button,
3
+ .dtable-ui-component.mobile-image-previewer .ril-caption .ril-zoom-in,
4
+ .dtable-ui-component.mobile-image-previewer .ril-caption .ril-zoom-out {
5
+ display: none;
6
+ }
7
+
8
+ .dtable-ui-component.mobile-image-previewer .ril-toolbar .ril__toolbarRightSide {
9
+ padding-right: 14px;
10
+ }
11
+
12
+ .dtable-ui-component.image-footer-choice.mobile-image-footer-choice {
13
+ height: 100px;
14
+ background-color: #000;
15
+ z-index: 1052;
16
+ padding: 0;
17
+ width: 100%;
18
+ border-radius: 2px;
19
+ border-top-right-radius: 0;
20
+ border-top-left-radius: 0;
21
+ bottom: 0;
22
+ position: absolute;
23
+ color: #fff;
24
+ background: rgba(0, 0, 0, 0.6);
25
+ display: flex;
26
+ justify-content: space-between;
27
+ align-items: center;
28
+ }
29
+
30
+ .dtable-ui-component.image-footer-choice.mobile-image-footer-choice .image-footer-icon {
31
+ width: 100%;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: space-between;
35
+ flex-direction: row-reverse;
36
+ margin: 0 20px;
37
+ }
38
+
39
+ .dtable-ui-component.image-footer-choice.mobile-image-footer-choice .image-footer-icon .image-footer-choice-item {
40
+ height: 40px;
41
+ width: 40px;
42
+ border-radius: 5px;
43
+ background-color: #333;
44
+ cursor: pointer;
45
+ display: flex;
46
+ justify-content: center;
47
+ align-items: center;
48
+ color: #dbdbdb;
49
+ }
50
+
51
+ .dtable-ui-component.image-footer-choice.mobile-image-footer-choice .image-footer-icon .image-footer-choice-item i {
52
+ font-size: 20px;
53
+ }
54
+
55
+ .ril__outer .ril-caption button.dtable-font {
56
+ height: 50px;
57
+ font-size: 20px;
58
+ }
59
+
60
+ .ril__outer .ril-toolbar button.dtable-font {
61
+ border: none;
62
+ }
63
+
64
+ .ril__outer .ril-toolbar button.dtable-font:focus {
65
+ outline: none;
66
+ }
67
+
68
+ .ril__outer button.dtable-font {
69
+ font-size: 16px;
70
+ }
71
+
72
+ .ril__outer .ril-toolbar .ril-close {
73
+ width: 30px;
74
+ height: 53px;
75
+ }
76
+
77
+ .ril__outer .ril__toolbarItem {
78
+ height: 50px;
79
+ }
80
+
81
+ .ril__outer .ril__toolbarItem button {
82
+ opacity: 0.7;
83
+ }
84
+
85
+ .ril__outer .ril__toolbarItem button:hover {
86
+ opacity: 1;
87
+ }
@@ -0,0 +1,119 @@
1
+ import React, { Fragment } from 'react';
2
+ import MediaQuery from 'react-responsive';
3
+ import ModalPortal from '../ModalPortal';
4
+ import Lightbox from '@seafile/react-image-lightbox';
5
+ import { checkSVGImage, isInternalImg } from '../utils/utils';
6
+ import '@seafile/react-image-lightbox/style.css';
7
+ import './index.css';
8
+
9
+ function ImagePreviewerLightbox(props) {
10
+ var imageItems = props.imageItems,
11
+ imageIndex = props.imageIndex,
12
+ deleteImage = props.deleteImage,
13
+ downloadImage = props.downloadImage,
14
+ onRotateImage = props.onRotateImage,
15
+ readOnly = props.readOnly;
16
+ var imageItemsLength = imageItems.length;
17
+ var URL = imageItems[imageIndex];
18
+ var imageTitle = URL ? decodeURI(URL.slice(URL.lastIndexOf('/') + 1)) : ''; // svg image is vectorgraph and can't rotate, external image can't rotate
19
+
20
+ var canRotateImage = onRotateImage && !readOnly && !checkSVGImage(URL) && isInternalImg(URL);
21
+ var imageTitleEl = /*#__PURE__*/React.createElement("span", {
22
+ className: "d-flex"
23
+ }, /*#__PURE__*/React.createElement("span", {
24
+ className: "text-truncate"
25
+ }, imageTitle), /*#__PURE__*/React.createElement("span", {
26
+ className: "flex-shrink-0"
27
+ }, "(", imageIndex + 1, "/", imageItemsLength, ")"));
28
+ var toolbarButtons = [];
29
+
30
+ if (!readOnly && deleteImage) {
31
+ toolbarButtons.push( /*#__PURE__*/React.createElement("button", {
32
+ className: "dtable-font dtable-icon-delete",
33
+ onClick: function onClick() {
34
+ deleteImage(imageIndex, 'previewer');
35
+ }
36
+ }));
37
+ }
38
+
39
+ if (downloadImage) {
40
+ toolbarButtons.push( /*#__PURE__*/React.createElement("button", {
41
+ className: "dtable-font dtable-icon-download",
42
+ onClick: function onClick() {
43
+ downloadImage(URL);
44
+ }
45
+ }));
46
+ }
47
+
48
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(MediaQuery, {
49
+ query: "(min-width: 767.8px)"
50
+ }, /*#__PURE__*/React.createElement(Lightbox, {
51
+ wrapperClassName: "PC-image-previewer",
52
+ imageTitle: imageTitleEl,
53
+ toolbarButtons: toolbarButtons,
54
+ mainSrc: imageItems[imageIndex],
55
+ nextSrc: imageItems[(imageIndex + 1) % imageItemsLength],
56
+ prevSrc: imageItems[(imageIndex + imageItemsLength - 1) % imageItemsLength],
57
+ onCloseRequest: props.closeImagePopup,
58
+ onMovePrevRequest: props.moveToPrevImage,
59
+ onMoveNextRequest: props.moveToNextImage,
60
+ onRotateImage: canRotateImage ? function (deg) {
61
+ onRotateImage(imageIndex, deg);
62
+ } : null,
63
+ imagePadding: 70,
64
+ reactModalStyle: {
65
+ overlay: {
66
+ zIndex: 1051
67
+ }
68
+ }
69
+ })), /*#__PURE__*/React.createElement(MediaQuery, {
70
+ query: "(max-width: 767.8px)"
71
+ }, /*#__PURE__*/React.createElement(Lightbox, {
72
+ isDesktop: false,
73
+ wrapperClassName: "mobile-image-previewer dtable-ui-component",
74
+ mainSrc: imageItems[imageIndex],
75
+ nextSrc: imageItems[(imageIndex + 1) % imageItemsLength],
76
+ prevSrc: imageItems[(imageIndex + imageItemsLength - 1) % imageItemsLength],
77
+ onCloseRequest: props.closeImagePopup,
78
+ onMovePrevRequest: props.moveToPrevImage,
79
+ onMoveNextRequest: props.moveToNextImage,
80
+ imagePadding: 0,
81
+ animationDisabled: true,
82
+ imageTitle: imageTitleEl,
83
+ reactModalStyle: {
84
+ overlay: {
85
+ zIndex: 1051,
86
+ backgroundColor: '#000'
87
+ }
88
+ }
89
+ }), /*#__PURE__*/React.createElement(ModalPortal, null, /*#__PURE__*/React.createElement("div", {
90
+ className: "image-footer-choice mobile-image-footer-choice dtable-ui-component"
91
+ }, /*#__PURE__*/React.createElement("div", {
92
+ className: "image-footer-icon"
93
+ }, /*#__PURE__*/React.createElement("div", {
94
+ className: "d-flex"
95
+ }, canRotateImage && /*#__PURE__*/React.createElement("span", {
96
+ className: "image-footer-choice-item mr-4",
97
+ onClick: function onClick() {
98
+ onRotateImage(imageIndex, 90);
99
+ }
100
+ }, /*#__PURE__*/React.createElement("i", {
101
+ className: "dtable-font dtable-icon-rotate"
102
+ })), downloadImage && /*#__PURE__*/React.createElement("span", {
103
+ className: "image-footer-choice-item",
104
+ onClick: function onClick() {
105
+ downloadImage(URL);
106
+ }
107
+ }, /*#__PURE__*/React.createElement("i", {
108
+ className: "dtable-font dtable-icon-download"
109
+ }))), !readOnly && deleteImage && /*#__PURE__*/React.createElement("span", {
110
+ className: "image-footer-choice-item",
111
+ onClick: function onClick() {
112
+ deleteImage(imageIndex, 'previewer');
113
+ }
114
+ }, /*#__PURE__*/React.createElement("i", {
115
+ className: "dtable-font dtable-icon-delete"
116
+ })))))));
117
+ }
118
+
119
+ export default ImagePreviewerLightbox;
@@ -0,0 +1 @@
1
+ @import url('../css/cell-formatter.css');
@@ -0,0 +1,87 @@
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 CollaboratorItem from '../CollaboratorItem';
8
+ import DefaultAvatar from '../assets/images/avatar/default_avatar.png';
9
+ import './index.css';
10
+
11
+ // there will be there conditions
12
+ // 1 value is not exist, typeof value is array, but it's length is 0
13
+ // 2 value is exist, but can't find in collaborators
14
+ // 3 value is exist, typeof value is a string
15
+ // 4 value is exist, typeof value is array
16
+ var LastModifierFormatter = /*#__PURE__*/function (_React$PureComponent) {
17
+ _inherits(LastModifierFormatter, _React$PureComponent);
18
+
19
+ var _super = _createSuper(LastModifierFormatter);
20
+
21
+ function LastModifierFormatter() {
22
+ var _this;
23
+
24
+ _classCallCheck(this, LastModifierFormatter);
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.getCollaborators = function () {
33
+ var _this$props = _this.props,
34
+ value = _this$props.value,
35
+ collaborators = _this$props.collaborators;
36
+
37
+ if (!Array.isArray(value)) {
38
+ value = [value];
39
+ }
40
+
41
+ return value.map(function (item, index) {
42
+ var collaborator = collaborators.find(function (collaborator) {
43
+ return collaborator.email === item;
44
+ }); // the collaborator can be not exist, because the row modified by third app
45
+
46
+ if (!collaborator) {
47
+ collaborator = {
48
+ name: item,
49
+ avatar_url: DefaultAvatar
50
+ };
51
+ }
52
+
53
+ return /*#__PURE__*/React.createElement(CollaboratorItem, {
54
+ key: index,
55
+ collaborator: collaborator
56
+ });
57
+ });
58
+ };
59
+
60
+ return _this;
61
+ }
62
+
63
+ _createClass(LastModifierFormatter, [{
64
+ key: "render",
65
+ value: function render() {
66
+ var _this$props2 = this.props,
67
+ containerClassName = _this$props2.containerClassName,
68
+ value = _this$props2.value;
69
+ var classname = cn('dtable-ui cell-formatter-container last-modified-formatter', containerClassName);
70
+
71
+ if (!value || Array.isArray(value) && value.length === 0) {
72
+ return /*#__PURE__*/React.createElement("div", {
73
+ className: classname
74
+ });
75
+ }
76
+
77
+ var collaborators = this.getCollaborators();
78
+ return /*#__PURE__*/React.createElement("div", {
79
+ className: classname
80
+ }, collaborators);
81
+ }
82
+ }]);
83
+
84
+ return LastModifierFormatter;
85
+ }(React.PureComponent);
86
+
87
+ export default LastModifierFormatter;
@@ -0,0 +1,27 @@
1
+ @import url('../css/cell-formatter.css');
2
+
3
+ .dtable-ui.link-formmatter {
4
+ display: inline-flex;
5
+ align-items: center;
6
+ overflow: hidden;
7
+ flex-wrap: nowrap;
8
+ }
9
+
10
+ .dtable-ui.link-formatter .link-item {
11
+ display: inline-flex;
12
+ height: 20px;
13
+ max-width: 230px;
14
+ padding: 0 8px 0 2px;
15
+ align-items: center;
16
+ font-size: 13px;
17
+ margin-right: 10px;
18
+ border-radius: 3px;
19
+ background: #eceff4;
20
+ cursor: pointer;
21
+ }
22
+
23
+ .dtable-ui.link-formatter .link-item .link-name {
24
+ overflow: hidden;
25
+ white-space: nowrap;
26
+ text-overflow: ellipsis;
27
+ }
@@ -0,0 +1,144 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
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 cn from 'astro-classname';
8
+ import * as CellTypes from '../constants/cell-types';
9
+ import { getNumberDisplayString, getDateDisplayString } from '../utils/value-format-utils';
10
+
11
+ // link value is get form parant's interface
12
+ var LinkFormatter = /*#__PURE__*/function (_React$Component) {
13
+ _inherits(LinkFormatter, _React$Component);
14
+
15
+ var _super = _createSuper(LinkFormatter);
16
+
17
+ function LinkFormatter(props) {
18
+ var _this;
19
+
20
+ _classCallCheck(this, LinkFormatter);
21
+
22
+ _this = _super.call(this, props);
23
+
24
+ _this.getLinkedCellValue = function (row) {
25
+ if (!row) return [];
26
+ var _this$props = _this.props,
27
+ column = _this$props.column,
28
+ currentTableId = _this$props.currentTableId,
29
+ linkMetaData = _this$props.linkMetaData;
30
+
31
+ var _ref = column.data || {},
32
+ link_id = _ref.link_id,
33
+ table_id = _ref.table_id,
34
+ other_table_id = _ref.other_table_id;
35
+
36
+ _this.linkID = link_id;
37
+ _this.tableID = currentTableId === table_id ? table_id : other_table_id;
38
+ _this.otherTableID = _this.tableID === table_id ? other_table_id : table_id;
39
+ return linkMetaData.getLinkedCellValue(_this.linkID, _this.tableID, _this.otherTableID, row._id);
40
+ };
41
+
42
+ _this.expandLinkedTableRow = function (row) {
43
+ var _this$props2 = _this.props,
44
+ enableOpenLinkedRow = _this$props2.enableOpenLinkedRow,
45
+ linkMetaData = _this$props2.linkMetaData;
46
+
47
+ if (enableOpenLinkedRow) {
48
+ linkMetaData.expandLinkedTableRow(row, _this.otherTableID);
49
+ }
50
+ };
51
+
52
+ _this.getDisplayValues = function () {
53
+ var _this$props3 = _this.props,
54
+ column = _this$props3.column,
55
+ linkMetaData = _this$props3.linkMetaData;
56
+ var rowIds = _this.state.value;
57
+
58
+ if (rowIds && Array.isArray(rowIds) && rowIds.length > 0) {
59
+ var linkedTable = linkMetaData.getLinkedTable(_this.otherTableID);
60
+ var linkedRows = linkMetaData.getLinkedRows(_this.otherTableID, rowIds);
61
+ var result = linkedRows.map(function (row, index) {
62
+ var displayColumnKey = column.data.display_column_key;
63
+
64
+ var displayValue = _this.getDisplayValue(linkedTable, row, displayColumnKey);
65
+
66
+ return /*#__PURE__*/React.createElement("div", {
67
+ key: index,
68
+ className: "link-item",
69
+ onClick: _this.expandLinkedTableRow.bind(_assertThisInitialized(_this), row)
70
+ }, /*#__PURE__*/React.createElement("div", {
71
+ className: "link-name"
72
+ }, displayValue));
73
+ });
74
+ return result;
75
+ }
76
+
77
+ return null;
78
+ };
79
+
80
+ _this.getDisplayValue = function (linkedTable, row, displayColumnKey) {
81
+ var value = row[displayColumnKey];
82
+ var linkedColumn = linkedTable.columns.find(function (column) {
83
+ return column.key === displayColumnKey;
84
+ });
85
+ var type = linkedColumn.type,
86
+ data = linkedColumn.data; // todo: improve
87
+
88
+ switch (type) {
89
+ case CellTypes.NUMBER:
90
+ {
91
+ return getNumberDisplayString(value, data);
92
+ }
93
+
94
+ case CellTypes.DATE:
95
+ {
96
+ var format = data.format;
97
+ return getDateDisplayString(value, format);
98
+ }
99
+
100
+ default:
101
+ return value;
102
+ }
103
+ };
104
+
105
+ _this.linkID = '';
106
+ _this.tableID = '';
107
+ _this.otherTableID = '';
108
+ _this.state = {
109
+ value: _this.getLinkedCellValue(props.row)
110
+ };
111
+ return _this;
112
+ }
113
+
114
+ _createClass(LinkFormatter, [{
115
+ key: "componentWillReceiveProps",
116
+ value: function componentWillReceiveProps(nextProps) {
117
+ var nextRow = nextProps.row;
118
+
119
+ if (nextRow._id !== this.props.row._id) {
120
+ this.setState({
121
+ value: this.getLinkedCellValue(nextRow)
122
+ });
123
+ }
124
+ }
125
+ }, {
126
+ key: "render",
127
+ value: function render() {
128
+ var containerClassName = this.props.containerClassName;
129
+ var classname = cn('dtable-ui cell-formatter-container link-formatter', containerClassName);
130
+ var displayValues = this.getDisplayValues();
131
+ return /*#__PURE__*/React.createElement("div", {
132
+ className: classname
133
+ }, displayValues);
134
+ }
135
+ }]);
136
+
137
+ return LinkFormatter;
138
+ }(React.Component);
139
+
140
+ LinkFormatter.defaultProps = {
141
+ enableOpenLinkedRow: false,
142
+ value: []
143
+ };
144
+ export default LinkFormatter;
@@ -0,0 +1,54 @@
1
+ /** loading **/
2
+ @-moz-keyframes loading {
3
+ 0% {
4
+ -moz-transform: rotate(0deg);
5
+ transform: rotate(0deg);
6
+ }
7
+ 100% {
8
+ -moz-transform: rotate(360deg);
9
+ transform: rotate(360deg);
10
+ }
11
+ }
12
+
13
+ @-webkit-keyframes loading {
14
+ 0% {
15
+ -webkit-transform: rotate(0deg);
16
+ transform: rotate(0deg);
17
+ }
18
+ 100% {
19
+ -webkit-transform: rotate(360deg);
20
+ transform: rotate(360deg);
21
+ }
22
+ }
23
+
24
+ @keyframes loading {
25
+ 0% {
26
+ -moz-transform: rotate(0deg);
27
+ -ms-transform: rotate(0deg);
28
+ -webkit-transform: rotate(0deg);
29
+ transform: rotate(0deg);
30
+ }
31
+ 100% {
32
+ -moz-transform: rotate(360deg);
33
+ -ms-transform: rotate(360deg);
34
+ -webkit-transform: rotate(360deg);
35
+ transform: rotate(360deg);
36
+ }
37
+ }
38
+
39
+ .loading-icon {
40
+ display: inline-block;
41
+ width: 20px;
42
+ height: 20px;
43
+ border: 2px solid #eee;
44
+ border-left-color: #aaa;
45
+ border-radius: 50%;
46
+ -moz-animation: loading 0.9s infinite linear;
47
+ -webkit-animation: loading 0.9s infinite linear;
48
+ animation: loading 0.9s infinite linear;
49
+ }
50
+
51
+ .loading-tip {
52
+ display: block;
53
+ margin: 0 auto;
54
+ }
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import './index.css';
3
+ export default function Loading() {
4
+ return /*#__PURE__*/React.createElement("span", {
5
+ className: "loading-icon loading-tip"
6
+ });
7
+ }