dtable-ui-component 0.2.0 → 0.2.2

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 (127) hide show
  1. package/es/app.css +20 -0
  2. package/es/app.js +91 -0
  3. package/es/assets/images/avatar/default_avatar.png +0 -0
  4. package/es/assets/images/file/192/excel.png +0 -0
  5. package/es/assets/images/file/192/file.png +0 -0
  6. package/es/assets/images/file/192/music.png +0 -0
  7. package/es/assets/images/file/192/pdf.png +0 -0
  8. package/es/assets/images/file/192/pic.png +0 -0
  9. package/es/assets/images/file/192/ppt.png +0 -0
  10. package/es/assets/images/file/192/txt.png +0 -0
  11. package/es/assets/images/file/192/video.png +0 -0
  12. package/es/assets/images/file/192/word.png +0 -0
  13. package/es/assets/images/file/24/excel.png +0 -0
  14. package/es/assets/images/file/24/file.png +0 -0
  15. package/es/assets/images/file/24/music.png +0 -0
  16. package/es/assets/images/file/24/pdf.png +0 -0
  17. package/es/assets/images/file/24/pic.png +0 -0
  18. package/es/assets/images/file/24/ppt.png +0 -0
  19. package/es/assets/images/file/24/txt.png +0 -0
  20. package/es/assets/images/file/24/video.png +0 -0
  21. package/es/assets/images/file/24/word.png +0 -0
  22. package/es/assets/images/folder/folder-192.png +0 -0
  23. package/es/assets/images/folder/folder-24.png +0 -0
  24. package/es/components/cell-editor/checkbox-editor.js +104 -0
  25. package/es/components/cell-editor/collaborator-editor.js +236 -0
  26. package/es/components/cell-editor/date-editor.js +151 -0
  27. package/es/components/cell-editor/index.js +9 -0
  28. package/es/components/cell-editor/link-editor.js +303 -0
  29. package/es/components/cell-editor/multiple-select-editor.js +237 -0
  30. package/es/components/cell-editor/number-editor.js +154 -0
  31. package/es/components/cell-editor/single-select-editor.js +202 -0
  32. package/es/components/cell-editor/text-editor.js +122 -0
  33. package/es/components/cell-editor-dialog/pc-file-editor-dialog.js +46 -0
  34. package/es/components/cell-editor-dialog/pc-files-addition/index.js +0 -0
  35. package/es/components/cell-editor-dialog/pc-files-addition/pc-file-uploaded-item.js +0 -0
  36. package/es/components/cell-editor-dialog/pc-files-preview/index.js +0 -0
  37. package/es/components/cell-editor-dialog/pc-files-preview/pc-file-item-preview.js +0 -0
  38. package/es/components/cell-editor-popover/mb-collaborator-editor-popover.js +177 -0
  39. package/es/components/cell-editor-popover/mb-date-editor-popover.js +245 -0
  40. package/es/components/cell-editor-popover/mb-link-editor-popover.js +170 -0
  41. package/es/components/cell-editor-popover/mb-select-editor-popover.js +230 -0
  42. package/es/components/cell-editor-popover/pc-collaborator-editor-popover.js +109 -0
  43. package/es/components/cell-editor-popover/pc-date-editor-popover.js +142 -0
  44. package/es/components/cell-editor-popover/pc-link-editor-popover.js +114 -0
  45. package/es/components/cell-editor-popover/pc-select-editor-popover.js +143 -0
  46. package/es/components/cell-factory/cell-formatter-factory.js +25 -0
  47. package/es/components/cell-formatter/auto-number-formatter.js +35 -0
  48. package/es/components/cell-formatter/button-formatter.js +55 -0
  49. package/es/components/cell-formatter/checkbox-formatter.js +44 -0
  50. package/es/components/cell-formatter/collaborator-formatter.js +91 -0
  51. package/es/components/cell-formatter/creator-formatter.js +87 -0
  52. package/es/components/cell-formatter/ctime-formatter.js +57 -0
  53. package/es/components/cell-formatter/date-formatter.js +59 -0
  54. package/es/components/cell-formatter/duration-formatter.js +37 -0
  55. package/es/components/cell-formatter/email-formatter.js +35 -0
  56. package/es/components/cell-formatter/file-formatter.js +63 -0
  57. package/es/components/cell-formatter/formatter-config.js +31 -0
  58. package/es/components/cell-formatter/formula-formatter.js +173 -0
  59. package/es/components/cell-formatter/geolocation-formatter.js +49 -0
  60. package/es/components/cell-formatter/image-formatter.js +153 -0
  61. package/es/components/cell-formatter/index.js +26 -0
  62. package/es/components/cell-formatter/last-modifier-formatter.js +87 -0
  63. package/es/components/cell-formatter/link-formatter.js +144 -0
  64. package/es/components/cell-formatter/long-text-formatter.js +106 -0
  65. package/es/components/cell-formatter/mtime-formatter.js +57 -0
  66. package/es/components/cell-formatter/multiple-select-formatter.js +70 -0
  67. package/es/components/cell-formatter/number-formatter.js +46 -0
  68. package/es/components/cell-formatter/rate-formatter.js +74 -0
  69. package/es/components/cell-formatter/single-select-formatter.js +69 -0
  70. package/es/components/cell-formatter/text-formatter.js +35 -0
  71. package/es/components/cell-formatter/url-formatter.js +35 -0
  72. package/es/components/cell-formatter/widgets/file-item-formatter.js +50 -0
  73. package/es/components/cell-formatter/widgets/image-previewer-lightbox.js +119 -0
  74. package/es/components/common/collaborator-item.js +63 -0
  75. package/es/components/common/edit-editor-button.js +56 -0
  76. package/es/components/common/images-lazy-load.js +148 -0
  77. package/es/components/common/link-editor-option.js +113 -0
  78. package/es/components/common/mobile/mb-editor-header.js +48 -0
  79. package/es/components/common/modal-portal.js +44 -0
  80. package/es/components/common/select-editor-option.js +106 -0
  81. package/es/components/common/select-item.js +58 -0
  82. package/es/components/file-uploader/index.js +53 -0
  83. package/es/components/loading.js +7 -0
  84. package/es/components/toast/alert.js +150 -0
  85. package/es/components/toast/index.js +3 -0
  86. package/es/components/toast/toast.js +179 -0
  87. package/es/components/toast/toastManager.js +170 -0
  88. package/es/components/toast/toaster.js +76 -0
  89. package/es/css/cell-editor.css +614 -0
  90. package/es/css/cell-formatter.css +241 -0
  91. package/es/css/custom-rc-calendar.css +118 -0
  92. package/es/css/image-previewer-ligntbox.css +87 -0
  93. package/es/css/loading.css +54 -0
  94. package/es/index.js +5 -0
  95. package/es/lang/index.js +50 -0
  96. package/es/locals/de.js +2 -0
  97. package/es/locals/en.js +17 -0
  98. package/es/locals/fr.js +2 -0
  99. package/es/locals/zh-CN.js +17 -0
  100. package/es/utils/cell-types.js +25 -0
  101. package/es/utils/constants.js +41 -0
  102. package/es/utils/editor-utils.js +71 -0
  103. package/es/utils/normalize-long-text-value.js +68 -0
  104. package/es/utils/number-precision.js +163 -0
  105. package/es/utils/utils.js +116 -0
  106. package/es/utils/value-format-utils.js +281 -0
  107. package/lib/AutoNumberFormatter/index.js +3 -0
  108. package/lib/ButtonFormatter/index.js +1 -1
  109. package/lib/CollaboratorFormatter/index.js +3 -0
  110. package/lib/CreatorFormatter/index.js +3 -0
  111. package/lib/DTableCustomizeCollaboratorSelect/index.js +1 -1
  112. package/lib/DTableCustomizeSelect/index.js +1 -1
  113. package/lib/DTableSelect/index.js +1 -1
  114. package/lib/FormulaFormatter/index.js +2 -2
  115. package/lib/HtmlLongTextFormatter/vfile/index.js +0 -2
  116. package/lib/ImageFormatter/index.js +2 -1
  117. package/lib/ImagePreviewerLightbox/index.js +3 -2
  118. package/lib/ImagePreviewerLightbox/utils.js +3 -2
  119. package/lib/LastModifierFormatter/index.js +3 -0
  120. package/lib/LinkFormatter/index.js +4 -1
  121. package/lib/MultipleSelectFormatter/index.js +3 -0
  122. package/lib/SelectOptionGroup/KeyCodes.js +1 -1
  123. package/lib/SingleSelectFormatter/index.js +3 -0
  124. package/lib/cellFormatterFactory/index.js +3 -3
  125. package/lib/formatterConfig/base-formatter-config.js +28 -0
  126. package/lib/formatterConfig/index.js +6 -23
  127. package/package.json +1 -1
@@ -0,0 +1,202 @@
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 EditEditorButton from '../common/edit-editor-button';
9
+ import SelectEditorOption from '../common/select-editor-option';
10
+ import PCSelectEditorPopover from '../cell-editor-popover/pc-select-editor-popover';
11
+ import MBSingleSelectPopover from '../cell-editor-popover/mb-select-editor-popover';
12
+
13
+ var SingleSelectEditor = /*#__PURE__*/function (_React$Component) {
14
+ _inherits(SingleSelectEditor, _React$Component);
15
+
16
+ var _super = _createSuper(SingleSelectEditor);
17
+
18
+ function SingleSelectEditor(props) {
19
+ var _this;
20
+
21
+ _classCallCheck(this, SingleSelectEditor);
22
+
23
+ _this = _super.call(this, props);
24
+
25
+ _this.onDocumentToggle = function (e) {
26
+ if (_this.editorContainer !== e.target && !_this.editorContainer.contains(e.target)) {
27
+ _this.onClosePopover();
28
+ }
29
+ };
30
+
31
+ _this.formatOption = function () {
32
+ var newValue = _this.state.newValue;
33
+
34
+ var option = _this.options.find(function (option) {
35
+ return option.id === newValue;
36
+ });
37
+
38
+ return option;
39
+ };
40
+
41
+ _this.onAddOptionToggle = function (event) {
42
+ event.nativeEvent.stopImmediatePropagation();
43
+ event.stopPropagation();
44
+
45
+ if (_this.props.isReadOnly) {
46
+ return;
47
+ }
48
+
49
+ var isPopoverShow = !_this.state.isPopoverShow;
50
+
51
+ if (isPopoverShow) {
52
+ var popoverPosition = _this.caculatePopoverPosition();
53
+
54
+ _this.setState({
55
+ isPopoverShow: isPopoverShow,
56
+ popoverPosition: popoverPosition
57
+ });
58
+ } else {
59
+ _this.setState({
60
+ isPopoverShow: isPopoverShow
61
+ });
62
+ }
63
+ };
64
+
65
+ _this.onCommit = function (newValue) {
66
+ var updated = {};
67
+ var column = _this.props.column;
68
+ updated[column.key] = newValue;
69
+
70
+ _this.props.onCommit(updated);
71
+ };
72
+
73
+ _this.onOptionItemToggle = function (option) {
74
+ var newValue = _this.state.newValue === option.id ? '' : option.id;
75
+
76
+ _this.setState({
77
+ newValue: newValue
78
+ }, function () {
79
+ _this.onCommit(newValue);
80
+
81
+ _this.onClosePopover();
82
+ });
83
+ };
84
+
85
+ _this.caculatePopoverPosition = function () {
86
+ var POPOVER_MAX_HEIGHT = 200;
87
+ var innerHeight = window.innerHeight;
88
+
89
+ var _this$editor$getClien = _this.editor.getClientRects()[0],
90
+ top = _this$editor$getClien.top,
91
+ height = _this$editor$getClien.height;
92
+
93
+ var isBelow = innerHeight - (top + height) > POPOVER_MAX_HEIGHT;
94
+ var position = {
95
+ top: height + 1,
96
+ left: 0
97
+ };
98
+
99
+ if (!isBelow) {
100
+ var bottom = height + 1;
101
+ position = {
102
+ bottom: bottom,
103
+ left: 0
104
+ };
105
+ }
106
+
107
+ return position;
108
+ };
109
+
110
+ _this.onAddNewOption = function (optionName) {
111
+ _this.props.onAddNewOption(optionName);
112
+
113
+ _this.onClosePopover();
114
+ };
115
+
116
+ _this.onClosePopover = function () {
117
+ _this.setState({
118
+ isPopoverShow: false
119
+ });
120
+ };
121
+
122
+ _this.setEditorContainerRef = function (editorContainer) {
123
+ _this.editorContainer = editorContainer;
124
+ };
125
+
126
+ _this.setEditorRef = function (editor) {
127
+ _this.editor = editor;
128
+ };
129
+
130
+ _this.state = {
131
+ newValue: props.value,
132
+ isPopoverShow: false,
133
+ popoverPosition: {}
134
+ };
135
+ var _column = _this.props.column;
136
+ _this.options = _column.data && (_column.data.options || []);
137
+ return _this;
138
+ }
139
+
140
+ _createClass(SingleSelectEditor, [{
141
+ key: "componentDidMount",
142
+ value: function componentDidMount() {
143
+ document.addEventListener('click', this.onDocumentToggle);
144
+ }
145
+ }, {
146
+ key: "componentWillUnmount",
147
+ value: function componentWillUnmount() {
148
+ document.removeEventListener('click', this.onDocumentToggle);
149
+ }
150
+ }, {
151
+ key: "render",
152
+ value: function render() {
153
+ var _this$state = this.state,
154
+ isPopoverShow = _this$state.isPopoverShow,
155
+ popoverPosition = _this$state.popoverPosition;
156
+ var option = this.formatOption();
157
+ var options = this.options;
158
+ var selectedOptions = option ? [option] : [];
159
+ return /*#__PURE__*/React.createElement("div", {
160
+ ref: this.setEditorContainerRef,
161
+ className: "cell-editor dtable-ui-single-select-editor"
162
+ }, /*#__PURE__*/React.createElement("div", {
163
+ ref: this.setEditorRef,
164
+ className: "dtable-ui-select-editor-container",
165
+ onClick: this.onAddOptionToggle
166
+ }, option ? /*#__PURE__*/React.createElement(SelectEditorOption, {
167
+ option: option
168
+ }) : /*#__PURE__*/React.createElement(EditEditorButton, {
169
+ text: getLocale('Add_an_option')
170
+ })), isPopoverShow && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(MediaQuery, {
171
+ query: "(min-width: 768px)"
172
+ }, /*#__PURE__*/React.createElement(PCSelectEditorPopover, {
173
+ popoverPosition: popoverPosition,
174
+ options: options,
175
+ selectedOptions: selectedOptions,
176
+ onOptionItemToggle: this.onOptionItemToggle,
177
+ isSupportNewOption: this.props.isSupportNewOption,
178
+ onAddNewOption: this.onAddNewOption
179
+ })), /*#__PURE__*/React.createElement(MediaQuery, {
180
+ query: "(max-width: 767.8px)"
181
+ }, /*#__PURE__*/React.createElement(MBSingleSelectPopover, {
182
+ isReadOnly: this.props.isReadOnly,
183
+ value: [this.state.newValue],
184
+ column: this.props.column,
185
+ options: options,
186
+ onOptionItemToggle: this.onOptionItemToggle,
187
+ isShowRemoveIcon: true,
188
+ isSupportNewOption: this.props.isSupportNewOption,
189
+ onAddNewOption: this.onAddNewOption,
190
+ onClosePopover: this.onClosePopover
191
+ }))));
192
+ }
193
+ }]);
194
+
195
+ return SingleSelectEditor;
196
+ }(React.Component);
197
+
198
+ SingleSelectEditor.defaultProps = {
199
+ isReadOnly: false,
200
+ value: ''
201
+ };
202
+ export default SingleSelectEditor;
@@ -0,0 +1,122 @@
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 isHotkey from 'is-hotkey';
7
+
8
+ var TextEditor = /*#__PURE__*/function (_React$Component) {
9
+ _inherits(TextEditor, _React$Component);
10
+
11
+ var _super = _createSuper(TextEditor);
12
+
13
+ function TextEditor(props) {
14
+ var _this;
15
+
16
+ _classCallCheck(this, TextEditor);
17
+
18
+ _this = _super.call(this, props);
19
+
20
+ _this.onCommit = function () {
21
+ var updated = {};
22
+ var column = _this.props.column;
23
+ var newValue = _this.state.newValue;
24
+ updated[column.key] = newValue ? newValue.trim() : '';
25
+
26
+ _this.props.onCommit(updated);
27
+
28
+ _this.setState({
29
+ isEditorShow: false
30
+ });
31
+ };
32
+
33
+ _this.onBlur = function () {
34
+ _this.onCommit();
35
+ };
36
+
37
+ _this.onChange = function (event) {
38
+ var value = event.target.value;
39
+
40
+ _this.setState({
41
+ newValue: value
42
+ });
43
+ };
44
+
45
+ _this.onEditorhandle = function () {
46
+ if (_this.props.isReadOnly) {
47
+ return;
48
+ }
49
+
50
+ _this.setState({
51
+ isEditorShow: true
52
+ }, function () {
53
+ _this.input.focus();
54
+ });
55
+ };
56
+
57
+ _this.onKeyDown = function (event) {
58
+ var _event$currentTarget = event.currentTarget,
59
+ selectionStart = _event$currentTarget.selectionStart,
60
+ selectionEnd = _event$currentTarget.selectionEnd,
61
+ value = _event$currentTarget.value;
62
+
63
+ if (isHotkey('enter', event)) {
64
+ event.preventDefault();
65
+
66
+ _this.onBlur();
67
+ } else if (event.keyCode === 37 && selectionStart === 0 || event.keyCode === 39 && selectionEnd === value.length) {
68
+ event.stopPropagation();
69
+ }
70
+ };
71
+
72
+ _this.onPaste = function (e) {
73
+ e.stopPropagation();
74
+ };
75
+
76
+ _this.onCut = function (e) {
77
+ e.stopPropagation();
78
+ };
79
+
80
+ _this.setInputRef = function (input) {
81
+ _this.input = input;
82
+ };
83
+
84
+ _this.state = {
85
+ newValue: props.value,
86
+ isEditorShow: false
87
+ };
88
+ return _this;
89
+ }
90
+
91
+ _createClass(TextEditor, [{
92
+ key: "render",
93
+ value: function render() {
94
+ return /*#__PURE__*/React.createElement("div", {
95
+ className: "cell-editor text-editor"
96
+ }, /*#__PURE__*/React.createElement("div", {
97
+ className: "text-editor-container"
98
+ }, !this.state.isEditorShow && /*#__PURE__*/React.createElement("div", {
99
+ className: "form-control",
100
+ onClick: this.onEditorhandle
101
+ }, this.state.newValue), this.state.isEditorShow && /*#__PURE__*/React.createElement("input", {
102
+ ref: this.setInputRef,
103
+ type: "text",
104
+ className: "form-control",
105
+ value: this.state.newValue,
106
+ onChange: this.onChange,
107
+ onKeyDown: this.onKeyDown,
108
+ onBlur: this.onBlur,
109
+ onCut: this.onCut,
110
+ onPaste: this.onPaste
111
+ })));
112
+ }
113
+ }]);
114
+
115
+ return TextEditor;
116
+ }(React.Component);
117
+
118
+ TextEditor.defaultProps = {
119
+ isReadOnly: false,
120
+ value: ''
121
+ };
122
+ export default TextEditor;
@@ -0,0 +1,46 @@
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 { Modal, ModalHeader, ModalBody } from 'reactstrap';
7
+ import { getLocale } from '../../lang';
8
+
9
+ var FileEditorDialog = /*#__PURE__*/function (_React$Component) {
10
+ _inherits(FileEditorDialog, _React$Component);
11
+
12
+ var _super = _createSuper(FileEditorDialog);
13
+
14
+ function FileEditorDialog(props) {
15
+ var _this;
16
+
17
+ _classCallCheck(this, FileEditorDialog);
18
+
19
+ _this = _super.call(this, props);
20
+ _this.state = {};
21
+ return _this;
22
+ }
23
+
24
+ _createClass(FileEditorDialog, [{
25
+ key: "render",
26
+ value: function render() {
27
+ var closeEditor = this.props.closeEditor;
28
+ return /*#__PURE__*/React.createElement(Modal, {
29
+ isOpen: true,
30
+ toggle: closeEditor
31
+ }, /*#__PURE__*/React.createElement(ModalHeader, {
32
+ toggle: closeEditor
33
+ }, getLocale('Add_Files')), /*#__PURE__*/React.createElement(ModalBody, {
34
+ className: "file-editor-container"
35
+ }));
36
+ }
37
+ }]);
38
+
39
+ return FileEditorDialog;
40
+ }(React.Component);
41
+
42
+ FileEditorDialog.defaultProps = {
43
+ isCheckRepeat: false,
44
+ columnType: 'file'
45
+ };
46
+ export default FileEditorDialog;
@@ -0,0 +1,177 @@
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 { getLocale } from '../../lang';
8
+ import MBEditorHeader from '../common/mobile/mb-editor-header';
9
+
10
+ var MBCollaboratorEditorPopover = /*#__PURE__*/function (_React$Component) {
11
+ _inherits(MBCollaboratorEditorPopover, _React$Component);
12
+
13
+ var _super = _createSuper(MBCollaboratorEditorPopover);
14
+
15
+ function MBCollaboratorEditorPopover(props) {
16
+ var _this;
17
+
18
+ _classCallCheck(this, MBCollaboratorEditorPopover);
19
+
20
+ _this = _super.call(this, props);
21
+
22
+ _this.handleHistaryBack = function (e) {
23
+ e.preventDefault();
24
+
25
+ _this.props.onClosePopover();
26
+ };
27
+
28
+ _this.onContainerClick = function (event) {
29
+ if (_this.editorPopover && _this.editorPopover.contains(event.target)) {
30
+ event.stopPropagation();
31
+ event.nativeEvent.stopImmediatePropagation();
32
+ return false;
33
+ }
34
+ };
35
+
36
+ _this.onChangeSearch = function (event) {
37
+ var searchVal = _this.state.searchVal;
38
+
39
+ if (searchVal === event.target.value) {
40
+ return;
41
+ }
42
+
43
+ searchVal = event.target.value;
44
+
45
+ _this.setState({
46
+ searchVal: searchVal
47
+ });
48
+ };
49
+
50
+ _this.getSelectedCollaborators = function () {
51
+ var _this$props = _this.props,
52
+ value = _this$props.value,
53
+ collaborators = _this$props.collaborators;
54
+
55
+ if (!Array.isArray(value)) {
56
+ return [];
57
+ }
58
+
59
+ return collaborators.filter(function (collaborator) {
60
+ return value.indexOf(collaborator.email) > -1;
61
+ });
62
+ };
63
+
64
+ _this.getFilteredCollaborators = function () {
65
+ var collaborators = _this.props.collaborators;
66
+ var searchVal = _this.state.searchVal;
67
+ return searchVal ? collaborators.filter(function (item) {
68
+ return item.name.indexOf(searchVal) > -1;
69
+ }) : collaborators;
70
+ };
71
+
72
+ _this.onSelectCollaborator = function (collaborator) {
73
+ _this.props.onCollaboratorItemToggle(collaborator);
74
+ };
75
+
76
+ _this.onRemoveCollaborator = function (collaborator) {
77
+ _this.props.onCollaboratorItemToggle(collaborator);
78
+ };
79
+
80
+ _this.renderFilteredCollaborators = function (collaborators) {
81
+ var value = _this.props.value;
82
+ return collaborators.map(function (collaborator, index) {
83
+ var isSelect = value.some(function (item) {
84
+ return item === collaborator.email;
85
+ });
86
+ return /*#__PURE__*/React.createElement("div", {
87
+ className: "mb-collaborator-option-item",
88
+ key: index,
89
+ onMouseDown: _this.onSelectCollaborator.bind(_assertThisInitialized(_this), collaborator)
90
+ }, /*#__PURE__*/React.createElement("span", {
91
+ className: "mb-collaborator-info"
92
+ }, /*#__PURE__*/React.createElement("span", {
93
+ className: "collaborator-avatar"
94
+ }, /*#__PURE__*/React.createElement("img", {
95
+ src: collaborator.avatar_url,
96
+ width: "24",
97
+ height: "24",
98
+ alt: "avatar"
99
+ })), /*#__PURE__*/React.createElement("span", {
100
+ className: "collaborator-name"
101
+ }, collaborator.name)), isSelect && /*#__PURE__*/React.createElement("i", {
102
+ className: "mb-collaborator-checked dtable-font dtable-icon-check-mark"
103
+ }));
104
+ });
105
+ };
106
+
107
+ _this.setEditorPopover = function (editorPopover) {
108
+ _this.editorPopover = editorPopover;
109
+ };
110
+
111
+ _this.state = {
112
+ searchVal: ''
113
+ };
114
+ return _this;
115
+ }
116
+
117
+ _createClass(MBCollaboratorEditorPopover, [{
118
+ key: "componentDidMount",
119
+ value: function componentDidMount() {
120
+ history.pushState(null, null, '#'); // eslint-disable-line
121
+
122
+ window.addEventListener('popstate', this.handleHistaryBack, false);
123
+ }
124
+ }, {
125
+ key: "componentWillUnmount",
126
+ value: function componentWillUnmount() {
127
+ window.removeEventListener('popstate', this.handleHistaryBack, false);
128
+ }
129
+ }, {
130
+ key: "render",
131
+ value: function render() {
132
+ var column = this.props.column;
133
+ var searchVal = this.state.searchVal;
134
+ var filteredCollaborators = this.getFilteredCollaborators();
135
+ return /*#__PURE__*/React.createElement("div", {
136
+ ref: this.setEditorPopover,
137
+ className: "dtable-ui-mb-editor-popover mb-collaborator-editor-popover",
138
+ onClick: this.onContainerClick
139
+ }, /*#__PURE__*/React.createElement(MBEditorHeader, {
140
+ title: column.name,
141
+ leftContent: /*#__PURE__*/React.createElement("i", {
142
+ className: "dtable-font dtable-icon-return"
143
+ }),
144
+ rightContent: /*#__PURE__*/React.createElement("span", null, getLocale('Done')),
145
+ onLeftClick: this.props.onClosePopover,
146
+ onRightClick: this.props.onClosePopover
147
+ }), /*#__PURE__*/React.createElement("div", {
148
+ className: "dtable-ui-mb-editor-body dtable-ui-mb-collaborator-editor-body"
149
+ }, /*#__PURE__*/React.createElement("div", {
150
+ className: "mb-search-collaborator-items"
151
+ }, /*#__PURE__*/React.createElement("input", {
152
+ className: "form-control",
153
+ type: "text",
154
+ placeholder: getLocale('Find_a_collaborator'),
155
+ value: searchVal,
156
+ onChange: this.onChangeSearch,
157
+ onClick: this.onInputClick
158
+ })), /*#__PURE__*/React.createElement("div", {
159
+ className: "mb-collaborators-container"
160
+ }, /*#__PURE__*/React.createElement("div", {
161
+ className: "title"
162
+ }, getLocale('Choose_a_collaborator')), /*#__PURE__*/React.createElement("div", {
163
+ className: "content"
164
+ }, filteredCollaborators.length === 0 && /*#__PURE__*/React.createElement("div", {
165
+ className: "search-result-none"
166
+ }, getLocale('No_collaborators_avaliable')), filteredCollaborators.length > 0 && this.renderFilteredCollaborators(filteredCollaborators)))));
167
+ }
168
+ }]);
169
+
170
+ return MBCollaboratorEditorPopover;
171
+ }(React.Component);
172
+
173
+ MBCollaboratorEditorPopover.defaultProps = {
174
+ isReadOnly: false,
175
+ value: []
176
+ };
177
+ export default MBCollaboratorEditorPopover;