dtable-ui-component 0.1.79-beta → 0.1.82-beta
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.
- package/es/app.css +20 -0
- package/es/app.js +91 -0
- package/es/assets/images/avatar/default_avatar.png +0 -0
- package/es/assets/images/file/192/excel.png +0 -0
- package/es/assets/images/file/192/file.png +0 -0
- package/es/assets/images/file/192/music.png +0 -0
- package/es/assets/images/file/192/pdf.png +0 -0
- package/es/assets/images/file/192/pic.png +0 -0
- package/es/assets/images/file/192/ppt.png +0 -0
- package/es/assets/images/file/192/txt.png +0 -0
- package/es/assets/images/file/192/video.png +0 -0
- package/es/assets/images/file/192/word.png +0 -0
- package/es/assets/images/file/24/excel.png +0 -0
- package/es/assets/images/file/24/file.png +0 -0
- package/es/assets/images/file/24/music.png +0 -0
- package/es/assets/images/file/24/pdf.png +0 -0
- package/es/assets/images/file/24/pic.png +0 -0
- package/es/assets/images/file/24/ppt.png +0 -0
- package/es/assets/images/file/24/txt.png +0 -0
- package/es/assets/images/file/24/video.png +0 -0
- package/es/assets/images/file/24/word.png +0 -0
- package/es/assets/images/folder/folder-192.png +0 -0
- package/es/assets/images/folder/folder-24.png +0 -0
- package/es/components/cell-editor/checkbox-editor.js +104 -0
- package/es/components/cell-editor/collaborator-editor.js +236 -0
- package/es/components/cell-editor/date-editor.js +151 -0
- package/es/components/cell-editor/index.js +9 -0
- package/es/components/cell-editor/link-editor.js +303 -0
- package/es/components/cell-editor/multiple-select-editor.js +237 -0
- package/es/components/cell-editor/number-editor.js +154 -0
- package/es/components/cell-editor/single-select-editor.js +202 -0
- package/es/components/cell-editor/text-editor.js +122 -0
- package/es/components/cell-editor-dialog/pc-file-editor-dialog.js +46 -0
- package/es/components/cell-editor-dialog/pc-files-addition/index.js +0 -0
- package/es/components/cell-editor-dialog/pc-files-addition/pc-file-uploaded-item.js +0 -0
- package/es/components/cell-editor-dialog/pc-files-preview/index.js +0 -0
- package/es/components/cell-editor-dialog/pc-files-preview/pc-file-item-preview.js +0 -0
- package/es/components/cell-editor-popover/mb-collaborator-editor-popover.js +177 -0
- package/es/components/cell-editor-popover/mb-date-editor-popover.js +245 -0
- package/es/components/cell-editor-popover/mb-link-editor-popover.js +170 -0
- package/es/components/cell-editor-popover/mb-select-editor-popover.js +230 -0
- package/es/components/cell-editor-popover/pc-collaborator-editor-popover.js +109 -0
- package/es/components/cell-editor-popover/pc-date-editor-popover.js +142 -0
- package/es/components/cell-editor-popover/pc-link-editor-popover.js +114 -0
- package/es/components/cell-editor-popover/pc-select-editor-popover.js +143 -0
- package/es/components/cell-factory/cell-formatter-factory.js +25 -0
- package/es/components/cell-formatter/auto-number-formatter.js +35 -0
- package/es/components/cell-formatter/button-formatter.js +55 -0
- package/es/components/cell-formatter/checkbox-formatter.js +44 -0
- package/es/components/cell-formatter/collaborator-formatter.js +91 -0
- package/es/components/cell-formatter/creator-formatter.js +87 -0
- package/es/components/cell-formatter/ctime-formatter.js +57 -0
- package/es/components/cell-formatter/date-formatter.js +59 -0
- package/es/components/cell-formatter/duration-formatter.js +37 -0
- package/es/components/cell-formatter/email-formatter.js +35 -0
- package/es/components/cell-formatter/file-formatter.js +63 -0
- package/es/components/cell-formatter/formatter-config.js +31 -0
- package/es/components/cell-formatter/formula-formatter.js +164 -0
- package/es/components/cell-formatter/geolocation-formatter.js +52 -0
- package/es/components/cell-formatter/image-formatter.js +153 -0
- package/es/components/cell-formatter/index.js +27 -0
- package/es/components/cell-formatter/last-modifier-formatter.js +87 -0
- package/es/components/cell-formatter/link-formatter.js +144 -0
- package/es/components/cell-formatter/long-text-formatter.js +106 -0
- package/es/components/cell-formatter/mtime-formatter.js +57 -0
- package/es/components/cell-formatter/multiple-select-formatter.js +69 -0
- package/es/components/cell-formatter/number-formatter.js +46 -0
- package/es/components/cell-formatter/rate-formatter.js +79 -0
- package/es/components/cell-formatter/single-select-formatter.js +69 -0
- package/es/components/cell-formatter/text-formatter.js +55 -0
- package/es/components/cell-formatter/url-formatter.js +35 -0
- package/es/components/cell-formatter/widgets/file-item-formatter.js +50 -0
- package/es/components/cell-formatter/widgets/image-previewer-lightbox.js +119 -0
- package/es/components/common/collaborator-item.js +63 -0
- package/es/components/common/edit-editor-button.js +56 -0
- package/es/components/common/images-lazy-load.js +150 -0
- package/es/components/common/link-editor-option.js +113 -0
- package/es/components/common/mobile/mb-editor-header.js +48 -0
- package/es/components/common/modal-portal.js +44 -0
- package/es/components/common/select-editor-option.js +106 -0
- package/es/components/common/select-item.js +58 -0
- package/es/components/file-uploader/index.js +53 -0
- package/es/components/loading.js +7 -0
- package/es/components/toast/alert.js +150 -0
- package/es/components/toast/index.js +3 -0
- package/es/components/toast/toast.js +179 -0
- package/es/components/toast/toastManager.js +170 -0
- package/es/components/toast/toaster.js +76 -0
- package/es/constants/cell-types.js +25 -0
- package/es/constants/index.js +48 -0
- package/es/css/cell-editor.css +614 -0
- package/es/css/cell-formatter.css +241 -0
- package/es/css/custom-rc-calendar.css +118 -0
- package/es/css/image-previewer-ligntbox.css +87 -0
- package/es/css/loading.css +54 -0
- package/es/index.js +6 -0
- package/es/lang/index.js +50 -0
- package/es/locals/de.js +2 -0
- package/es/locals/en.js +17 -0
- package/es/locals/fr.js +2 -0
- package/es/locals/zh-CN.js +17 -0
- package/es/utils/cell-value-validator.js +32 -0
- package/es/utils/column-utils.js +7 -0
- package/es/utils/editor-utils.js +71 -0
- package/es/utils/normalize-long-text-value.js +68 -0
- package/es/utils/number-precision.js +163 -0
- package/es/utils/utils.js +116 -0
- package/es/utils/value-format-utils.js +495 -0
- package/lib/CTimeFormatter/index.js +2 -2
- package/lib/DateEditor/index.js +2 -2
- package/lib/DateEditor/mb-date-editor-popover/index.js +9 -9
- package/lib/DateEditor/pc-date-editor-popover.js +3 -3
- package/lib/MTimeFormatter/index.js +2 -2
- package/lib/RateFormatter/index.js +4 -2
- package/lib/TextFormatter/index.js +4 -2
- package/lib/utils/value-format-utils.js +2 -2
- package/package.json +5 -5
|
@@ -0,0 +1,79 @@
|
|
|
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
|
+
|
|
8
|
+
var RateFormatter = /*#__PURE__*/function (_React$Component) {
|
|
9
|
+
_inherits(RateFormatter, _React$Component);
|
|
10
|
+
|
|
11
|
+
var _super = _createSuper(RateFormatter);
|
|
12
|
+
|
|
13
|
+
function RateFormatter() {
|
|
14
|
+
var _this;
|
|
15
|
+
|
|
16
|
+
_classCallCheck(this, RateFormatter);
|
|
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.getRateList = function () {
|
|
25
|
+
var _this$props = _this.props,
|
|
26
|
+
data = _this$props.data,
|
|
27
|
+
value = _this$props.value;
|
|
28
|
+
|
|
29
|
+
var _ref = data || {},
|
|
30
|
+
_ref$rate_max_number = _ref.rate_max_number,
|
|
31
|
+
rate_max_number = _ref$rate_max_number === void 0 ? 5 : _ref$rate_max_number,
|
|
32
|
+
_ref$rate_style_color = _ref.rate_style_color,
|
|
33
|
+
rate_style_color = _ref$rate_style_color === void 0 ? '#e5e5e5' : _ref$rate_style_color;
|
|
34
|
+
|
|
35
|
+
var validValue = Math.min(rate_max_number, value);
|
|
36
|
+
var rateList = [];
|
|
37
|
+
|
|
38
|
+
for (var i = 0; i < validValue; i++) {
|
|
39
|
+
rateList.push( /*#__PURE__*/React.createElement("i", {
|
|
40
|
+
key: "dtable-ui-component-rate-".concat(i),
|
|
41
|
+
className: "dtable-font dtable-icon-star",
|
|
42
|
+
style: {
|
|
43
|
+
color: rate_style_color || '#e5e5e5'
|
|
44
|
+
}
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return rateList;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
return _this;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
_createClass(RateFormatter, [{
|
|
55
|
+
key: "render",
|
|
56
|
+
value: function render() {
|
|
57
|
+
var _this$props2 = this.props,
|
|
58
|
+
number = _this$props2.value,
|
|
59
|
+
containerClassName = _this$props2.containerClassName;
|
|
60
|
+
var className = cn('dtable-ui cell-formatter-container rate-formatter', containerClassName);
|
|
61
|
+
if (!number) return null;
|
|
62
|
+
var rateList = this.getRateList();
|
|
63
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
64
|
+
className: className
|
|
65
|
+
}, rateList);
|
|
66
|
+
}
|
|
67
|
+
}]);
|
|
68
|
+
|
|
69
|
+
return RateFormatter;
|
|
70
|
+
}(React.Component);
|
|
71
|
+
|
|
72
|
+
RateFormatter.defaultProps = {
|
|
73
|
+
value: '',
|
|
74
|
+
containerClassName: ''
|
|
75
|
+
};
|
|
76
|
+
RateFormatter.defaultProps = {
|
|
77
|
+
editable: true
|
|
78
|
+
};
|
|
79
|
+
export default RateFormatter;
|
|
@@ -0,0 +1,69 @@
|
|
|
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 SelectItem from '../common/select-item';
|
|
8
|
+
|
|
9
|
+
var SingleSelectFormatter = /*#__PURE__*/function (_React$PureComponent) {
|
|
10
|
+
_inherits(SingleSelectFormatter, _React$PureComponent);
|
|
11
|
+
|
|
12
|
+
var _super = _createSuper(SingleSelectFormatter);
|
|
13
|
+
|
|
14
|
+
function SingleSelectFormatter() {
|
|
15
|
+
var _this;
|
|
16
|
+
|
|
17
|
+
_classCallCheck(this, SingleSelectFormatter);
|
|
18
|
+
|
|
19
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
20
|
+
args[_key] = arguments[_key];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
24
|
+
|
|
25
|
+
_this.getOption = function () {
|
|
26
|
+
var _this$props = _this.props,
|
|
27
|
+
value = _this$props.value,
|
|
28
|
+
options = _this$props.options,
|
|
29
|
+
fontSize = _this$props.fontSize;
|
|
30
|
+
var option = options.find(function (item) {
|
|
31
|
+
return item.id === value || item.name === value;
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
if (option) {
|
|
35
|
+
return /*#__PURE__*/React.createElement(SelectItem, {
|
|
36
|
+
option: option,
|
|
37
|
+
fontSize: fontSize
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
return _this;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
_createClass(SingleSelectFormatter, [{
|
|
46
|
+
key: "render",
|
|
47
|
+
value: function render() {
|
|
48
|
+
var _this$props2 = this.props,
|
|
49
|
+
containerClassName = _this$props2.containerClassName,
|
|
50
|
+
value = _this$props2.value;
|
|
51
|
+
var classname = cn('dtable-ui cell-formatter-container single-select-formatter', containerClassName);
|
|
52
|
+
|
|
53
|
+
if (!value) {
|
|
54
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
55
|
+
className: classname
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
var option = this.getOption();
|
|
60
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
61
|
+
className: classname
|
|
62
|
+
}, option);
|
|
63
|
+
}
|
|
64
|
+
}]);
|
|
65
|
+
|
|
66
|
+
return SingleSelectFormatter;
|
|
67
|
+
}(React.PureComponent);
|
|
68
|
+
|
|
69
|
+
export default SingleSelectFormatter;
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
|
|
8
|
+
var TextFormatter = /*#__PURE__*/function (_React$Component) {
|
|
9
|
+
_inherits(TextFormatter, _React$Component);
|
|
10
|
+
|
|
11
|
+
var _super = _createSuper(TextFormatter);
|
|
12
|
+
|
|
13
|
+
function TextFormatter() {
|
|
14
|
+
var _this;
|
|
15
|
+
|
|
16
|
+
_classCallCheck(this, TextFormatter);
|
|
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.getFormattedValue = function (val) {
|
|
25
|
+
if (typeof val === 'object') {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (Object.prototype.toString.call(val) === '[object Boolean]') {
|
|
30
|
+
return val + '';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return val;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
return _this;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
_createClass(TextFormatter, [{
|
|
40
|
+
key: "render",
|
|
41
|
+
value: function render() {
|
|
42
|
+
var _this$props = this.props,
|
|
43
|
+
containerClassName = _this$props.containerClassName,
|
|
44
|
+
value = _this$props.value;
|
|
45
|
+
var classname = cn('dtable-ui cell-formatter-container text-formatter', containerClassName);
|
|
46
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
47
|
+
className: classname
|
|
48
|
+
}, this.getFormattedValue(value));
|
|
49
|
+
}
|
|
50
|
+
}]);
|
|
51
|
+
|
|
52
|
+
return TextFormatter;
|
|
53
|
+
}(React.Component);
|
|
54
|
+
|
|
55
|
+
export default TextFormatter;
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
|
|
8
|
+
var UrlFormatter = /*#__PURE__*/function (_React$Component) {
|
|
9
|
+
_inherits(UrlFormatter, _React$Component);
|
|
10
|
+
|
|
11
|
+
var _super = _createSuper(UrlFormatter);
|
|
12
|
+
|
|
13
|
+
function UrlFormatter() {
|
|
14
|
+
_classCallCheck(this, UrlFormatter);
|
|
15
|
+
|
|
16
|
+
return _super.apply(this, arguments);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
_createClass(UrlFormatter, [{
|
|
20
|
+
key: "render",
|
|
21
|
+
value: function render() {
|
|
22
|
+
var _this$props = this.props,
|
|
23
|
+
containerClassName = _this$props.containerClassName,
|
|
24
|
+
value = _this$props.value;
|
|
25
|
+
var classname = cn('dtable-ui cell-formatter-container url-formatter', containerClassName);
|
|
26
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
27
|
+
className: classname
|
|
28
|
+
}, value);
|
|
29
|
+
}
|
|
30
|
+
}]);
|
|
31
|
+
|
|
32
|
+
return UrlFormatter;
|
|
33
|
+
}(React.Component);
|
|
34
|
+
|
|
35
|
+
export default UrlFormatter;
|
|
@@ -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,119 @@
|
|
|
1
|
+
import React, { Fragment } from 'react';
|
|
2
|
+
import MediaQuery from 'react-responsive';
|
|
3
|
+
import ModalPortal from '../../common/modal-portal';
|
|
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 '../../../css/image-previewer-ligntbox.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,63 @@
|
|
|
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 CollaboratorItem = /*#__PURE__*/function (_React$Component) {
|
|
8
|
+
_inherits(CollaboratorItem, _React$Component);
|
|
9
|
+
|
|
10
|
+
var _super = _createSuper(CollaboratorItem);
|
|
11
|
+
|
|
12
|
+
function CollaboratorItem() {
|
|
13
|
+
var _this;
|
|
14
|
+
|
|
15
|
+
_classCallCheck(this, CollaboratorItem);
|
|
16
|
+
|
|
17
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
18
|
+
args[_key] = arguments[_key];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
22
|
+
|
|
23
|
+
_this.onDeleteCollaborator = function () {
|
|
24
|
+
var collaborator = _this.props.collaborator;
|
|
25
|
+
|
|
26
|
+
_this.props.onDeleteCollaborator(collaborator);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return _this;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
_createClass(CollaboratorItem, [{
|
|
33
|
+
key: "render",
|
|
34
|
+
value: function render() {
|
|
35
|
+
var _this$props = this.props,
|
|
36
|
+
collaborator = _this$props.collaborator,
|
|
37
|
+
enableDeleteCollaborator = _this$props.enableDeleteCollaborator;
|
|
38
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
39
|
+
className: "dtable-ui collaborator-item"
|
|
40
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
41
|
+
className: "collaborator-avatar"
|
|
42
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
43
|
+
className: "collaborator-avatar-icon",
|
|
44
|
+
alt: collaborator.name,
|
|
45
|
+
src: collaborator.avatar_url
|
|
46
|
+
})), /*#__PURE__*/React.createElement("span", {
|
|
47
|
+
className: "collaborator-name"
|
|
48
|
+
}, collaborator.name), enableDeleteCollaborator && /*#__PURE__*/React.createElement("span", {
|
|
49
|
+
className: "collaborator-remove",
|
|
50
|
+
onClick: this.onDeleteCollaborator
|
|
51
|
+
}, /*#__PURE__*/React.createElement("i", {
|
|
52
|
+
className: "dtable-font dtable-icon-fork-number"
|
|
53
|
+
})));
|
|
54
|
+
}
|
|
55
|
+
}]);
|
|
56
|
+
|
|
57
|
+
return CollaboratorItem;
|
|
58
|
+
}(React.Component);
|
|
59
|
+
|
|
60
|
+
CollaboratorItem.defaultProps = {
|
|
61
|
+
enableDelete: false
|
|
62
|
+
};
|
|
63
|
+
export default CollaboratorItem;
|
|
@@ -0,0 +1,56 @@
|
|
|
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 EditEditorButton = /*#__PURE__*/function (_React$Component) {
|
|
8
|
+
_inherits(EditEditorButton, _React$Component);
|
|
9
|
+
|
|
10
|
+
var _super = _createSuper(EditEditorButton);
|
|
11
|
+
|
|
12
|
+
function EditEditorButton() {
|
|
13
|
+
var _this;
|
|
14
|
+
|
|
15
|
+
_classCallCheck(this, EditEditorButton);
|
|
16
|
+
|
|
17
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
18
|
+
args[_key] = arguments[_key];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
22
|
+
|
|
23
|
+
_this.getStyle = function () {
|
|
24
|
+
return {
|
|
25
|
+
display: 'inline-block',
|
|
26
|
+
padding: '0 12px',
|
|
27
|
+
height: '28px',
|
|
28
|
+
lineHeight: '28px',
|
|
29
|
+
fontSize: '14px',
|
|
30
|
+
backgroundColor: '#f0f0f0',
|
|
31
|
+
color: '#8f8f8f',
|
|
32
|
+
borderRadius: '4px',
|
|
33
|
+
cursor: 'pointer',
|
|
34
|
+
userSelect: 'none'
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
return _this;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
_createClass(EditEditorButton, [{
|
|
42
|
+
key: "render",
|
|
43
|
+
value: function render() {
|
|
44
|
+
var text = this.props.text;
|
|
45
|
+
var style = this.getStyle();
|
|
46
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
47
|
+
style: style,
|
|
48
|
+
onClick: this.props.onClick
|
|
49
|
+
}, text);
|
|
50
|
+
}
|
|
51
|
+
}]);
|
|
52
|
+
|
|
53
|
+
return EditEditorButton;
|
|
54
|
+
}(React.Component);
|
|
55
|
+
|
|
56
|
+
export default EditEditorButton;
|
|
@@ -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;
|