dtable-ui-component 0.1.75 → 0.1.76

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 (163) hide show
  1. package/README.md +20 -2
  2. package/lib/AutoNumberFormatter/index.css +1 -0
  3. package/{es/components/cell-formatter/auto-number-formatter.js → lib/AutoNumberFormatter/index.js} +1 -0
  4. package/lib/ButtonFormatter/index.css +13 -0
  5. package/{es/components/cell-formatter/button-formatter.js → lib/ButtonFormatter/index.js} +1 -0
  6. package/lib/CTimeFormatter/index.css +1 -0
  7. package/{es/components/cell-formatter/ctime-formatter.js → lib/CTimeFormatter/index.js} +1 -0
  8. package/lib/CheckboxEditor/index.js +104 -0
  9. package/lib/CheckboxFormatter/index.css +1 -0
  10. package/{es/components/cell-formatter/checkbox-formatter.js → lib/CheckboxFormatter/index.js} +1 -0
  11. package/lib/CollaboratorEditor/index.css +48 -0
  12. package/lib/CollaboratorEditor/index.js +237 -0
  13. package/lib/CollaboratorEditor/mb-collaborator-editor-popover/index.css +86 -0
  14. package/lib/CollaboratorEditor/mb-collaborator-editor-popover/index.js +178 -0
  15. package/lib/CollaboratorEditor/pc-collaborator-editor-popover/index.css +1 -0
  16. package/lib/CollaboratorEditor/pc-collaborator-editor-popover/index.js +110 -0
  17. package/lib/CollaboratorFormatter/index.css +1 -0
  18. package/{es/components/cell-formatter/collaborator-formatter.js → lib/CollaboratorFormatter/index.js} +3 -2
  19. package/lib/CollaboratorItem/index.css +49 -0
  20. package/{es/components/common/collaborator-item.js → lib/CollaboratorItem/index.js} +1 -0
  21. package/lib/CreatorFormatter/index.css +1 -0
  22. package/{es/components/cell-formatter/creator-formatter.js → lib/CreatorFormatter/index.js} +3 -2
  23. package/lib/DateEditor/index.css +4 -0
  24. package/lib/DateEditor/index.js +152 -0
  25. package/{es/css → lib/DateEditor/mb-date-editor-popover}/custom-rc-calendar.css +0 -0
  26. package/lib/DateEditor/mb-date-editor-popover/index.css +45 -0
  27. package/lib/DateEditor/mb-date-editor-popover/index.js +245 -0
  28. package/lib/DateEditor/pc-date-editor-popover.js +142 -0
  29. package/lib/DateFormatter/index.css +1 -0
  30. package/{es/components/cell-formatter/date-formatter.js → lib/DateFormatter/index.js} +2 -1
  31. package/lib/DurationFormatter/index.css +1 -0
  32. package/{es/components/cell-formatter/duration-formatter.js → lib/DurationFormatter/index.js} +2 -1
  33. package/{es/components/common/edit-editor-button.js → lib/EditEditorButton/index.js} +0 -0
  34. package/lib/EmailFormatter/index.css +5 -0
  35. package/{es/components/cell-formatter/email-formatter.js → lib/EmailFormatter/index.js} +1 -0
  36. package/lib/FileEditor/index.js +46 -0
  37. package/lib/FileEditor/pc-files-addition/index.js +0 -0
  38. package/lib/FileEditor/pc-files-addition/pc-file-uploaded-item.js +0 -0
  39. package/lib/FileEditor/pc-files-preview/index.js +0 -0
  40. package/lib/FileEditor/pc-files-preview/pc-file-item-preview.js +0 -0
  41. package/lib/FileFormatter/index.css +29 -0
  42. package/{es/components/cell-formatter/file-formatter.js → lib/FileFormatter/index.js} +2 -1
  43. package/{es/assets/images → lib/FileItemFormatter/assets}/file/192/excel.png +0 -0
  44. package/{es/assets/images → lib/FileItemFormatter/assets}/file/192/file.png +0 -0
  45. package/{es/assets/images → lib/FileItemFormatter/assets}/file/192/music.png +0 -0
  46. package/{es/assets/images → lib/FileItemFormatter/assets}/file/192/pdf.png +0 -0
  47. package/{es/assets/images → lib/FileItemFormatter/assets}/file/192/pic.png +0 -0
  48. package/{es/assets/images → lib/FileItemFormatter/assets}/file/192/ppt.png +0 -0
  49. package/{es/assets/images → lib/FileItemFormatter/assets}/file/192/txt.png +0 -0
  50. package/{es/assets/images → lib/FileItemFormatter/assets}/file/192/video.png +0 -0
  51. package/{es/assets/images → lib/FileItemFormatter/assets}/file/192/word.png +0 -0
  52. package/{es/assets/images → lib/FileItemFormatter/assets}/file/24/excel.png +0 -0
  53. package/{es/assets/images → lib/FileItemFormatter/assets}/file/24/file.png +0 -0
  54. package/{es/assets/images → lib/FileItemFormatter/assets}/file/24/music.png +0 -0
  55. package/{es/assets/images → lib/FileItemFormatter/assets}/file/24/pdf.png +0 -0
  56. package/{es/assets/images → lib/FileItemFormatter/assets}/file/24/pic.png +0 -0
  57. package/{es/assets/images → lib/FileItemFormatter/assets}/file/24/ppt.png +0 -0
  58. package/{es/assets/images → lib/FileItemFormatter/assets}/file/24/txt.png +0 -0
  59. package/{es/assets/images → lib/FileItemFormatter/assets}/file/24/video.png +0 -0
  60. package/{es/assets/images → lib/FileItemFormatter/assets}/file/24/word.png +0 -0
  61. package/{es/assets/images → lib/FileItemFormatter/assets}/folder/folder-192.png +0 -0
  62. package/{es/assets/images → lib/FileItemFormatter/assets}/folder/folder-24.png +0 -0
  63. package/{es/components/cell-formatter/widgets/file-item-formatter.js → lib/FileItemFormatter/index.js} +2 -2
  64. package/lib/FileItemFormatter/utils.js +72 -0
  65. package/{es/components/file-uploader → lib/FileUploader}/index.js +0 -0
  66. package/{es/utils → lib/FormulaFormatter}/cell-value-validator.js +1 -2
  67. package/lib/FormulaFormatter/index.css +19 -0
  68. package/{es/components/cell-formatter/formula-formatter.js → lib/FormulaFormatter/index.js} +7 -8
  69. package/{es/utils/column-utils.js → lib/FormulaFormatter/utils.js} +5 -1
  70. package/lib/GeolocationFormatter/index.css +1 -0
  71. package/{es/components/cell-formatter/geolocation-formatter.js → lib/GeolocationFormatter/index.js} +2 -1
  72. package/lib/HtmlLongTextFormatter/index.css +63 -0
  73. package/{es/components/cell-formatter/widgets/long-text-formatter/html-long-text-formatter.js → lib/HtmlLongTextFormatter/index.js} +5 -2
  74. package/{es/utils → lib/HtmlLongTextFormatter}/markdown2html.js +0 -0
  75. package/{es/utils → lib/HtmlLongTextFormatter}/unified/index.js +1 -0
  76. package/{es/utils → lib/HtmlLongTextFormatter}/vfile/core.js +1 -0
  77. package/{es/utils → lib/HtmlLongTextFormatter}/vfile/index.js +0 -0
  78. package/{es/components/common → lib/ImageFormatter}/images-lazy-load.js +2 -2
  79. package/lib/ImageFormatter/index.css +34 -0
  80. package/{es/components/cell-formatter/image-formatter.js → lib/ImageFormatter/index.js} +4 -3
  81. package/lib/ImageFormatter/utils.js +7 -0
  82. package/{es/css/image-previewer-ligntbox.css → lib/ImagePreviewerLightbox/index.css} +0 -0
  83. package/{es/components/cell-formatter/widgets/image-previewer-lightbox.js → lib/ImagePreviewerLightbox/index.js} +3 -3
  84. package/lib/ImagePreviewerLightbox/utils.js +8 -0
  85. package/lib/LastModifierFormatter/index.css +1 -0
  86. package/{es/components/cell-formatter/last-modifier-formatter.js → lib/LastModifierFormatter/index.js} +5 -4
  87. package/lib/LinkEditor/index.css +9 -0
  88. package/lib/LinkEditor/index.js +304 -0
  89. package/{es/components/common → lib/LinkEditor}/link-editor-option.js +0 -0
  90. package/lib/LinkEditor/mb-link-editor-popover/index.css +85 -0
  91. package/lib/LinkEditor/mb-link-editor-popover/index.js +171 -0
  92. package/lib/LinkEditor/pc-link-editor-popover/index.css +63 -0
  93. package/lib/LinkEditor/pc-link-editor-popover/index.js +115 -0
  94. package/lib/LinkFormatter/index.css +27 -0
  95. package/{es/components/cell-formatter/link-formatter.js → lib/LinkFormatter/index.js} +2 -2
  96. package/{es/css/loading.css → lib/Loading/index.css} +0 -0
  97. package/{es/components/loading.js → lib/Loading/index.js} +1 -1
  98. package/{es/components/cell-formatter/long-text-formatter.js → lib/LongTextFormatter/index.js} +4 -6
  99. package/{es/components/common/mobile/mb-editor-header.js → lib/MBEditorHeader/index.js} +0 -0
  100. package/lib/MTimeFormatter/index.css +1 -0
  101. package/{es/components/cell-formatter/mtime-formatter.js → lib/MTimeFormatter/index.js} +1 -0
  102. package/{es/components/common/modal-portal.js → lib/ModalPortal/index.js} +0 -0
  103. package/lib/MultipleSelectEditor/index.css +9 -0
  104. package/lib/MultipleSelectEditor/index.js +236 -0
  105. package/lib/MultipleSelectFormatter/index.css +1 -0
  106. package/{es/components/cell-formatter/multiple-select-formatter.js → lib/MultipleSelectFormatter/index.js} +2 -1
  107. package/lib/NumberEditor/index.js +154 -0
  108. package/lib/NumberFormatter/index.css +1 -0
  109. package/{es/components/cell-formatter/number-formatter.js → lib/NumberFormatter/index.js} +2 -1
  110. package/lib/RateFormatter/index.css +1 -0
  111. package/{es/components/cell-formatter/rate-formatter.js → lib/RateFormatter/index.js} +1 -0
  112. package/{es/components/common/select-item.js → lib/SelectItem/index.js} +0 -0
  113. package/lib/SimpleLongTextFormatter/index.css +63 -0
  114. package/{es/components/cell-formatter/widgets/long-text-formatter/simple-long-text-formatter.js → lib/SimpleLongTextFormatter/index.js} +5 -2
  115. package/{es/utils → lib/SimpleLongTextFormatter}/normalize-long-text-value.js +3 -3
  116. package/lib/SingleSelectEditor/index.css +9 -0
  117. package/lib/SingleSelectEditor/index.js +201 -0
  118. package/lib/SingleSelectFormatter/index.css +1 -0
  119. package/{es/components/cell-formatter/single-select-formatter.js → lib/SingleSelectFormatter/index.js} +2 -1
  120. package/lib/TextEditor/index.js +122 -0
  121. package/lib/TextFormatter/index.css +1 -0
  122. package/{es/components/cell-formatter/text-formatter.js → lib/TextFormatter/index.js} +1 -0
  123. package/lib/UrlFormatter/index.css +5 -0
  124. package/{es/components/cell-formatter/url-formatter.js → lib/UrlFormatter/index.js} +1 -0
  125. package/{es → lib}/assets/images/avatar/default_avatar.png +0 -0
  126. package/{es/components/cell-factory/cell-formatter-factory.js → lib/cellFormatterFactory/index.js} +3 -3
  127. package/{es → lib}/constants/cell-types.js +0 -0
  128. package/lib/constants/index.js +49 -0
  129. package/lib/css/cell-editor.css +6 -0
  130. package/lib/css/cell-formatter.css +4 -0
  131. package/lib/css/mb-cell-editor.css +55 -0
  132. package/lib/formatterConfig/index.js +31 -0
  133. package/lib/index.js +43 -0
  134. package/{es → lib}/lang/index.js +0 -0
  135. package/{es → lib}/locals/de.js +0 -0
  136. package/{es → lib}/locals/en.js +0 -0
  137. package/{es → lib}/locals/fr.js +0 -0
  138. package/{es → lib}/locals/zh-CN.js +0 -0
  139. package/lib/select-editor/index.js +4 -0
  140. package/lib/select-editor/mb-select-editor-popover/index.css +127 -0
  141. package/lib/select-editor/mb-select-editor-popover/index.js +231 -0
  142. package/lib/select-editor/pc-select-editor-popover/index.css +72 -0
  143. package/lib/select-editor/pc-select-editor-popover/index.js +144 -0
  144. package/{es/components/common → lib/select-editor}/select-editor-option.js +0 -0
  145. package/{es/components/toast → lib/toaster}/alert.js +0 -0
  146. package/{es/components/toast → lib/toaster}/index.js +0 -0
  147. package/{es/components/toast → lib/toaster}/toast.js +0 -0
  148. package/{es/components/toast → lib/toaster}/toastManager.js +0 -0
  149. package/{es/components/toast → lib/toaster}/toaster.js +0 -0
  150. package/lib/utils/editor-utils.js +71 -0
  151. package/{es → lib}/utils/number-precision.js +1 -0
  152. package/lib/utils/utils.js +25 -0
  153. package/{es → lib}/utils/value-format-utils.js +3 -2
  154. package/package.json +8 -8
  155. package/es/app.css +0 -20
  156. package/es/app.js +0 -91
  157. package/es/components/cell-formatter/formatter-config.js +0 -31
  158. package/es/components/cell-formatter/index.js +0 -27
  159. package/es/constants/index.js +0 -48
  160. package/es/css/cell-editor.css +0 -614
  161. package/es/css/cell-formatter.css +0 -247
  162. package/es/index.js +0 -6
  163. package/es/utils/utils.js +0 -116
@@ -2,8 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
 
3
3
  var _validators;
4
4
 
5
- import * as CellType from '../constants/cell-types';
6
- import { FORMULA_RESULT_TYPE } from '../constants';
5
+ import { FORMULA_RESULT_TYPE, CellType } from '../constants';
7
6
 
8
7
  var numberValidator = function numberValidator(value) {
9
8
  return (value || value === 0) && Object.prototype.toString.call(value) === '[object Number]';
@@ -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
+ }
@@ -4,14 +4,13 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
4
  import _inherits from "@babel/runtime/helpers/esm/inherits";
5
5
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
6
6
  import React from 'react';
7
- import { FORMULA_RESULT_TYPE } from '../../constants';
8
- import cellFormatterFactory from '../cell-factory/cell-formatter-factory';
9
- import * as CellType from '../../constants/cell-types';
10
- import { isFunction } from '../../utils/utils';
11
- import TextFormatter from './text-formatter';
12
- import { isArrayFormalColumn, isSimpleCellFormatter } from '../../utils/column-utils';
13
- import cellValueValidator from '../../utils/cell-value-validator';
14
- import { getFormulaDisplayString } from '../../utils/value-format-utils';
7
+ import { FORMULA_RESULT_TYPE, CellType } from '../constants';
8
+ import cellFormatterFactory from '../cellFormatterFactory';
9
+ import TextFormatter from '../TextFormatter';
10
+ import { isArrayFormalColumn, isSimpleCellFormatter, isFunction } from './utils';
11
+ import cellValueValidator from './cell-value-validator';
12
+ import { getFormulaDisplayString } from '../utils/value-format-utils';
13
+ import './index.css';
15
14
 
16
15
  var FormulaFormatter = /*#__PURE__*/function (_React$Component) {
17
16
  _inherits(FormulaFormatter, _React$Component);
@@ -4,4 +4,8 @@ export function isSimpleCellFormatter(type) {
4
4
  }
5
5
  export function isArrayFormalColumn(columnType) {
6
6
  return ARRAY_FORMAL_COLUMNS.includes(columnType);
7
- }
7
+ }
8
+ export var isFunction = function isFunction(functionToCheck) {
9
+ var getType = {};
10
+ return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
11
+ };
@@ -0,0 +1 @@
1
+ @import url('../css/cell-formatter.css');
@@ -4,7 +4,8 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React from 'react';
6
6
  import cn from 'astro-classname';
7
- import { getGeolocationDisplayString } from '../../utils/value-format-utils';
7
+ import { getGeolocationDisplayString } from '../utils/value-format-utils';
8
+ import './index.css';
8
9
 
9
10
  var GeolocationFormatter = /*#__PURE__*/function (_React$Component) {
10
11
  _inherits(GeolocationFormatter, _React$Component);
@@ -0,0 +1,63 @@
1
+ @import url('../css/cell-formatter.css');
2
+
3
+ .dtable-ui.long-text-formatter {
4
+ display: flex;
5
+ align-items: center;
6
+ height: 28px;
7
+ overflow: hidden;
8
+ text-overflow: ellipsis;
9
+ white-space: nowrap;
10
+ }
11
+
12
+ .dtable-ui.long-text-formatter.article {
13
+ display: block;
14
+ height: auto;
15
+ overflow: auto;
16
+ }
17
+
18
+ .dtable-ui.long-text-formatter .long-text-links,
19
+ .dtable-ui.long-text-formatter .long-text-check-list {
20
+ display: inline-block;
21
+ height: 20px;
22
+ padding: 2px;
23
+ margin: 4px;
24
+ color: #9c9c9c;
25
+ background-color: #f0f0f0;
26
+ border-radius: 3px;
27
+ line-height: 16px;
28
+ }
29
+
30
+ .dtable-ui.long-text-formatter .long-text-check-list .dtable-font,
31
+ .dtable-ui.long-text-formatter .long-text-links .dtable-font {
32
+ margin-right: 4px;
33
+ font-size: 12px;
34
+ }
35
+
36
+ .dtable-ui.long-text-formatter .long-text-check-list .long-text-check-list-completed {
37
+ color: #61BD4F;
38
+ }
39
+
40
+ .dtable-ui.long-text-formatter .long-text-images {
41
+ margin-right: -10px;
42
+ }
43
+
44
+ .dtable-ui.long-text-formatter .long-text-images img {
45
+ max-width: 28px;
46
+ max-height: 28px;
47
+ border: 1px solid #f0f0f0;
48
+ box-sizing: border-box;
49
+ border-radius: 3px;
50
+ }
51
+
52
+ .dtable-ui.long-text-formatter .long-text-images .image-number {
53
+ display: inline-block;
54
+ min-width: 14px;
55
+ padding: 0 3px;
56
+ line-height: 14px;
57
+ font-style: normal;
58
+ font-size: 12px;
59
+ border-radius: 6px;
60
+ background-color: #999;
61
+ color: #fff;
62
+ transform: translate(-50%, 9px) scale(0.8);
63
+ }
@@ -3,7 +3,9 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
3
  import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React, { Component } from 'react';
6
- import { processor } from '../../../../utils/markdown2html';
6
+ import cn from 'astro-classname';
7
+ import { processor } from './markdown2html';
8
+ import './index.css';
7
9
 
8
10
  var HtmlLongTextFormatter = /*#__PURE__*/function (_Component) {
9
11
  _inherits(HtmlLongTextFormatter, _Component);
@@ -79,7 +81,8 @@ var HtmlLongTextFormatter = /*#__PURE__*/function (_Component) {
79
81
  key: "render",
80
82
  value: function render() {
81
83
  var innerHtml = this.state.innerHtml;
82
- var className = this.props.className;
84
+ var containerClassName = this.props.containerClassName;
85
+ var className = cn('dtable-ui cell-formatter-container long-text-formatter', containerClassName);
83
86
  if (!innerHtml) return null;
84
87
  return /*#__PURE__*/React.createElement("div", {
85
88
  className: "".concat(className, " article"),
@@ -1,3 +1,4 @@
1
+ // eslint-disable-next-line
1
2
  'use strict';
2
3
  /* Dependencies. */
3
4
 
@@ -1,3 +1,4 @@
1
+ // eslint-disable-next-line
1
2
  'use strict';
2
3
 
3
4
  var path = require('path');
@@ -3,8 +3,8 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
3
  import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React from 'react';
6
- import Loading from '../loading';
7
- import { getImageThumbnailUrl } from '../../utils/utils';
6
+ import Loading from '../Loading';
7
+ import { getImageThumbnailUrl } from './utils';
8
8
 
9
9
  var ImagesLazyLoad = /*#__PURE__*/function (_React$Component) {
10
10
  _inherits(ImagesLazyLoad, _React$Component);
@@ -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
+ }
@@ -4,9 +4,10 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React, { Fragment } from 'react';
6
6
  import cn from 'astro-classname';
7
- import ImagesLazyLoad from '../common/images-lazy-load';
8
- import { getImageThumbnailUrl } from '../../utils/utils';
9
- import ImagePreviewerLightbox from './widgets/image-previewer-lightbox';
7
+ import ImagesLazyLoad from './images-lazy-load';
8
+ import { getImageThumbnailUrl } from './utils';
9
+ import ImagePreviewerLightbox from '../ImagePreviewerLightbox';
10
+ import './index.css';
10
11
 
11
12
  var ImageFormatter = /*#__PURE__*/function (_React$Component) {
12
13
  _inherits(ImageFormatter, _React$Component);
@@ -0,0 +1,7 @@
1
+ export var getImageThumbnailUrl = function getImageThumbnailUrl(url, server) {
2
+ if (server && url.indexOf(server) > -1) {
3
+ return url.replace('/workspace', '/thumbnail/workspace') + '?size=256';
4
+ }
5
+
6
+ return url;
7
+ };
@@ -1,10 +1,10 @@
1
1
  import React, { Fragment } from 'react';
2
2
  import MediaQuery from 'react-responsive';
3
- import ModalPortal from '../../common/modal-portal';
3
+ import ModalPortal from '../ModalPortal';
4
4
  import Lightbox from '@seafile/react-image-lightbox';
5
- import { checkSVGImage, isInternalImg } from '../../../utils/utils';
5
+ import { checkSVGImage, isInternalImg } from './utils';
6
6
  import '@seafile/react-image-lightbox/style.css';
7
- import '../../../css/image-previewer-ligntbox.css';
7
+ import './index.css';
8
8
 
9
9
  function ImagePreviewerLightbox(props) {
10
10
  var imageItems = props.imageItems,
@@ -0,0 +1,8 @@
1
+ export var isInternalImg = function isInternalImg(url) {
2
+ if (!url) return;
3
+ return url.indexOf(window.dtable.server) > -1;
4
+ };
5
+ export var checkSVGImage = function checkSVGImage(url) {
6
+ if (!url) return false;
7
+ return url.substr(-4).toLowerCase() === '.svg';
8
+ };
@@ -0,0 +1 @@
1
+ @import url('../css/cell-formatter.css');
@@ -4,14 +4,15 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
4
4
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React from 'react';
6
6
  import cn from 'astro-classname';
7
- import ColloboratorItem from '../common/collaborator-item';
8
- import DefaultAvatar from '../../assets/images/avatar/default_avatar.png';
7
+ import CollaboratorItem from '../CollaboratorItem';
8
+ import DefaultAvatar from '../assets/images/avatar/default_avatar.png';
9
+ import './index.css';
9
10
 
10
11
  // there will be there conditions
11
12
  // 1 value is not exist, typeof value is array, but it's length is 0
12
13
  // 2 value is exist, but can't find in collaborators
13
14
  // 3 value is exist, typeof value is a string
14
- // 4 vlaue is exist, typeof value is array
15
+ // 4 value is exist, typeof value is array
15
16
  var LastModifierFormatter = /*#__PURE__*/function (_React$PureComponent) {
16
17
  _inherits(LastModifierFormatter, _React$PureComponent);
17
18
 
@@ -49,7 +50,7 @@ var LastModifierFormatter = /*#__PURE__*/function (_React$PureComponent) {
49
50
  };
50
51
  }
51
52
 
52
- return /*#__PURE__*/React.createElement(ColloboratorItem, {
53
+ return /*#__PURE__*/React.createElement(CollaboratorItem, {
53
54
  key: index,
54
55
  collaborator: collaborator
55
56
  });
@@ -0,0 +1,9 @@
1
+ .dtable-ui-link-editor {
2
+ position: relative;
3
+ }
4
+
5
+ .dtable-ui-link-editor-container {
6
+ display: inline-block;
7
+ height: 30px;
8
+ padding: 0 10px;
9
+ }
@@ -0,0 +1,304 @@
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 MediaQuery from 'react-responsive';
7
+ import { getLocale } from '../lang';
8
+ import { CellType } from '../constants';
9
+ import { getNumberDisplayString, getDateDisplayString } from '../utils/value-format-utils';
10
+ import EditEditorButton from '../EditEditorButton';
11
+ import LinkEditorOption from './link-editor-option';
12
+ import PCLinkEditorPopover from './pc-link-editor-popover';
13
+ import MBLinkEditorPopover from './mb-link-editor-popover';
14
+ import './index.css';
15
+
16
+ var LinkEditor = /*#__PURE__*/function (_React$Component) {
17
+ _inherits(LinkEditor, _React$Component);
18
+
19
+ var _super = _createSuper(LinkEditor);
20
+
21
+ function LinkEditor(props) {
22
+ var _this;
23
+
24
+ _classCallCheck(this, LinkEditor);
25
+
26
+ _this = _super.call(this, props);
27
+
28
+ _this.onDocumentToggle = function (e) {
29
+ if (_this.editorContainer !== e.target && !_this.editorContainer.contains(e.target)) {
30
+ _this.onClosePopover();
31
+ }
32
+ };
33
+
34
+ _this.getLinkedCellValue = function () {
35
+ var _this$props = _this.props,
36
+ row = _this$props.row,
37
+ column = _this$props.column,
38
+ linkMetaData = _this$props.linkMetaData;
39
+
40
+ var _ref = column.data || {},
41
+ link_id = _ref.link_id,
42
+ table_id = _ref.table_id,
43
+ other_table_id = _ref.other_table_id;
44
+
45
+ _this.linkId = link_id;
46
+ _this.tableId = table_id;
47
+ _this.otherTableId = other_table_id;
48
+ return linkMetaData.getLinkedCellValue(_this.linkId, _this.tableId, _this.otherTableId, row._id);
49
+ };
50
+
51
+ _this.formatLinkedValuesToOptions = function () {
52
+ var _this$props2 = _this.props,
53
+ column = _this$props2.column,
54
+ linkMetaData = _this$props2.linkMetaData;
55
+ var rowIds = _this.state.newValue;
56
+
57
+ if (rowIds && Array.isArray(rowIds) && rowIds.length > 0) {
58
+ var linkedRows = linkMetaData.getLinkedRows(_this.otherTableId, rowIds);
59
+ var linkedTable = linkMetaData.getLinkedTable(_this.otherTableId);
60
+ return linkedRows.map(function (linkedRow) {
61
+ var displayColumnKey = column.data.display_column_key; // format value to display
62
+
63
+ var displayValue = _this.getDisplayValue(linkedTable, linkedRow, displayColumnKey);
64
+
65
+ return {
66
+ id: linkedRow._id,
67
+ name: displayValue
68
+ };
69
+ });
70
+ }
71
+
72
+ return [];
73
+ };
74
+
75
+ _this.getDisplayValue = function (linkedTable, linkedRow, displayColumnKey) {
76
+ var value = linkedRow[displayColumnKey];
77
+ var linkedColumn = linkedTable.columns.find(function (column) {
78
+ return column.key === displayColumnKey;
79
+ });
80
+ var type = linkedColumn.type,
81
+ data = linkedColumn.data;
82
+
83
+ switch (type) {
84
+ case CellType.NUMBER:
85
+ {
86
+ return getNumberDisplayString(value, data);
87
+ }
88
+
89
+ case CellType.DATE:
90
+ {
91
+ var format = data.format;
92
+ return getDateDisplayString(value, format);
93
+ }
94
+
95
+ default:
96
+ return value;
97
+ }
98
+ };
99
+
100
+ _this.getAvailableLinkedOptions = function () {
101
+ var _this$props3 = _this.props,
102
+ column = _this$props3.column,
103
+ linkMetaData = _this$props3.linkMetaData;
104
+ var displayColumnKey = column.data.display_column_key;
105
+ var linkedTable = linkMetaData.getLinkedTable(_this.otherTableId);
106
+ var availableRows = linkedTable.rows.filter(function (row) {
107
+ return !!row[displayColumnKey];
108
+ });
109
+ var availableOptions = availableRows.map(function (row) {
110
+ var displayValue = _this.getDisplayValue(linkedTable, row, displayColumnKey);
111
+
112
+ return {
113
+ id: row._id,
114
+ name: displayValue
115
+ };
116
+ });
117
+ return availableOptions;
118
+ };
119
+
120
+ _this.onCommit = function (newValue) {// nothing todo
121
+ };
122
+
123
+ _this.onAddOptionToggle = function (event) {
124
+ event.nativeEvent.stopImmediatePropagation();
125
+ event.stopPropagation();
126
+
127
+ if (_this.props.isReadOnly) {
128
+ return;
129
+ }
130
+
131
+ var isPopoverShow = !_this.state.isPopoverShow;
132
+
133
+ if (isPopoverShow) {
134
+ var popoverPosition = _this.caculatePopoverPosition();
135
+
136
+ _this.setState({
137
+ isPopoverShow: isPopoverShow,
138
+ popoverPosition: popoverPosition
139
+ });
140
+ } else {
141
+ _this.setState({
142
+ isPopoverShow: isPopoverShow
143
+ });
144
+ }
145
+ };
146
+
147
+ _this.onOptionItemToggle = function (option) {
148
+ var _this$props4 = _this.props,
149
+ row = _this$props4.row,
150
+ linkMetaData = _this$props4.linkMetaData;
151
+
152
+ var newValue = _this.state.newValue.slice();
153
+
154
+ var optionIndex = newValue.findIndex(function (option_id) {
155
+ return option_id === option.id;
156
+ });
157
+
158
+ if (optionIndex !== -1) {
159
+ newValue.splice(optionIndex, 1);
160
+ linkMetaData.removeLink(_this.linkId, _this.tableId, _this.otherTableId, row._id, option.id);
161
+ } else {
162
+ newValue.push(option.id);
163
+ linkMetaData.addLink(_this.linkId, _this.tableId, _this.otherTableId, row._id, option.id);
164
+ }
165
+
166
+ _this.setState({
167
+ newValue: newValue
168
+ });
169
+ };
170
+
171
+ _this.onDeleteOption = function (option) {
172
+ var _this$props5 = _this.props,
173
+ row = _this$props5.row,
174
+ linkMetaData = _this$props5.linkMetaData;
175
+
176
+ var newValue = _this.state.newValue.slice();
177
+
178
+ var optionIndex = newValue.findIndex(function (option_id) {
179
+ return option_id === option.id;
180
+ });
181
+ newValue.splice(optionIndex, 1);
182
+
183
+ _this.setState({
184
+ newValue: newValue
185
+ }, function () {
186
+ linkMetaData.removeLink(_this.linkId, _this.tableId, _this.otherTableId, row._id, option.id);
187
+ });
188
+ };
189
+
190
+ _this.caculatePopoverPosition = function () {
191
+ var POPOVER_MAX_HEIGHT = 200;
192
+ var innerHeight = window.innerHeight;
193
+
194
+ var _this$editor$getClien = _this.editor.getClientRects()[0],
195
+ top = _this$editor$getClien.top,
196
+ height = _this$editor$getClien.height;
197
+
198
+ var isBelow = innerHeight - (top + height) > POPOVER_MAX_HEIGHT;
199
+ var position = {
200
+ top: height + 1,
201
+ left: 0
202
+ };
203
+
204
+ if (!isBelow) {
205
+ var bottom = height + 1;
206
+ position = {
207
+ bottom: bottom,
208
+ left: 0
209
+ };
210
+ }
211
+
212
+ return position;
213
+ };
214
+
215
+ _this.onClosePopover = function () {
216
+ _this.setState({
217
+ isPopoverShow: false
218
+ });
219
+ };
220
+
221
+ _this.setEditorContainerRef = function (editorContainer) {
222
+ _this.editorContainer = editorContainer;
223
+ };
224
+
225
+ _this.setEditorRef = function (editor) {
226
+ _this.editor = editor;
227
+ };
228
+
229
+ _this.linkId = '';
230
+ _this.tableId = '';
231
+ _this.otherTableId = '';
232
+ _this.state = {
233
+ newValue: _this.getLinkedCellValue(),
234
+ isPopoverShow: false,
235
+ popoverPosition: {}
236
+ };
237
+ return _this;
238
+ }
239
+
240
+ _createClass(LinkEditor, [{
241
+ key: "componentDidMount",
242
+ value: function componentDidMount() {
243
+ document.addEventListener('click', this.onDocumentToggle);
244
+ }
245
+ }, {
246
+ key: "componentWillUnmount",
247
+ value: function componentWillUnmount() {
248
+ document.removeEventListener('click', this.onDocumentToggle);
249
+ }
250
+ }, {
251
+ key: "render",
252
+ value: function render() {
253
+ var _this2 = this;
254
+
255
+ var isReadOnly = this.props.isReadOnly;
256
+ var _this$state = this.state,
257
+ isPopoverShow = _this$state.isPopoverShow,
258
+ popoverPosition = _this$state.popoverPosition;
259
+ var options = this.getAvailableLinkedOptions();
260
+ var selectedOptions = this.formatLinkedValuesToOptions();
261
+ var isShowRemoveIcon = !isReadOnly;
262
+ return /*#__PURE__*/React.createElement("div", {
263
+ ref: this.setEditorContainerRef,
264
+ className: "cell-editor dtable-ui-link-editor"
265
+ }, /*#__PURE__*/React.createElement("div", {
266
+ ref: this.setEditorRef,
267
+ className: "dtable-ui-link-editor-container",
268
+ onClick: this.onAddOptionToggle
269
+ }, selectedOptions.length === 0 && /*#__PURE__*/React.createElement(EditEditorButton, {
270
+ text: getLocale('Add_an_option')
271
+ }), selectedOptions.length !== 0 && selectedOptions.map(function (option) {
272
+ return /*#__PURE__*/React.createElement(LinkEditorOption, {
273
+ key: option.id,
274
+ option: option,
275
+ isShowRemoveIcon: isShowRemoveIcon,
276
+ onDeleteLinkOption: _this2.onDeleteOption
277
+ });
278
+ })), isPopoverShow && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(MediaQuery, {
279
+ query: "(min-width: 768px)"
280
+ }, /*#__PURE__*/React.createElement(PCLinkEditorPopover, {
281
+ popoverPosition: popoverPosition,
282
+ options: options,
283
+ selectedOptions: selectedOptions,
284
+ onOptionItemToggle: this.onOptionItemToggle
285
+ })), /*#__PURE__*/React.createElement(MediaQuery, {
286
+ query: "(max-width: 767.8px)"
287
+ }, /*#__PURE__*/React.createElement(MBLinkEditorPopover, {
288
+ isReadOnly: this.props.isReadOnly,
289
+ value: this.state.newValue,
290
+ column: this.props.column,
291
+ options: options,
292
+ onOptionItemToggle: this.onOptionItemToggle,
293
+ onClosePopover: this.onClosePopover
294
+ }))));
295
+ }
296
+ }]);
297
+
298
+ return LinkEditor;
299
+ }(React.Component);
300
+
301
+ LinkEditor.defaultProps = {
302
+ isReadOnly: false
303
+ };
304
+ export default LinkEditor;