shineout 1.7.3 → 1.8.0-rc.3

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 (71) hide show
  1. package/css/AnimationList/AbsoluteList.js +45 -21
  2. package/css/Form/FieldSet.js +0 -1
  3. package/css/Menu/styles/menu.css +64 -27
  4. package/css/Scroll/Bar.js +17 -4
  5. package/css/Scroll/Scroll.js +6 -3
  6. package/css/Scroll/styles/scroll.css +29 -8
  7. package/css/Select/BoxList.js +13 -17
  8. package/css/Select/Input.js +93 -6
  9. package/css/Select/Result.js +6 -3
  10. package/css/Select/Select.js +6 -3
  11. package/css/Select/index.d.ts +8 -0
  12. package/css/Select/styles/select.css +128 -46
  13. package/css/Table/Table.js +3 -1
  14. package/css/Table/styles/table.css +123 -1
  15. package/css/hoc/styles/hidable.css +0 -12
  16. package/css/index.d.ts +1 -1
  17. package/css/index.js +1 -1
  18. package/css/utils/dom/element.js +2 -1
  19. package/css/utils/dom/translate.js +16 -3
  20. package/dist/shineout.js +338 -206
  21. package/dist/shineout.js.map +1 -1
  22. package/dist/shineout.min.js +1 -1
  23. package/dist/theme.antd.css +1 -1
  24. package/dist/theme.antd2.css +1 -1
  25. package/dist/theme.default.css +1 -1
  26. package/dist/theme.shineout.css +1 -1
  27. package/es/AnimationList/AbsoluteList.js +26 -13
  28. package/es/Form/FieldSet.js +0 -1
  29. package/es/Menu/styles/menu.less +117 -51
  30. package/es/Scroll/Bar.js +14 -6
  31. package/es/Scroll/Scroll.js +7 -3
  32. package/es/Scroll/styles/scroll.less +32 -6
  33. package/es/Select/BoxList.js +12 -12
  34. package/es/Select/Input.js +70 -1
  35. package/es/Select/Result.js +3 -0
  36. package/es/Select/Select.js +4 -1
  37. package/es/Select/index.d.ts +8 -0
  38. package/es/Select/styles/select.less +124 -45
  39. package/es/Table/Table.js +3 -1
  40. package/es/Table/styles/table.less +144 -2
  41. package/es/hoc/styles/hidable.less +10 -10
  42. package/es/index.d.ts +1 -1
  43. package/es/index.js +1 -1
  44. package/es/styles/themes/antd.less +1 -0
  45. package/es/styles/themes/bootstrap.less +1 -0
  46. package/es/styles/themes/shineout.less +2 -0
  47. package/es/utils/dom/element.js +2 -1
  48. package/es/utils/dom/translate.js +14 -3
  49. package/lib/AnimationList/AbsoluteList.js +45 -21
  50. package/lib/Form/FieldSet.js +0 -1
  51. package/lib/Menu/styles/menu.less +117 -51
  52. package/lib/Scroll/Bar.js +17 -4
  53. package/lib/Scroll/Scroll.js +6 -3
  54. package/lib/Scroll/styles/scroll.less +32 -6
  55. package/lib/Select/BoxList.js +13 -17
  56. package/lib/Select/Input.js +93 -6
  57. package/lib/Select/Result.js +6 -3
  58. package/lib/Select/Select.js +6 -3
  59. package/lib/Select/index.d.ts +8 -0
  60. package/lib/Select/styles/select.less +124 -45
  61. package/lib/Table/Table.js +3 -1
  62. package/lib/Table/styles/table.less +144 -2
  63. package/lib/hoc/styles/hidable.less +10 -10
  64. package/lib/index.d.ts +1 -1
  65. package/lib/index.js +1 -1
  66. package/lib/styles/themes/antd.less +1 -0
  67. package/lib/styles/themes/bootstrap.less +1 -0
  68. package/lib/styles/themes/shineout.less +2 -0
  69. package/lib/utils/dom/element.js +2 -1
  70. package/lib/utils/dom/translate.js +16 -3
  71. package/package.json +1 -1
@@ -50,6 +50,16 @@ function initRoot() {
50
50
  document.body.appendChild(root);
51
51
  }
52
52
 
53
+ var getOverDocStyle = function getOverDocStyle() {
54
+ return (0, _config.isRTL)() ? {
55
+ left: 0,
56
+ right: 'auto'
57
+ } : {
58
+ right: 0,
59
+ left: 'auto'
60
+ };
61
+ };
62
+
53
63
  var listPosition = ['drop-down', 'drop-up'];
54
64
  var pickerPosition = ['left-bottom', 'left-top', 'right-bottom', 'right-top'];
55
65
  var dropdownPosition = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];
@@ -121,7 +131,8 @@ function _default(List) {
121
131
  var position = this.props.position;
122
132
  var rtl = (0, _config.isRTL)();
123
133
  var style = {
124
- position: 'absolute'
134
+ position: 'absolute',
135
+ right: 'auto'
125
136
  };
126
137
 
127
138
  if (fixed) {
@@ -137,13 +148,8 @@ function _default(List) {
137
148
  position = (0, _strings.getRTLPosition)(position);
138
149
  }
139
150
 
140
- var containerScroll = _document.docScroll;
141
- var containerRect = {
142
- left: 0,
143
- top: 0,
144
- right: 0,
145
- bottom: 0
146
- };
151
+ var containerScroll;
152
+ var containerRect;
147
153
  var container = this.container;
148
154
 
149
155
  if (typeof absolute === 'function' && container) {
@@ -152,6 +158,22 @@ function _default(List) {
152
158
  left: container.scrollLeft,
153
159
  top: container.scrollTop
154
160
  };
161
+
162
+ if (rtl) {
163
+ containerScroll.width = container.scrollWidth;
164
+ }
165
+ } else {
166
+ containerRect = {
167
+ left: 0,
168
+ top: 0,
169
+ right: 0,
170
+ bottom: 0
171
+ };
172
+ containerScroll = _document.docScroll;
173
+
174
+ if (rtl) {
175
+ containerRect.width = document.documentElement.clientWidth || document.body.clientWidth;
176
+ }
155
177
  }
156
178
 
157
179
  this.containerRect = containerRect;
@@ -159,10 +181,6 @@ function _default(List) {
159
181
  if (listPosition.includes(position)) {
160
182
  style.left = rect.left - containerRect.left + containerScroll.left;
161
183
 
162
- if (rtl) {
163
- style.left += rect.width;
164
- }
165
-
166
184
  if (position === 'drop-down') {
167
185
  style.top = rect.top - containerRect.top + rect.height + containerScroll.top;
168
186
  } else {
@@ -188,6 +206,11 @@ function _default(List) {
188
206
  }
189
207
  }
190
208
 
209
+ if (rtl && style.left) {
210
+ style.right = containerRect.width - rect.width - style.left;
211
+ style.left = 'auto';
212
+ }
213
+
191
214
  return style;
192
215
  };
193
216
 
@@ -243,7 +266,14 @@ function _default(List) {
243
266
  left: 0,
244
267
  width: 0
245
268
  };
246
- var overdoc = left - containerRect.left + pos.width > (containerRect.width || _document.docSize.width);
269
+ var overdoc;
270
+
271
+ if ((0, _config.isRTL)()) {
272
+ overdoc = pos.left < containerRect.left;
273
+ } else {
274
+ overdoc = left - containerRect.left + pos.width > (containerRect.width || _document.docSize.width);
275
+ }
276
+
247
277
  if (this.state.overdoc === overdoc) return;
248
278
  this.ajustdoc = true;
249
279
  this.setState({
@@ -273,10 +303,7 @@ function _default(List) {
273
303
  props = (0, _objectWithoutPropertiesLoose2.default)(_this$props4, ["parentElement", "absolute", "focus", "rootClass", "position", "scrollLeft", "scrollTop", "scrollElement", "style", "zIndex", "getResetPosition", "autoAdapt"]);
274
304
  var parsed = parseInt(zIndex, 10);
275
305
  if (!Number.isNaN(parsed)) style.zIndex = parsed;
276
- var mergeStyle = Object.assign({}, style, this.state.overdoc ? {
277
- right: 0,
278
- left: 'auto'
279
- } : undefined);
306
+ var mergeStyle = Object.assign({}, style, this.state.overdoc ? getOverDocStyle() : undefined);
280
307
  return _react.default.createElement(List, (0, _extends2.default)({
281
308
  getRef: this.handleRef
282
309
  }, props, {
@@ -321,10 +348,7 @@ function _default(List) {
321
348
  style = _ref.style;
322
349
 
323
350
  this.element.className = mergeClass;
324
- var mergeStyle = Object.assign({}, style, props.style, this.state.overdoc ? {
325
- right: 0,
326
- left: 'auto'
327
- } : undefined);
351
+ var mergeStyle = Object.assign({}, style, props.style, this.state.overdoc ? getOverDocStyle() : undefined);
328
352
  if (zIndex || typeof zIndex === 'number') mergeStyle.zIndex = parseInt(zIndex, 10);
329
353
  return _reactDom.default.createPortal(_react.default.createElement(List, (0, _extends2.default)({
330
354
  getRef: this.handleRef
@@ -193,7 +193,6 @@ function (_Component) {
193
193
  result.push(empty(this.handleInsert.bind(this, 0)));
194
194
  } else {
195
195
  var errorList = (Array.isArray(errors) ? errors : [errors]).filter(Boolean);
196
- console.log(errorList);
197
196
  values.forEach(function (v, i) {
198
197
  result.push(_react.default.createElement(Provider, {
199
198
  key: i,
@@ -533,48 +533,85 @@ ul.so-menu-root {
533
533
  }
534
534
  .so-menu.so-menu-rtl {
535
535
  direction: rtl;
536
- text-align: right;
537
536
  }
538
- .so-menu.so-menu-rtl:not(.so-menu-horizontal) .so-menu-active.so-menu-no-children a:before {
539
- position: absolute;
540
- top: 0;
541
- left: 0px;
542
- width: 3px;
543
- height: 100%;
544
- background: var(--primary-color, #3399ff);
545
- content: ' ';
546
- }
547
- .so-menu.so-menu-rtl:not(.so-menu-horizontal) .so-menu-active.so-menu-no-children a:after {
548
- content: none;
537
+ .so-menu.so-menu-rtl ul.so-menu-root {
538
+ margin-left: 0;
539
+ margin-right: -1px;
549
540
  }
550
- .so-menu.so-menu-rtl .so-menu-has-children:not(.so-menu-caret-solid) > .so-menu-title {
551
- padding-left: 32px;
541
+ .so-menu.so-menu-rtl .so-menu-has-children > .so-menu-title {
552
542
  padding-right: 16px;
543
+ padding-left: 32px;
553
544
  }
554
- .so-menu.so-menu-rtl .so-menu-has-children:not(.so-menu-caret-solid) > .so-menu-title:after {
545
+ .so-menu.so-menu-rtl .so-menu-has-children > .so-menu-title .so-menu-expand {
555
546
  right: auto;
556
- left: 16px;
547
+ left: 0;
548
+ }
549
+ .so-menu.so-menu-rtl .so-menu-has-children > .so-menu-title .so-menu-expand:after {
550
+ right: 14px;
557
551
  }
558
- .so-menu.so-menu-rtl .so-menu-has-children:not(.so-menu-caret-solid) > .so-menu-title:before {
552
+ .so-menu.so-menu-rtl.so-menu-inline {
553
+ border-left: solid 1px #e8e8e8;
554
+ border-right: none;
555
+ }
556
+ .so-menu.so-menu-rtl .so-menu-inline .so-menu-active.so-menu-no-children > a:before,
557
+ .so-menu.so-menu-rtl .so-menu-inline .so-menu-active.so-menu-selectable > a:before {
558
+ right: auto;
559
+ left: 0;
560
+ }
561
+ .so-menu.so-menu-rtl .so-menu-horizontal {
562
+ margin-right: 0;
563
+ }
564
+ .so-menu.so-menu-rtl .so-menu-horizontal .so-menu-root .so-menu-list {
559
565
  left: auto;
560
566
  right: 0;
561
567
  }
562
- .so-menu.so-menu-rtl .so-menu-has-children.so-menu-open > .so-menu-title:after {
568
+ .so-menu.so-menu-rtl ul.so-menu-horizontal.so-menu-root {
569
+ margin-right: 0;
570
+ }
571
+ .so-menu.so-menu-rtl.so-menu-vertical.so-menu-root {
572
+ border-left: solid 1px #e8e8e8;
573
+ border-right: none;
574
+ }
575
+ .so-menu.so-menu-rtl.so-menu-vertical .so-menu-root .so-menu-list {
576
+ left: auto;
577
+ right: 100%;
578
+ margin-left: 0;
579
+ margin-right: 3px;
580
+ }
581
+ .so-menu.so-menu-rtl.so-menu-vertical .so-menu-has-children > .so-menu-title .so-menu-expand:after,
582
+ .so-menu.so-menu-rtl.so-menu-vertical .so-menu-has-children.so-menu-open > .so-menu-title .so-menu-expand:after {
563
583
  -webkit-transform: translateY(-50%) rotate(180deg);
564
584
  -ms-transform: translateY(-50%) rotate(180deg);
565
585
  transform: translateY(-50%) rotate(180deg);
566
586
  }
567
- .so-menu.so-menu-rtl .so-menu-has-children.so-menu-caret-solid > .so-menu-title .so-menu-caret {
587
+ .so-menu.so-menu-rtl.so-menu-vertical .so-menu-in-path.so-menu-has-children > a::before {
588
+ right: auto;
589
+ left: 0;
590
+ }
591
+ .so-menu.so-menu-rtl.so-menu-dark:not(.so-menu-horizontal) .so-menu-has-children.so-menu-in-path > a:before {
592
+ left: auto;
593
+ right: 0;
594
+ }
595
+ .so-menu.so-menu-rtl.so-menu-dark.so-menu-vertical ul.so-menu-root {
568
596
  margin-right: 0;
569
- margin-left: 8px;
597
+ border-left: none;
570
598
  }
571
- .so-menu.so-menu-rtl .so-menu-has-children.so-menu-caret-hollow > .so-menu-title .so-menu-caret {
572
- margin-left: 10px;
573
- margin-right: 4px;
599
+ .so-menu.so-menu-rtl.so-menu-dark.so-menu-vertical .so-menu-has-children .so-menu-title::after {
600
+ left: 18px;
601
+ right: auto;
574
602
  }
575
- .so-menu.so-menu-rtl.so-menu-vertical .so-menu-root .so-menu-list.so-menu-vertical {
603
+ .so-menu.so-menu-rtl.so-menu-dark.so-menu-vertical .so-menu-in-path.so-menu-has-children > a::before {
576
604
  left: auto;
577
- right: 100%;
578
- margin-left: 0;
579
- margin-right: 3px;
605
+ right: 0;
606
+ }
607
+ .so-menu.so-menu-rtl .so-menu-has-children.so-menu-caret-solid > .so-menu-title {
608
+ padding-left: 16px;
609
+ }
610
+ .so-menu.so-menu-rtl .so-menu-caret-solid .so-menu-title > .so-menu-caret {
611
+ margin-right: 0;
612
+ margin-left: 8px;
613
+ }
614
+ .so-menu.so-menu-rtl .so-menu-caret-hollow .so-menu-caret {
615
+ margin-right: -4px;
616
+ margin-left: 14px;
580
617
  }
package/css/Scroll/Bar.js CHANGED
@@ -21,6 +21,8 @@ var _styles = require("./styles");
21
21
 
22
22
  var _fixedLength = _interopRequireDefault(require("./fixedLength"));
23
23
 
24
+ var _config = require("../config");
25
+
24
26
  var ScrollBar =
25
27
  /*#__PURE__*/
26
28
  function (_PureComponent) {
@@ -96,7 +98,14 @@ function (_PureComponent) {
96
98
  onScroll = _this$props.onScroll,
97
99
  barLength = _this$props.barLength;
98
100
  var value = direction === 'x' ? x : y;
99
- var newOffset = this.cacheOffset + value / (length - barLength);
101
+ var newOffset;
102
+
103
+ if (direction === 'x' && (0, _config.isRTL)()) {
104
+ newOffset = this.cacheOffset - value / (length - barLength);
105
+ } else {
106
+ newOffset = this.cacheOffset + value / (length - barLength);
107
+ }
108
+
100
109
  if (newOffset < 0) newOffset = 0;
101
110
  if (newOffset > 1) newOffset = 1;
102
111
  if (newOffset === this.cacheOffset) return;
@@ -115,11 +124,13 @@ function (_PureComponent) {
115
124
  var rect = this.handle.getBoundingClientRect();
116
125
  var newOffset = offset;
117
126
  var page = length / (scrollLength - length);
127
+ var plus = (0, _config.isRTL)() ? event.clientX < rect.left : event.clientX > rect.left;
128
+ var add = (0, _config.isRTL)() ? event.clientX > rect.left : event.clientX < rect.left;
118
129
 
119
- if (direction === 'x' && event.clientX < rect.left || direction === 'y' && event.clientY < rect.top) {
130
+ if (direction === 'x' && add || direction === 'y' && event.clientY < rect.top) {
120
131
  newOffset = offset - page;
121
132
  if (newOffset < 0) newOffset = 0;
122
- } else if (direction === 'x' && event.clientX > rect.right || direction === 'y' && event.clientY > rect.top) {
133
+ } else if (direction === 'x' && plus || direction === 'y' && event.clientY > rect.top) {
123
134
  newOffset = offset + page;
124
135
  if (newOffset > 1) newOffset = 1;
125
136
  }
@@ -137,14 +148,16 @@ function (_PureComponent) {
137
148
  forceHeight = _this$props3.forceHeight;
138
149
  var dragging = this.state.dragging;
139
150
  var show = scrollLength > length;
151
+ var rtl = (0, _config.isRTL)();
140
152
  var className = (0, _classnames.default)((0, _styles.scrollClass)('bar', direction, show && 'show', dragging && 'dragging', !forceHeight && 'padding-y'), this.props.className);
141
153
  var value = (length - barLength) * offset;
154
+ var x = rtl ? 'right' : 'left';
142
155
  var style = {};
143
156
 
144
157
  if (scrollLength > 0) {
145
158
  if (direction === 'x') {
146
159
  style.width = length / scrollLength * 100 + "%";
147
- style.left = value;
160
+ style[x] = value;
148
161
  } else {
149
162
  style.height = length / scrollLength * 100 + "%";
150
163
  style.top = value;
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
3
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
6
 
5
7
  exports.__esModule = true;
@@ -29,7 +31,7 @@ var _styles = require("./styles");
29
31
 
30
32
  var _Bar = _interopRequireDefault(require("./Bar"));
31
33
 
32
- var _config = _interopRequireDefault(require("../config"));
34
+ var _config = _interopRequireWildcard(require("../config"));
33
35
 
34
36
  var _context = require("./context");
35
37
 
@@ -221,7 +223,7 @@ function (_PureComponent) {
221
223
  if (target !== this.wheelElement) return;
222
224
  var wheel = (0, _normalizeWheel.default)(event);
223
225
  this.setBaseScrollHeightRatio(wheel.pixelY);
224
- if (scrollX) this.pixelX += wheel.pixelX;
226
+ if (scrollX) this.pixelX = (0, _config.isRTL)() ? this.pixelX - wheel.pixelX : this.pixelX + wheel.pixelX;
225
227
  if (scrollY) this.pixelY += wheel.pixelY * this.baseScrollRatio;
226
228
 
227
229
  if (Math.abs(wheel.pixelX) > Math.abs(wheel.pixelY)) {
@@ -295,7 +297,8 @@ function (_PureComponent) {
295
297
  width = _this$getWheelRect2.width,
296
298
  height = _this$getWheelRect2.height;
297
299
 
298
- var className = (0, _classnames.default)((0, _styles.scrollClass)('_', scrollX && 'show-x', scrollY && 'show-y'), this.props.className);
300
+ var rtl = (0, _config.isRTL)();
301
+ var className = (0, _classnames.default)((0, _styles.scrollClass)('_', scrollX && 'show-x', scrollY && 'show-y', rtl && 'rtl'), this.props.className);
299
302
  var yLength = scrollHeight < height ? scrollHeight : height;
300
303
  this.wheelY = scrollY && Math.ceil(scrollHeight) > Math.ceil(yLength);
301
304
  this.wheelX = scrollX && Math.ceil(scrollWidth) > Math.ceil(width);
@@ -103,17 +103,38 @@
103
103
  .so-scroll-show-y .so-scroll-inner {
104
104
  bottom: 16px;
105
105
  }
106
- .so-select-rtl .so-scroll-show-y,
107
- .so-menu-rtl .so-scroll-show-y,
108
- .so-input-rtl .so-scroll-show-y,
109
- .so-transfer-rtl .so-scroll-show-y {
106
+ .so-scroll.so-scroll-rtl {
107
+ direction: rtl;
108
+ }
109
+ .so-scroll.so-scroll-rtl .so-scroll-inner {
110
+ left: auto;
111
+ right: 0;
112
+ }
113
+ .so-scroll.so-scroll-rtl .so-scroll-bar.so-scroll-y {
114
+ right: auto;
115
+ left: 0;
116
+ }
117
+ .so-scroll.so-scroll-rtl .so-scroll-bar.so-scroll-y .so-scroll-handle {
118
+ right: 2px;
119
+ left: auto;
120
+ }
121
+ .so-scroll.so-scroll-rtl .so-scroll-bar.so-scroll-y.so-scroll-padding-y:after {
122
+ right: -1px;
123
+ left: auto;
124
+ }
125
+ .so-scroll.so-scroll-rtl.so-scroll-show-y {
110
126
  padding-right: 0;
111
127
  padding-left: 16px;
112
128
  }
113
- .so-select-rtl .so-scroll-bar.so-scroll-y,
114
- .so-menu-rtl .so-scroll-bar.so-scroll-y,
115
- .so-input-rtl .so-scroll-bar.so-scroll-y,
116
- .so-transfer-rtl .so-scroll-bar.so-scroll-y {
129
+ .so-scroll.so-scroll-rtl.so-scroll-show-y .so-scroll-x {
130
+ right: 0;
131
+ left: 16px;
132
+ }
133
+ .so-scroll-show-x .so-scroll.so-scroll-rtl-inner {
134
+ right: 0;
135
+ left: 16px;
136
+ }
137
+ .so-scroll.so-scroll-rtl .so-scroll-bar.so-scroll-y {
117
138
  right: auto;
118
139
  left: 0;
119
140
  }
@@ -17,16 +17,12 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
18
  var _locale = require("../locale");
19
19
 
20
- var _icons = _interopRequireDefault(require("../icons"));
21
-
22
20
  var _uid = require("../utils/uid");
23
21
 
24
22
  var _AnimationList = _interopRequireDefault(require("../AnimationList"));
25
23
 
26
24
  var _Spin = _interopRequireDefault(require("../Spin"));
27
25
 
28
- var _Input = _interopRequireDefault(require("../Input"));
29
-
30
26
  var _Checkbox = _interopRequireDefault(require("../Checkbox/Checkbox"));
31
27
 
32
28
  var _styles = require("./styles");
@@ -35,6 +31,8 @@ var _BoxOption = _interopRequireDefault(require("./BoxOption"));
35
31
 
36
32
  var _LazyList = _interopRequireDefault(require("../AnimationList/LazyList"));
37
33
 
34
+ // import icons from '../icons'
35
+ // import Input from '../Input'
38
36
  var ScaleList = (0, _AnimationList.default)(['fade', 'scale-y'], 'fast', 'flex');
39
37
 
40
38
  var emptyFunc = function emptyFunc() {};
@@ -109,18 +107,16 @@ function (_Component) {
109
107
  renderItem: renderItem
110
108
  });
111
109
  }));
112
- };
113
-
114
- _proto.renderFilter = function renderFilter() {
115
- var filterText = this.props.filterText;
116
- return _react.default.createElement(_Input.default.Group, {
117
- size: "small",
118
- className: (0, _styles.selectClass)('filter-input')
119
- }, _react.default.createElement(_Input.default, {
120
- value: filterText,
121
- onChange: this.handleSearch
122
- }), _icons.default.SEARCH);
123
- };
110
+ } // renderFilter() {
111
+ // const { filterText } = this.props
112
+ // return (
113
+ // <Input.Group size="small" className={selectClass('filter-input')}>
114
+ // <Input value={filterText} onChange={this.handleSearch} />
115
+ // {icons.SEARCH}
116
+ // </Input.Group>
117
+ // )
118
+ // }
119
+ ;
124
120
 
125
121
  _proto.renderHeader = function renderHeader(count) {
126
122
  var _this$props4 = this.props,
@@ -247,7 +243,7 @@ BoxList.propTypes = {
247
243
  columns: _propTypes.default.number,
248
244
  data: _propTypes.default.array,
249
245
  datum: _propTypes.default.object.isRequired,
250
- filterText: _propTypes.default.string,
246
+ // filterText: PropTypes.string,
251
247
  focus: _propTypes.default.bool,
252
248
  keygen: _propTypes.default.any,
253
249
  loading: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.bool]),
@@ -44,6 +44,8 @@ function (_Component) {
44
44
  _this.bindElement = _this.bindElement.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
45
45
  _this.handleInput = _this.handleInput.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
46
46
  _this.handleBlur = _this.handleBlur.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
47
+ _this.geHandleMax = _this.geHandleMax.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
48
+ _this.handlePaste = _this.handlePaste.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
47
49
  _this.focusInput = _this.focusInput.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); // for mutiple select
48
50
 
49
51
  _this.props.setInputReset(_this.reset.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)))); // set focus func to Select
@@ -78,13 +80,91 @@ function (_Component) {
78
80
  return trim ? text.trim() : text.replace(/\u00A0/g, ' ');
79
81
  };
80
82
 
83
+ _proto.handlePaste = function handlePaste(e) {
84
+ var _this2 = this;
85
+
86
+ (0, _element.preventPasteFile)(e, function (text) {
87
+ if (window.getSelection) {
88
+ var selection = window.getSelection();
89
+ _this2.lastSelect = {
90
+ anchorOffset: selection.anchorOffset,
91
+ focusOffset: selection.focusOffset,
92
+ text: text
93
+ };
94
+ }
95
+ });
96
+ };
97
+
98
+ _proto.geHandleMax = function geHandleMax(e) {
99
+ var maxLength = this.props.maxLength;
100
+
101
+ if (!maxLength) {
102
+ return true;
103
+ }
104
+
105
+ var change = true;
106
+ var text = e.target.innerText;
107
+
108
+ if (text.length >= maxLength) {
109
+ var lastPos;
110
+
111
+ if (window.getSelection) {
112
+ lastPos = Math.min(window.getSelection().anchorOffset - (text.length > maxLength ? 1 : 0), maxLength);
113
+ }
114
+
115
+ if (!this.lastMaxValue) {
116
+ this.lastMaxValue = text.slice(0, maxLength);
117
+ } else if (this.lastSelect) {
118
+ var _this$lastSelect = this.lastSelect,
119
+ anchorOffset = _this$lastSelect.anchorOffset,
120
+ focusOffset = _this$lastSelect.focusOffset,
121
+ str = _this$lastSelect.text;
122
+ var start = anchorOffset < focusOffset ? anchorOffset : focusOffset;
123
+ var end = anchorOffset > focusOffset ? anchorOffset : focusOffset;
124
+
125
+ if (end - start > 0) {
126
+ this.lastMaxValue = this.lastMaxValue.slice(0, start) + str.slice(0, end - start) + this.lastMaxValue.slice(end);
127
+ lastPos = focusOffset;
128
+ } else {
129
+ change = false;
130
+ }
131
+ } else {
132
+ change = false;
133
+ } // clear select info
134
+
135
+
136
+ this.lastSelect = false;
137
+ e.target.innerText = this.lastMaxValue;
138
+
139
+ if (lastPos) {
140
+ var selection = window.getSelection();
141
+ var range = selection.getRangeAt(0);
142
+ var textNode = range.startContainer;
143
+
144
+ if (textNode.nodeName !== '#text') {
145
+ ;
146
+ var _textNode$childNodes = textNode.childNodes;
147
+ textNode = _textNode$childNodes[0];
148
+ }
149
+
150
+ range.setStart(textNode, lastPos);
151
+ range.collapse(true);
152
+ }
153
+ } else {
154
+ this.lastMaxValue = '';
155
+ } // eslint-disable-next-line consistent-return
156
+
157
+
158
+ return change;
159
+ };
160
+
81
161
  _proto.reset = function reset() {
82
162
  if (this.editElement) this.editElement.innerText = '';
83
163
  if (this.blurTimer) clearTimeout(this.blurTimer);
84
164
  };
85
165
 
86
166
  _proto.focusInput = function focusInput(flag) {
87
- var _this2 = this;
167
+ var _this3 = this;
88
168
 
89
169
  if (flag === void 0) {
90
170
  flag = false;
@@ -100,17 +180,17 @@ function (_Component) {
100
180
  this.setState({
101
181
  editable: true
102
182
  }, function () {
103
- return _this2.focus();
183
+ return _this3.focus();
104
184
  });
105
185
  };
106
186
 
107
187
  _proto.focus = function focus() {
108
- var _this3 = this;
188
+ var _this4 = this;
109
189
 
110
190
  var focusSelected = this.props.focusSelected;
111
191
  var action = focusSelected ? _element.focusElement.select : _element.focusElement.end;
112
192
  requestAnimationFrame(function () {
113
- action(_this3.editElement);
193
+ action(_this4.editElement);
114
194
  });
115
195
  };
116
196
 
@@ -119,6 +199,12 @@ function (_Component) {
119
199
  };
120
200
 
121
201
  _proto.handleInput = function handleInput(e) {
202
+ var change = this.geHandleMax(e);
203
+
204
+ if (!change) {
205
+ return;
206
+ }
207
+
122
208
  var text = e.target.innerText.replace('\feff ', '');
123
209
  this.lastCursorOffset = (0, _element.getCursorOffset)(text.length);
124
210
  var t = this.getProcessedValue(text);
@@ -161,7 +247,7 @@ function (_Component) {
161
247
  __html: value
162
248
  }
163
249
  }, props, {
164
- onPaste: _element.preventPasteFile
250
+ onPaste: this.handlePaste
165
251
  }));
166
252
  };
167
253
 
@@ -180,7 +266,8 @@ FilterInput.propTypes = {
180
266
  trim: _propTypes.default.bool,
181
267
  focusSelected: _propTypes.default.bool,
182
268
  bindFocusInputFunc: _propTypes.default.func,
183
- collapse: _propTypes.default.func
269
+ collapse: _propTypes.default.func,
270
+ maxLength: _propTypes.default.number
184
271
  };
185
272
  FilterInput.defaultProps = {
186
273
  text: '',
@@ -261,7 +261,8 @@ function (_PureComponent) {
261
261
  setInputReset = _this$props6.setInputReset,
262
262
  focusSelected = _this$props6.focusSelected,
263
263
  bindFocusInputFunc = _this$props6.bindFocusInputFunc,
264
- collapse = _this$props6.collapse;
264
+ collapse = _this$props6.collapse,
265
+ maxLength = _this$props6.maxLength;
265
266
  return _react.default.createElement(_Input.default, {
266
267
  key: key + "." + (focus ? 1 : 0),
267
268
  onInputFocus: onInputFocus,
@@ -275,7 +276,8 @@ function (_PureComponent) {
275
276
  setInputReset: setInputReset,
276
277
  focusSelected: focusSelected,
277
278
  bindFocusInputFunc: bindFocusInputFunc,
278
- collapse: collapse
279
+ collapse: collapse,
280
+ maxLength: maxLength
279
281
  });
280
282
  };
281
283
 
@@ -400,7 +402,8 @@ Result.propTypes = {
400
402
  showArrow: _propTypes.default.bool,
401
403
  focusSelected: _propTypes.default.bool,
402
404
  compressedClassName: _propTypes.default.string,
403
- resultClassName: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func])
405
+ resultClassName: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),
406
+ maxLength: _propTypes.default.number
404
407
  };
405
408
  var _default = Result;
406
409
  exports.default = _default;
@@ -522,7 +522,7 @@ function (_PureComponent) {
522
522
  onChange: this.handleChange,
523
523
  parentElement: this.element,
524
524
  position: position,
525
- rootClass: (0, _styles.selectClass)(position),
525
+ rootClass: (0, _styles.selectClass)(position, (0, _config.isRTL)() && 'rtl'),
526
526
  selectId: this.selectId,
527
527
  focus: focus,
528
528
  renderPending: this.renderPending,
@@ -596,7 +596,8 @@ function (_PureComponent) {
596
596
  renderUnmatched = _this$props12.renderUnmatched,
597
597
  showArrow = _this$props12.showArrow,
598
598
  compressedClassName = _this$props12.compressedClassName,
599
- resultClassName = _this$props12.resultClassName;
599
+ resultClassName = _this$props12.resultClassName,
600
+ maxLength = _this$props12.maxLength;
600
601
  var className = (0, _styles.selectClass)('inner', size, this.state.focus && 'focus', this.state.position, multiple && 'multiple', disabled === true && 'disabled', !trim && 'pre');
601
602
  return _react.default.createElement("div", {
602
603
  // eslint-disable-next-line
@@ -610,6 +611,7 @@ function (_PureComponent) {
610
611
  onKeyUp: this.handleKeyUp
611
612
  }, _react.default.createElement(_Result.default, {
612
613
  trim: trim,
614
+ maxLength: maxLength,
613
615
  filterText: filterText,
614
616
  onClear: clearable ? this.handleClear : undefined,
615
617
  onCreate: onCreate,
@@ -674,7 +676,8 @@ Select.propTypes = (0, _objectSpread2.default)({}, (0, _proptypes.getProps)(_pro
674
676
  onCollapse: _propTypes.default.func,
675
677
  resultClassName: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),
676
678
  reFocus: _propTypes.default.bool,
677
- header: _propTypes.default.node
679
+ header: _propTypes.default.node,
680
+ maxLength: _propTypes.default.number
678
681
  });
679
682
  Select.defaultProps = {
680
683
  clearable: false,