dtable-ui-component 0.1.75 → 0.1.79-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.
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 +2 -2
  75. package/{es/utils → lib/HtmlLongTextFormatter}/unified/index.js +8 -5
  76. package/{es/utils → lib/HtmlLongTextFormatter}/vfile/core.js +4 -2
  77. package/{es/utils → lib/HtmlLongTextFormatter}/vfile/index.js +4 -3
  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 +44 -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 +7 -10
  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
@@ -0,0 +1,115 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
5
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
6
+ import React from 'react';
7
+ import { getLocale } from '../../lang';
8
+ import './index.css';
9
+
10
+ var PCLinkEditorPopover = /*#__PURE__*/function (_React$Component) {
11
+ _inherits(PCLinkEditorPopover, _React$Component);
12
+
13
+ var _super = _createSuper(PCLinkEditorPopover);
14
+
15
+ function PCLinkEditorPopover(props) {
16
+ var _this;
17
+
18
+ _classCallCheck(this, PCLinkEditorPopover);
19
+
20
+ _this = _super.call(this, props);
21
+
22
+ _this.onValueChanged = function (event) {
23
+ var value = event.target.value;
24
+
25
+ _this.setState({
26
+ searchValue: value
27
+ });
28
+ };
29
+
30
+ _this.onInputClick = function (event) {
31
+ event.nativeEvent.stopImmediatePropagation();
32
+ event.stopPropagation();
33
+ };
34
+
35
+ _this.onOptionItemToggle = function (item) {
36
+ _this.props.onOptionItemToggle(item);
37
+ };
38
+
39
+ _this.getFilterOptions = function () {
40
+ var options = _this.props.options;
41
+
42
+ var filter = _this.state.searchValue.toLowerCase();
43
+
44
+ if (!filter) {
45
+ return options;
46
+ }
47
+
48
+ return options.filter(function (option) {
49
+ return option.name.toString().toLowerCase().indexOf(filter) > -1;
50
+ });
51
+ };
52
+
53
+ _this.state = {
54
+ searchValue: ''
55
+ };
56
+ return _this;
57
+ }
58
+
59
+ _createClass(PCLinkEditorPopover, [{
60
+ key: "render",
61
+ value: function render() {
62
+ var _this2 = this;
63
+
64
+ var options = this.getFilterOptions();
65
+ var _this$props = this.props,
66
+ popoverPosition = _this$props.popoverPosition,
67
+ selectedOptions = _this$props.selectedOptions;
68
+ var searchValue = this.state.searchValue;
69
+ var popoverStyle = Object.assign({}, _objectSpread({}, popoverPosition), {
70
+ position: 'absolute'
71
+ });
72
+ return /*#__PURE__*/React.createElement("div", {
73
+ className: "dtable-ui-editor-popover dtable-ui-link-editor-popover",
74
+ style: popoverStyle
75
+ }, /*#__PURE__*/React.createElement("div", {
76
+ className: "link-options-search"
77
+ }, /*#__PURE__*/React.createElement("input", {
78
+ className: "form-control",
79
+ value: searchValue,
80
+ onChange: this.onValueChanged,
81
+ onClick: this.onInputClick,
82
+ placeholder: getLocale('Find_an_option')
83
+ })), /*#__PURE__*/React.createElement("div", {
84
+ className: "link-options-container"
85
+ }, options.length > 0 && options.map(function (option, index) {
86
+ var isSelect = selectedOptions.some(function (selectedOption) {
87
+ return selectedOption.id === option.id;
88
+ });
89
+ return /*#__PURE__*/React.createElement("div", {
90
+ key: index,
91
+ className: "link-option-item",
92
+ onClick: _this2.onOptionItemToggle.bind(_this2, option)
93
+ }, /*#__PURE__*/React.createElement("div", {
94
+ className: "option-info"
95
+ }, /*#__PURE__*/React.createElement("div", {
96
+ className: "option-name"
97
+ }, option.name)), /*#__PURE__*/React.createElement("div", {
98
+ className: "option-checked"
99
+ }, isSelect && /*#__PURE__*/React.createElement("i", {
100
+ className: "dtable-font dtable-icon-check-mark"
101
+ })));
102
+ }), options.length === 0 && /*#__PURE__*/React.createElement("div", {
103
+ className: "link-option-null"
104
+ }, getLocale('No_options_available'))));
105
+ }
106
+ }]);
107
+
108
+ return PCLinkEditorPopover;
109
+ }(React.Component);
110
+
111
+ PCLinkEditorPopover.defaultProps = {
112
+ popoverPosition: {},
113
+ options: []
114
+ };
115
+ export default PCLinkEditorPopover;
@@ -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
+ }
@@ -5,8 +5,8 @@ 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
7
  import cn from 'astro-classname';
8
- import * as CellTypes from '../../constants/cell-types';
9
- import { getNumberDisplayString, getDateDisplayString } from '../../utils/value-format-utils';
8
+ import * as CellTypes from '../constants/cell-types';
9
+ import { getNumberDisplayString, getDateDisplayString } from '../utils/value-format-utils';
10
10
 
11
11
  // link value is get form parant's interface
12
12
  var LinkFormatter = /*#__PURE__*/function (_React$Component) {
File without changes
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import '../css/loading.css';
2
+ import './index.css';
3
3
  export default function Loading() {
4
4
  return /*#__PURE__*/React.createElement("span", {
5
5
  className: "loading-icon loading-tip"
@@ -1,24 +1,22 @@
1
1
  import React from 'react';
2
- import cn from 'astro-classname';
3
- import HtmlLongTextFormatter from './widgets/long-text-formatter/html-long-text-formatter';
4
- import SimpleLongTextFormatter from './widgets/long-text-formatter/simple-long-text-formatter';
2
+ import HtmlLongTextFormatter from '../HtmlLongTextFormatter';
3
+ import SimpleLongTextFormatter from '../SimpleLongTextFormatter';
5
4
 
6
5
  function LongTextFormatter(props) {
7
6
  var isSample = props.isSample,
8
7
  value = props.value,
9
8
  containerClassName = props.containerClassName;
10
- var className = cn('dtable-ui cell-formatter-container long-text-formatter', containerClassName);
11
9
 
12
10
  if (isSample) {
13
11
  return /*#__PURE__*/React.createElement(SimpleLongTextFormatter, {
14
12
  value: value,
15
- className: className
13
+ containerClassName: containerClassName
16
14
  });
17
15
  }
18
16
 
19
17
  return /*#__PURE__*/React.createElement(HtmlLongTextFormatter, {
20
18
  value: value,
21
- className: className
19
+ containerClassName: containerClassName
22
20
  });
23
21
  }
24
22
 
@@ -0,0 +1 @@
1
+ @import url('../css/cell-formatter.css');
@@ -5,6 +5,7 @@ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
  import React from 'react';
6
6
  import cn from 'astro-classname';
7
7
  import moment from 'moment';
8
+ import './index.css';
8
9
 
9
10
  var MTimeFormatter = /*#__PURE__*/function (_React$Component) {
10
11
  _inherits(MTimeFormatter, _React$Component);
@@ -0,0 +1,9 @@
1
+ .dtable-ui-multiple-select-editor {
2
+ position: relative;
3
+ }
4
+
5
+ .dtable-ui-select-editor-container {
6
+ display: inline-block;
7
+ height: 30px;
8
+ padding: 0 10px;
9
+ }
@@ -0,0 +1,236 @@
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 '../EditEditorButton';
9
+ import { SelectEditorOption, PCSelectEditorPopover, MBSelectEditorPopover } from '../select-editor';
10
+ import './index.css';
11
+
12
+ var MultipleSelectEditor = /*#__PURE__*/function (_React$Component) {
13
+ _inherits(MultipleSelectEditor, _React$Component);
14
+
15
+ var _super = _createSuper(MultipleSelectEditor);
16
+
17
+ function MultipleSelectEditor(props) {
18
+ var _this;
19
+
20
+ _classCallCheck(this, MultipleSelectEditor);
21
+
22
+ _this = _super.call(this, props);
23
+
24
+ _this.onDocumentToggle = function (e) {
25
+ if (_this.editorContainer !== e.target && !_this.editorContainer.contains(e.target)) {
26
+ _this.onClosePopover();
27
+ }
28
+ };
29
+
30
+ _this.getFormattedOptions = function () {
31
+ var newValue = _this.state.newValue;
32
+
33
+ if (Array.isArray(newValue) && newValue.length > 0) {
34
+ return newValue.map(function (option_id) {
35
+ return _this.options.find(function (option) {
36
+ return option.id === option_id;
37
+ });
38
+ }).filter(function (option) {
39
+ return !!option;
40
+ });
41
+ }
42
+
43
+ return [];
44
+ };
45
+
46
+ _this.onAddOptionToggle = function (event) {
47
+ event.nativeEvent.stopImmediatePropagation();
48
+ event.stopPropagation();
49
+
50
+ if (_this.props.isReadOnly) {
51
+ return;
52
+ }
53
+
54
+ var isPopoverShow = !_this.state.isPopoverShow;
55
+
56
+ if (isPopoverShow) {
57
+ var popoverPosition = _this.caculatePopoverPosition();
58
+
59
+ _this.setState({
60
+ isPopoverShow: isPopoverShow,
61
+ popoverPosition: popoverPosition
62
+ });
63
+ } else {
64
+ _this.setState({
65
+ isPopoverShow: isPopoverShow
66
+ });
67
+ }
68
+ };
69
+
70
+ _this.onCommit = function (newValue) {
71
+ var updated = {};
72
+ var column = _this.props.column;
73
+ updated[column.key] = newValue;
74
+
75
+ _this.props.onCommit(updated);
76
+ };
77
+
78
+ _this.onOptionItemToggle = function (option) {
79
+ var newValue = _this.state.newValue.slice();
80
+
81
+ var optionIndex = newValue.findIndex(function (option_id) {
82
+ return option_id === option.id;
83
+ });
84
+
85
+ if (optionIndex !== -1) {
86
+ newValue.splice(optionIndex, 1);
87
+ } else {
88
+ newValue.push(option.id);
89
+ }
90
+
91
+ _this.setState({
92
+ newValue: newValue
93
+ }, function () {
94
+ _this.onCommit(newValue);
95
+ });
96
+ };
97
+
98
+ _this.onDeleteOption = function (option) {
99
+ var newValue = _this.state.newValue.slice();
100
+
101
+ var optionIndex = newValue.findIndex(function (option_id) {
102
+ return option_id === option.id;
103
+ });
104
+ newValue.splice(optionIndex, 1);
105
+
106
+ _this.setState({
107
+ newValue: newValue
108
+ }, function () {
109
+ _this.onCommit(newValue);
110
+ });
111
+ };
112
+
113
+ _this.onAddNewOption = function (optionName) {
114
+ _this.props.onAddNewOption(optionName);
115
+
116
+ _this.onClosePopover();
117
+ };
118
+
119
+ _this.caculatePopoverPosition = function () {
120
+ var POPOVER_MAX_HEIGHT = 200;
121
+ var innerHeight = window.innerHeight;
122
+
123
+ var _this$editor$getClien = _this.editor.getClientRects()[0],
124
+ top = _this$editor$getClien.top,
125
+ height = _this$editor$getClien.height;
126
+
127
+ var isBelow = innerHeight - (top + height) > POPOVER_MAX_HEIGHT;
128
+ var position = {
129
+ top: height + 1,
130
+ left: 0
131
+ };
132
+
133
+ if (!isBelow) {
134
+ var bottom = height + 1;
135
+ position = {
136
+ bottom: bottom,
137
+ left: 0
138
+ };
139
+ }
140
+
141
+ return position;
142
+ };
143
+
144
+ _this.onClosePopover = function () {
145
+ _this.setState({
146
+ isPopoverShow: false
147
+ });
148
+ };
149
+
150
+ _this.setEditorContainerRef = function (editorContainer) {
151
+ _this.editorContainer = editorContainer;
152
+ };
153
+
154
+ _this.setEditorRef = function (editor) {
155
+ _this.editor = editor;
156
+ };
157
+
158
+ _this.state = {
159
+ newValue: Array.isArray(props.value) ? props.value : [],
160
+ isPopoverShow: false,
161
+ popoverPosition: {}
162
+ };
163
+ var _column = _this.props.column;
164
+ _this.options = _column.data && (_column.data.options || []);
165
+ return _this;
166
+ }
167
+
168
+ _createClass(MultipleSelectEditor, [{
169
+ key: "componentDidMount",
170
+ value: function componentDidMount() {
171
+ document.addEventListener('click', this.onDocumentToggle);
172
+ }
173
+ }, {
174
+ key: "componentWillUnmount",
175
+ value: function componentWillUnmount() {
176
+ document.removeEventListener('click', this.onDocumentToggle);
177
+ }
178
+ }, {
179
+ key: "render",
180
+ value: function render() {
181
+ var _this2 = this;
182
+
183
+ var _this$state = this.state,
184
+ isPopoverShow = _this$state.isPopoverShow,
185
+ popoverPosition = _this$state.popoverPosition;
186
+ var options = this.options;
187
+ var selectedOptions = this.getFormattedOptions();
188
+ return /*#__PURE__*/React.createElement("div", {
189
+ ref: this.setEditorContainerRef,
190
+ className: "cell-editor dtable-ui-multiple-select-editor"
191
+ }, /*#__PURE__*/React.createElement("div", {
192
+ ref: this.setEditorRef,
193
+ className: "dtable-ui-select-editor-container",
194
+ onClick: this.onAddOptionToggle
195
+ }, selectedOptions.length === 0 && /*#__PURE__*/React.createElement(EditEditorButton, {
196
+ text: getLocale('Add_an_option')
197
+ }), selectedOptions.length !== 0 && selectedOptions.map(function (option) {
198
+ return /*#__PURE__*/React.createElement(SelectEditorOption, {
199
+ key: option.id,
200
+ option: option,
201
+ isShowRemoveIcon: true,
202
+ onDeleteSelectOption: _this2.onDeleteOption
203
+ });
204
+ })), isPopoverShow && /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(MediaQuery, {
205
+ query: "(min-width: 768px)"
206
+ }, /*#__PURE__*/React.createElement(PCSelectEditorPopover, {
207
+ popoverPosition: popoverPosition,
208
+ options: options,
209
+ selectedOptions: selectedOptions,
210
+ onOptionItemToggle: this.onOptionItemToggle,
211
+ isSupportNewOption: this.props.isSupportNewOption,
212
+ onAddNewOption: this.onAddNewOption
213
+ })), /*#__PURE__*/React.createElement(MediaQuery, {
214
+ query: "(max-width: 767.8px)"
215
+ }, /*#__PURE__*/React.createElement(MBSelectEditorPopover, {
216
+ isReadOnly: this.props.isReadOnly,
217
+ value: this.state.newValue,
218
+ column: this.props.column,
219
+ options: options,
220
+ onOptionItemToggle: this.onOptionItemToggle,
221
+ isShowRemoveIcon: true,
222
+ isSupportNewOption: this.props.isSupportNewOption,
223
+ onAddNewOption: this.onAddNewOption,
224
+ onClosePopover: this.onClosePopover
225
+ }))));
226
+ }
227
+ }]);
228
+
229
+ return MultipleSelectEditor;
230
+ }(React.Component);
231
+
232
+ MultipleSelectEditor.defaultProps = {
233
+ isReadOnly: false,
234
+ value: []
235
+ };
236
+ export default MultipleSelectEditor;
@@ -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 SelectItem from '../common/select-item';
7
+ import SelectItem from '../SelectItem';
8
+ import './index.css';
8
9
 
9
10
  var MultipleSelectFormatter = /*#__PURE__*/function (_React$PureComponent) {
10
11
  _inherits(MultipleSelectFormatter, _React$PureComponent);
@@ -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 from 'react';
6
+ import isHotkey from 'is-hotkey';
7
+ import { NUMBER_TYPES } from '../constants';
8
+ import { getNumberDisplayString, formatStringToNumber, formatNumberString } from '../utils/value-format-utils';
9
+
10
+ var NumberEditor = /*#__PURE__*/function (_React$Component) {
11
+ _inherits(NumberEditor, _React$Component);
12
+
13
+ var _super = _createSuper(NumberEditor);
14
+
15
+ function NumberEditor(props) {
16
+ var _this;
17
+
18
+ _classCallCheck(this, NumberEditor);
19
+
20
+ _this = _super.call(this, props);
21
+
22
+ _this.onEditorHandle = function () {
23
+ if (_this.props.isReadOnly) {
24
+ return;
25
+ }
26
+
27
+ _this.setState({
28
+ isEditorShow: true,
29
+ inputValue: _this.state.textValue
30
+ }, function () {
31
+ _this.input.focus();
32
+ });
33
+ };
34
+
35
+ _this.onCommit = function () {
36
+ var updated = {};
37
+ var column = _this.props.column;
38
+ var inputValue = _this.state.inputValue ? _this.state.inputValue.toString() : '';
39
+ var value = inputValue ? formatStringToNumber(inputValue) : ''; // format the number to submit
40
+
41
+ updated[column.key] = value;
42
+
43
+ _this.props.onCommit(updated);
44
+
45
+ var newValue = getNumberDisplayString(value, column.data); // format the number to display
46
+
47
+ _this.setState({
48
+ isEditorShow: false,
49
+ textValue: newValue
50
+ });
51
+ };
52
+
53
+ _this.onChange = function (event) {
54
+ var value = event.target.value.trim();
55
+ value = formatNumberString(value, _this.dataFormat); // format the number in changing
56
+
57
+ if (value === _this.state.inputValue) {
58
+ return;
59
+ }
60
+
61
+ _this.setState({
62
+ inputValue: value
63
+ });
64
+ };
65
+
66
+ _this.onBlur = function () {
67
+ _this.onCommit();
68
+ };
69
+
70
+ _this.onKeyDown = function (event) {
71
+ var _event$currentTarget = event.currentTarget,
72
+ selectionStart = _event$currentTarget.selectionStart,
73
+ selectionEnd = _event$currentTarget.selectionEnd,
74
+ value = _event$currentTarget.value;
75
+
76
+ if (isHotkey('enter', event)) {
77
+ event.preventDefault();
78
+
79
+ _this.onBlur();
80
+ } else if (event.keyCode === 37 && selectionStart === 0 || event.keyCode === 39 && selectionEnd === value.length) {
81
+ event.stopPropagation();
82
+ }
83
+ };
84
+
85
+ _this.onPaste = function (e) {
86
+ e.stopPropagation();
87
+ };
88
+
89
+ _this.onCut = function (e) {
90
+ e.stopPropagation();
91
+ };
92
+
93
+ _this.getStyle = function () {
94
+ return {
95
+ width: '320px',
96
+ textAlign: 'left'
97
+ };
98
+ };
99
+
100
+ _this.setInputRef = function (input) {
101
+ _this.input = input;
102
+ return _this.input;
103
+ };
104
+
105
+ var _this$props = _this.props,
106
+ _value = _this$props.value,
107
+ _column = _this$props.column;
108
+ var dataFormat = _column.data && _column.data.format;
109
+ _this.dataFormat = dataFormat || NUMBER_TYPES.NUMBER;
110
+ var initValue = getNumberDisplayString(_value, _column.data); // format the number to display
111
+
112
+ _this.state = {
113
+ inputValue: initValue,
114
+ textValue: initValue,
115
+ isEditorShow: false
116
+ };
117
+ return _this;
118
+ }
119
+
120
+ _createClass(NumberEditor, [{
121
+ key: "render",
122
+ value: function render() {
123
+ var style = this.getStyle();
124
+ return /*#__PURE__*/React.createElement("div", {
125
+ className: "cell-editor number-editor"
126
+ }, /*#__PURE__*/React.createElement("div", {
127
+ className: "number-editor-container"
128
+ }, !this.state.isEditorShow && /*#__PURE__*/React.createElement("div", {
129
+ className: "form-control",
130
+ style: style,
131
+ onClick: this.onEditorHandle
132
+ }, this.state.textValue), this.state.isEditorShow && /*#__PURE__*/React.createElement("input", {
133
+ ref: this.setInputRef,
134
+ type: "text",
135
+ className: "form-control",
136
+ style: style,
137
+ value: this.state.inputValue,
138
+ onChange: this.onChange,
139
+ onBlur: this.onBlur,
140
+ onCut: this.onCut,
141
+ onPaste: this.onPaste,
142
+ onKeyDown: this.onKeyDown
143
+ })));
144
+ }
145
+ }]);
146
+
147
+ return NumberEditor;
148
+ }(React.Component);
149
+
150
+ NumberEditor.defaultProps = {
151
+ isReadOnly: false,
152
+ value: ''
153
+ };
154
+ export default NumberEditor;
@@ -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 { getNumberDisplayString } from '../../utils/value-format-utils';
7
+ import { getNumberDisplayString } from '../utils/value-format-utils';
8
+ import './index.css';
8
9
 
9
10
  var NumberFormatter = /*#__PURE__*/function (_React$Component) {
10
11
  _inherits(NumberFormatter, _React$Component);
@@ -0,0 +1 @@
1
+ @import url('../css/cell-formatter.css');
@@ -4,6 +4,7 @@ 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 './index.css';
7
8
 
8
9
  var RateFormatter = /*#__PURE__*/function (_React$Component) {
9
10
  _inherits(RateFormatter, _React$Component);