@nutui/nutui-react 2.0.0-alpha.0 → 2.0.0-alpha.10

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 (126) hide show
  1. package/CHANGELOG.md +137 -638
  2. package/dist/esm/Address.js +1 -1
  3. package/dist/esm/Animate.js +6 -7
  4. package/dist/esm/Audio.js +28 -27
  5. package/dist/esm/Avatar.js +30 -25
  6. package/dist/esm/AvatarGroup.js +10 -15
  7. package/dist/esm/Badge.js +4 -73
  8. package/dist/esm/CalendarItem.js +2 -12
  9. package/dist/esm/Cascader.js +67 -69
  10. package/dist/esm/Checkbox.js +1 -2
  11. package/dist/esm/CheckboxGroup.js +18 -20
  12. package/dist/esm/CircleProgress.js +20 -25
  13. package/dist/esm/Col.js +4 -3
  14. package/dist/esm/DatePicker.js +10 -10
  15. package/dist/esm/Dialog.js +162 -171
  16. package/dist/esm/Divider.js +4 -3
  17. package/dist/esm/Drag.js +7 -9
  18. package/dist/esm/Elevator.js +39 -41
  19. package/dist/esm/Ellipsis.js +13 -12
  20. package/dist/esm/Empty.js +18 -26
  21. package/dist/esm/Image.js +5 -10
  22. package/dist/esm/ImagePreview.js +67 -58
  23. package/dist/esm/Indicator.js +4 -4
  24. package/dist/esm/Input.js +87 -193
  25. package/dist/esm/Menu.js +75 -73
  26. package/dist/esm/MenuItem.js +29 -27
  27. package/dist/esm/NavBar.js +17 -48
  28. package/dist/esm/NoticeBar.js +50 -87
  29. package/dist/esm/Notify.js +35 -46
  30. package/dist/esm/NumberKeyboard.js +137 -195
  31. package/dist/esm/Picker.js +175 -160
  32. package/dist/esm/Popup.js +24 -33
  33. package/dist/esm/Price.js +22 -23
  34. package/dist/esm/Progress.js +74 -67
  35. package/dist/esm/PullToRefresh.js +8 -8
  36. package/dist/esm/Radio.js +2 -0
  37. package/dist/esm/RadioGroup.js +31 -51
  38. package/dist/esm/Range/style/index.js +1 -1
  39. package/dist/esm/Range.js +119 -174
  40. package/dist/esm/Row.js +6 -5
  41. package/dist/esm/SideNavBar.js +0 -2
  42. package/dist/esm/Skeleton.js +1 -1
  43. package/dist/esm/Step.js +23 -28
  44. package/dist/esm/Steps/style/index.js +1 -1
  45. package/dist/esm/Steps.js +10 -11
  46. package/dist/esm/Swipe.js +4 -10
  47. package/dist/esm/Swiper.js +86 -91
  48. package/dist/esm/SwiperItem.js +1 -1
  49. package/dist/esm/Switch.js +16 -30
  50. package/dist/esm/TabPane.js +39 -5
  51. package/dist/esm/Tabbar/style/index.js +1 -1
  52. package/dist/esm/Tabbar.js +29 -33
  53. package/dist/esm/TabbarItem.js +5 -75
  54. package/dist/esm/Table.js +20 -34
  55. package/dist/esm/Tabs.js +2 -2
  56. package/dist/esm/TextArea.js +53 -81
  57. package/dist/esm/Uploader.js +49 -52
  58. package/dist/esm/badge2.js +69 -0
  59. package/dist/esm/cellgroup2.js +5 -4
  60. package/dist/esm/checkbox2.js +34 -47
  61. package/dist/esm/nutui-react.es.js +170 -170
  62. package/dist/esm/overlay2.js +12 -14
  63. package/dist/esm/radio2.js +52 -54
  64. package/dist/esm/raf.js +16 -0
  65. package/dist/esm/tabbaritem2.js +61 -0
  66. package/dist/esm/tabs2.js +126 -95
  67. package/dist/locales/base.js +1 -1
  68. package/dist/locales/en-US.js +1 -1
  69. package/dist/locales/id-ID.js +1 -1
  70. package/dist/locales/zh-CN.js +1 -1
  71. package/dist/locales/zh-TW.js +1 -1
  72. package/dist/locales/zh-UG.js +1 -1
  73. package/dist/nutui.react.mjs +23562 -24489
  74. package/dist/nutui.react.umd.js +23560 -24487
  75. package/dist/packages/audio/audio.scss +2 -15
  76. package/dist/packages/badge/badge.scss +8 -18
  77. package/dist/packages/calendar/calendar.scss +0 -30
  78. package/dist/packages/cascader/cascader.scss +0 -26
  79. package/dist/packages/cellgroup/cellgroup.scss +20 -16
  80. package/dist/packages/checkbox/checkbox.scss +8 -11
  81. package/dist/packages/circleprogress/circleprogress.scss +0 -9
  82. package/dist/packages/dialog/dialog.scss +36 -65
  83. package/dist/packages/elevator/elevator.scss +2 -28
  84. package/dist/packages/empty/empty.scss +0 -9
  85. package/dist/packages/imagepreview/imagepreview.scss +52 -16
  86. package/dist/packages/input/input.scss +13 -180
  87. package/dist/packages/menu/menu.scss +44 -55
  88. package/dist/packages/menuitem/menuitem.scss +16 -26
  89. package/dist/packages/navbar/navbar.scss +16 -115
  90. package/dist/packages/noticebar/noticebar.scss +18 -19
  91. package/dist/packages/notify/notify.scss +1 -1
  92. package/dist/packages/numberkeyboard/numberkeyboard.scss +29 -77
  93. package/dist/packages/overlay/overlay.scss +11 -4
  94. package/dist/packages/picker/picker.scss +66 -137
  95. package/dist/packages/popup/popup.scss +0 -16
  96. package/dist/packages/price/price.scss +8 -0
  97. package/dist/packages/progress/progress.scss +19 -58
  98. package/dist/packages/pulltorefresh/pulltorefresh.scss +0 -8
  99. package/dist/packages/radio/radio.scss +13 -32
  100. package/dist/packages/radiogroup/radiogroup.scss +17 -51
  101. package/dist/packages/range/range.scss +24 -49
  102. package/dist/packages/row/row.scss +13 -31
  103. package/dist/packages/sidenavbar/sidenavbar.scss +0 -19
  104. package/dist/packages/step/step.scss +9 -62
  105. package/dist/packages/steps/steps.scss +2 -0
  106. package/dist/packages/swiper/swiper.scss +3 -18
  107. package/dist/packages/switch/switch.scss +13 -31
  108. package/dist/packages/tabbar/tabbar.scss +16 -22
  109. package/dist/packages/tabbaritem/tabbaritem.scss +9 -70
  110. package/dist/packages/table/table.scss +0 -56
  111. package/dist/packages/tabs/tabs.scss +196 -225
  112. package/dist/packages/textarea/textarea.scss +5 -12
  113. package/dist/packages/uploader/uploader.scss +2 -28
  114. package/dist/style.css +1 -1
  115. package/dist/style.mjs +1 -1
  116. package/dist/styles/themes/default.scss +17 -18
  117. package/dist/styles/variables-jmapp.scss +120 -240
  118. package/dist/styles/variables.scss +139 -252
  119. package/dist/types/index.d.ts +565 -708
  120. package/package.json +2 -2
  121. package/dist/esm/Icon.js +0 -83
  122. package/dist/esm/tabpane2.js +0 -44
  123. package/dist/packages/icon/icon.scss +0 -0
  124. /package/dist/esm/{AvatarContext.js → context.js} +0 -0
  125. /package/dist/esm/{UserContext2.js → context2.js} +0 -0
  126. /package/dist/esm/{UserContext3.js → context3.js} +0 -0
package/dist/esm/Input.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- var _excluded = ["children", "type", "name", "defaultValue", "placeholder", "label", "labelClass", "labelWidth", "labelAlign", "colon", "inputAlign", "center", "required", "disabled", "readonly", "error", "maxlength", "leftIcon", "rightIcon", "clearable", "clearIcon", "clearSize", "border", "formatTrigger", "rules", "errorMessage", "errorMessageAlign", "showWordLimit", "autofocus", "style", "className", "rows", "slotButton", "slotInput", "onChange", "onBlur", "onFocus", "onClear", "formatter", "keypress", "onClickInput", "onClickLeftIcon", "onClickRightIcon", "onClick"];
4
+ var _excluded = ["type", "name", "placeholder", "align", "disabled", "readOnly", "maxLength", "clearable", "clearIcon", "formatTrigger", "autoFocus", "style", "className", "onChange", "onFocus", "onClear", "formatter", "onClick", "confirmType", "defaultValue", "value"];
5
5
  function ownKeys(object, enumerableOnly) {
6
6
  var keys = Object.keys(object);
7
7
  if (Object.getOwnPropertySymbols) {
@@ -23,10 +23,11 @@ function _objectSpread(target) {
23
23
  }
24
24
  return target;
25
25
  }
26
- import React__default, { forwardRef, useState, useRef, useEffect, useImperativeHandle, useCallback } from "react";
26
+ import React__default, { forwardRef, useRef, useState, useImperativeHandle, useCallback } from "react";
27
27
  import { MaskClose } from "@nutui/icons-react";
28
28
  import { useConfig } from "./ConfigProvider.js";
29
29
  import { C as ComponentDefaults } from "./typings.js";
30
+ import { u as usePropsValue } from "./use-props-value.js";
30
31
  function trimExtraChar(value, _char, regExp) {
31
32
  var index = value.indexOf(_char);
32
33
  if (index === -1) {
@@ -56,253 +57,146 @@ function formatNumber(value) {
56
57
  var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
57
58
  type: "text",
58
59
  name: "",
59
- defaultValue: "",
60
60
  placeholder: "",
61
- label: "",
62
- labelClass: "",
63
- labelWidth: "80",
64
- labelAlign: "left",
65
- colon: false,
66
- inputAlign: "left",
67
- center: false,
61
+ confirmType: "done",
62
+ align: "left",
68
63
  required: false,
69
64
  disabled: false,
70
- readonly: false,
71
- error: false,
72
- maxlength: "9999",
73
- leftIcon: null,
74
- rightIcon: null,
65
+ readOnly: false,
66
+ maxLength: 9999,
75
67
  clearable: false,
76
68
  clearIcon: null,
77
- clearSize: "14",
78
- border: true,
79
69
  formatTrigger: "onChange",
80
- rules: [],
81
- rows: null,
82
- errorMessage: "",
83
- errorMessageAlign: "",
84
- showWordLimit: false,
85
- autofocus: false,
86
- slotButton: null,
87
- slotInput: null
70
+ autoFocus: false
88
71
  });
89
72
  var Input = forwardRef(function(props, ref) {
90
73
  var _useConfig = useConfig(), locale = _useConfig.locale;
91
- var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), children = _defaultProps$props.children, type = _defaultProps$props.type, name = _defaultProps$props.name, defaultValue = _defaultProps$props.defaultValue, placeholder = _defaultProps$props.placeholder, label = _defaultProps$props.label, labelClass = _defaultProps$props.labelClass, labelWidth = _defaultProps$props.labelWidth, labelAlign = _defaultProps$props.labelAlign, colon = _defaultProps$props.colon, inputAlign = _defaultProps$props.inputAlign, center = _defaultProps$props.center, required = _defaultProps$props.required, disabled = _defaultProps$props.disabled, readonly = _defaultProps$props.readonly, error = _defaultProps$props.error, maxlength = _defaultProps$props.maxlength, leftIcon = _defaultProps$props.leftIcon, rightIcon = _defaultProps$props.rightIcon, clearable = _defaultProps$props.clearable, clearIcon = _defaultProps$props.clearIcon, clearSize = _defaultProps$props.clearSize, border = _defaultProps$props.border, formatTrigger = _defaultProps$props.formatTrigger, rules = _defaultProps$props.rules, errorMessage = _defaultProps$props.errorMessage, errorMessageAlign = _defaultProps$props.errorMessageAlign, showWordLimit = _defaultProps$props.showWordLimit, autofocus = _defaultProps$props.autofocus, style = _defaultProps$props.style, className = _defaultProps$props.className, rows = _defaultProps$props.rows, slotButton = _defaultProps$props.slotButton, slotInput = _defaultProps$props.slotInput, onChange = _defaultProps$props.onChange, onBlur = _defaultProps$props.onBlur, onFocus = _defaultProps$props.onFocus, onClear = _defaultProps$props.onClear, formatter = _defaultProps$props.formatter, keypress = _defaultProps$props.keypress, onClickInput = _defaultProps$props.onClickInput, onClickLeftIcon = _defaultProps$props.onClickLeftIcon, onClickRightIcon = _defaultProps$props.onClickRightIcon, _onClick = _defaultProps$props.onClick, rest = _objectWithoutProperties(_defaultProps$props, _excluded);
92
- var inputPlaceholder = placeholder || locale.placeholder;
93
- var _useState = useState(""), _useState2 = _slicedToArray(_useState, 2), inputValue = _useState2[0], SetInputValue = _useState2[1];
94
- var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), active = _useState4[0], SetActive = _useState4[1];
95
- var _useState5 = useState(""), _useState6 = _slicedToArray(_useState5, 2), classes = _useState6[0], setClasses = _useState6[1];
96
- var getModelValue = function getModelValue2() {
97
- return String(inputValue !== null && inputValue !== void 0 ? inputValue : "");
98
- };
74
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), type = _defaultProps$props.type, name = _defaultProps$props.name, placeholder = _defaultProps$props.placeholder, align = _defaultProps$props.align, disabled = _defaultProps$props.disabled, readOnly = _defaultProps$props.readOnly, maxLength = _defaultProps$props.maxLength, clearable = _defaultProps$props.clearable, clearIcon = _defaultProps$props.clearIcon, formatTrigger = _defaultProps$props.formatTrigger, autoFocus = _defaultProps$props.autoFocus, style = _defaultProps$props.style, className = _defaultProps$props.className, onChange = _defaultProps$props.onChange, onFocus = _defaultProps$props.onFocus, onClear = _defaultProps$props.onClear, formatter = _defaultProps$props.formatter, _onClick = _defaultProps$props.onClick, confirmType = _defaultProps$props.confirmType, defaultValue = _defaultProps$props.defaultValue, _value = _defaultProps$props.value, rest = _objectWithoutProperties(_defaultProps$props, _excluded);
75
+ var _usePropsValue = usePropsValue({
76
+ value: props.value,
77
+ defaultValue: props.defaultValue,
78
+ finalValue: "",
79
+ onChange
80
+ }), _usePropsValue2 = _slicedToArray(_usePropsValue, 2), value = _usePropsValue2[0], setValue = _usePropsValue2[1];
99
81
  var inputRef = useRef(null);
100
- useEffect(function() {
101
- setClasses(inputClass);
102
- SetInputValue(defaultValue);
103
- }, [defaultValue]);
104
- useEffect(function() {
105
- if (inputValue) {
106
- updateValue(getModelValue());
107
- resetValidation();
108
- }
109
- }, [inputValue]);
82
+ var composingRef = useRef(false);
83
+ var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), active = _useState2[0], setActive = _useState2[1];
110
84
  useImperativeHandle(ref, function() {
111
- return inputRef.current;
85
+ return {
86
+ clear: function clear() {
87
+ setValue("");
88
+ },
89
+ focus: function focus() {
90
+ var _inputRef$current;
91
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
92
+ },
93
+ blur: function blur() {
94
+ var _inputRef$current2;
95
+ (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.blur();
96
+ },
97
+ get nativeElement() {
98
+ return inputRef.current;
99
+ }
100
+ };
112
101
  });
113
102
  var inputClass = useCallback(function() {
114
- var prefixCls = "nut-input";
115
- return [prefixCls, "".concat(center ? "center" : ""), "".concat(disabled ? "".concat(prefixCls, "-disabled") : ""), "".concat(required ? "".concat(prefixCls, "-required") : ""), "".concat(error ? "".concat(prefixCls, "-error") : ""), "".concat(border ? "".concat(prefixCls, "-border") : ""), "".concat(slotButton || rightIcon ? "".concat(prefixCls, "-right-mark") : "")].filter(Boolean).join(" ");
116
- }, [disabled, required, error, border, slotButton, rightIcon, center]);
117
- useEffect(function() {
118
- setClasses(inputClass);
119
- }, [disabled, required, error, border, slotButton, rightIcon, center]);
120
- var updateValue = function updateValue2(value) {
121
- var _inputRef$current;
103
+ var classPrefix = "nut-input";
104
+ return [classPrefix, "".concat(disabled ? "".concat(classPrefix, "-disabled") : "")].filter(Boolean).join(" ");
105
+ }, [disabled]);
106
+ var updateValue = function updateValue2(value2) {
122
107
  var trigger = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "onChange";
123
- var event = arguments.length > 2 ? arguments[2] : void 0;
124
- var val = value;
125
- if (type === "digit" || type === "tel") {
126
- val = formatNumber(val, false, false);
127
- }
108
+ var val = value2;
128
109
  if (type === "number") {
129
- val = formatNumber(val, true, true);
110
+ val = formatNumber(val, false, true);
130
111
  }
131
- if (type === "tel" && !formatter) {
132
- var regTel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
133
- var regNumber = /[^-0-9]/g;
134
- val = !regTel.test(val) && val.length > 11 ? val.substring(0, 11) : val.replace(regNumber, "");
112
+ if (type === "digit") {
113
+ val = formatNumber(val, true, true);
135
114
  }
136
115
  if (formatter && trigger === formatTrigger) {
137
116
  val = formatter(val);
138
117
  }
139
- if ((inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.value) !== val) {
140
- inputRef.current.value = val;
118
+ setValue(val);
119
+ var eventHandler = props[trigger];
120
+ if (eventHandler && typeof eventHandler === "function") {
121
+ eventHandler(val);
141
122
  }
142
- SetInputValue(val);
143
123
  };
144
124
  var handleFocus = function handleFocus2(event) {
145
125
  var val = event.target.value;
146
- SetActive(true);
147
- onFocus && onFocus(val, event);
126
+ onFocus && onFocus(val);
127
+ setActive(true);
148
128
  };
149
- var handleInput = function handleInput2(event) {
150
- var val = event.target.value;
151
- if (maxlength && val.length > Number(maxlength)) {
152
- val = val.slice(0, Number(maxlength));
153
- }
154
- updateValue(val, "onChange");
155
- onChange && onChange(val, event);
129
+ var handleInput = function handleInput2(value2) {
130
+ updateValue(value2, "onChange");
156
131
  };
157
132
  var handleBlur = function handleBlur2(event) {
158
- setTimeout(function() {
159
- SetActive(false);
160
- }, 200);
161
133
  var val = event.target.value;
162
- if (maxlength && val.length > Number(maxlength)) {
163
- val = val.slice(0, Number(maxlength));
164
- }
165
134
  updateValue(val, "onBlur");
166
- onBlur && onBlur(val, event);
167
- };
168
- var handleClickInput = function handleClickInput2(event) {
169
- onClickInput && onClickInput(event);
170
- };
171
- var handleClickLeftIcon = function handleClickLeftIcon2(event) {
172
- onClickLeftIcon && onClickLeftIcon(event);
173
- };
174
- var handleClickRightIcon = function handleClickRightIcon2(event) {
175
- onClickRightIcon && onClickRightIcon(event);
176
- };
177
- var resetValidation = function resetValidation2() {
135
+ setActive(false);
178
136
  };
179
137
  var inputType = function inputType2(type2) {
180
- if (type2 === "number") {
138
+ if (type2 === "digit") {
181
139
  return "text";
182
140
  }
183
- if (type2 === "digit") {
141
+ if (type2 === "number") {
184
142
  return "tel";
185
143
  }
186
144
  return type2;
187
145
  };
188
- var handleClear = function handleClear2(event) {
189
- updateValue("");
190
- onClear && onClear("", event);
191
- };
192
- return React__default.createElement("div", _objectSpread(_objectSpread({
193
- className: "".concat(classes, " ").concat(className || ""),
194
- style
195
- }, rest), {}, {
146
+ return React__default.createElement("div", {
147
+ className: "".concat(inputClass(), " ").concat(className || ""),
148
+ style,
196
149
  onClick: function onClick(e) {
197
150
  _onClick && _onClick(e);
198
151
  }
199
- }), slotInput ? React__default.createElement(React__default.Fragment, null, label ? React__default.createElement("div", {
200
- className: "nut-input-label ".concat(labelClass),
201
- style: {
202
- width: "".concat(labelWidth, "px"),
203
- textAlign: labelAlign
204
- }
205
- }, React__default.createElement("div", {
206
- className: "label-string"
207
- }, label, colon ? ":" : "")) : null, React__default.createElement("div", {
208
- className: "nut-input-value"
209
- }, React__default.createElement("div", {
210
- className: "nut-input-inner",
211
- onClick: function onClick(e) {
212
- handleClickInput(e);
213
- }
214
- }, slotInput))) : React__default.createElement(React__default.Fragment, null, React__default.isValidElement(leftIcon) ? React__default.createElement("div", {
215
- className: "nut-input-left-icon",
216
- onClick: function onClick(e) {
217
- handleClickLeftIcon(e);
218
- }
219
- }, leftIcon) : null, label ? React__default.createElement("div", {
220
- className: "nut-input-label ".concat(labelClass),
221
- style: {
222
- width: "".concat(labelWidth, "px"),
223
- textAlign: labelAlign
224
- }
225
- }, React__default.createElement("div", {
226
- className: "label-string"
227
- }, label, colon ? ":" : "")) : null, React__default.createElement("div", {
228
- className: "nut-input-value"
229
- }, React__default.createElement("div", {
230
- className: "nut-input-main-con"
231
- }, React__default.createElement("div", {
232
- className: "nut-input-inner",
233
- onClick: function onClick(e) {
234
- handleClickInput(e);
235
- }
236
- }, type === "textarea" ? React__default.createElement("textarea", {
152
+ }, React__default.createElement("input", _objectSpread(_objectSpread({}, rest), {}, {
237
153
  name,
238
- className: "input-text",
154
+ className: "nut-input-native",
239
155
  ref: inputRef,
240
156
  style: {
241
- textAlign: inputAlign,
242
- height: "".concat(Number(rows) * 24, "px")
157
+ textAlign: align
243
158
  },
244
- maxLength: maxlength,
245
- placeholder: inputPlaceholder,
159
+ type: inputType(type),
160
+ maxLength,
161
+ placeholder: placeholder || locale.placeholder,
246
162
  disabled,
247
- readOnly: readonly,
248
- value: inputValue,
249
- autoFocus: autofocus,
250
- onBlur: function onBlur2(e) {
163
+ readOnly,
164
+ value,
165
+ autoFocus,
166
+ enterKeyHint: confirmType,
167
+ onBlur: function onBlur(e) {
251
168
  handleBlur(e);
252
169
  },
253
170
  onFocus: function onFocus2(e) {
254
171
  handleFocus(e);
255
172
  },
256
- onInput: function onInput(e) {
257
- handleInput(e);
258
- }
259
- }) : React__default.createElement("input", {
260
- name,
261
- className: "input-text",
262
- ref: inputRef,
263
- style: {
264
- textAlign: inputAlign
265
- },
266
- type: inputType(type),
267
- maxLength: maxlength,
268
- placeholder: inputPlaceholder,
269
- disabled,
270
- readOnly: readonly,
271
- value: inputValue,
272
- autoFocus: autofocus,
273
- onBlur: function onBlur2(e) {
274
- handleBlur(e);
173
+ onChange: function onChange2(e) {
174
+ handleInput(e.currentTarget.value);
275
175
  },
276
- onFocus: function onFocus2(e) {
277
- handleFocus(e);
176
+ onCompositionStart: function onCompositionStart(e) {
177
+ var _props$onCompositionS;
178
+ composingRef.current = true;
179
+ (_props$onCompositionS = props.onCompositionStart) === null || _props$onCompositionS === void 0 ? void 0 : _props$onCompositionS.call(props, e);
278
180
  },
279
- onInput: function onInput(e) {
280
- handleInput(e);
181
+ onCompositionEnd: function onCompositionEnd(e) {
182
+ var _props$onCompositionE;
183
+ composingRef.current = false;
184
+ (_props$onCompositionE = props.onCompositionEnd) === null || _props$onCompositionE === void 0 ? void 0 : _props$onCompositionE.call(props, e);
281
185
  }
282
- }), clearable && !readonly && active && inputValue.length > 0 ? React__default.createElement("span", {
283
- className: "nut-input-clear-wrap",
284
- onClick: function onClick(e) {
285
- return handleClear(e);
186
+ })), clearable && !readOnly && active && value.length > 0 ? React__default.createElement("span", {
187
+ style: {
188
+ display: "flex",
189
+ alignItems: "center"
190
+ },
191
+ onClick: function onClick() {
192
+ if (!disabled) {
193
+ setValue("");
194
+ onClear && onClear("");
195
+ }
286
196
  }
287
197
  }, clearIcon || React__default.createElement(MaskClose, {
288
198
  className: "nut-input-clear"
289
- })) : null), React__default.isValidElement(rightIcon) ? React__default.createElement("div", {
290
- className: "nut-input-right-icon",
291
- onClick: function onClick(e) {
292
- handleClickRightIcon(e);
293
- }
294
- }, rightIcon) : null, slotButton ? React__default.createElement("div", {
295
- className: "nut-input-button"
296
- }, slotButton) : null, showWordLimit && maxlength ? React__default.createElement("div", {
297
- className: "nut-input-word-limit"
298
- }, React__default.createElement("span", {
299
- className: "nut-input-word-num"
300
- }, inputValue ? inputValue.length : 0), "/", maxlength) : null), errorMessage ? React__default.createElement("div", {
301
- className: "nut-input-error-message",
302
- style: {
303
- textAlign: errorMessageAlign
304
- }
305
- }, errorMessage) : React__default.createElement("div", null))));
199
+ })) : null);
306
200
  });
307
201
  Input.defaultProps = defaultProps;
308
202
  Input.displayName = "NutInput";
package/dist/esm/Menu.js CHANGED
@@ -2,7 +2,7 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
4
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
- var _excluded = ["className", "titleIcon", "scrollFixed", "lockScroll", "closeOnClickOverlay", "children", "activeColor"];
5
+ var _excluded = ["className", "icon", "scrollFixed", "lockScroll", "closeOnOverlayClick", "children", "activeColor"];
6
6
  function ownKeys(object, enumerableOnly) {
7
7
  var keys = Object.keys(object);
8
8
  if (Object.getOwnPropertySymbols) {
@@ -29,17 +29,15 @@ import classNames from "classnames";
29
29
  import { ArrowUp2, ArrowDown2 } from "@nutui/icons-react";
30
30
  import { C as ComponentDefaults } from "./typings.js";
31
31
  var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
32
- className: "",
33
- style: {},
34
32
  activeColor: "",
35
- closeOnClickOverlay: true,
33
+ closeOnOverlayClick: true,
36
34
  scrollFixed: false,
37
35
  lockScroll: true,
38
- titleIcon: null
36
+ icon: null
39
37
  });
40
38
  var Menu = function Menu2(props) {
41
- var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), className = _defaultProps$props.className, titleIcon = _defaultProps$props.titleIcon, scrollFixed = _defaultProps$props.scrollFixed, lockScroll = _defaultProps$props.lockScroll, closeOnClickOverlay = _defaultProps$props.closeOnClickOverlay, children = _defaultProps$props.children, activeColor = _defaultProps$props.activeColor, rest = _objectWithoutProperties(_defaultProps$props, _excluded);
42
- var parentRef = useRef(null);
39
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), className = _defaultProps$props.className, icon = _defaultProps$props.icon, scrollFixed = _defaultProps$props.scrollFixed, lockScroll = _defaultProps$props.lockScroll, closeOnOverlayClick = _defaultProps$props.closeOnOverlayClick, children = _defaultProps$props.children, activeColor = _defaultProps$props.activeColor, rest = _objectWithoutProperties(_defaultProps$props, _excluded);
40
+ var menuRef = useRef(null);
43
41
  var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), isScrollFixed = _useState2[0], setIsScrollFixed = _useState2[1];
44
42
  var getScrollTop = function getScrollTop2(el) {
45
43
  return Math.max(0, "scrollTop" in el ? el.scrollTop : el.pageYOffset);
@@ -58,92 +56,96 @@ var Menu = function Menu2(props) {
58
56
  return window.removeEventListener("scroll", onScroll);
59
57
  };
60
58
  }, []);
61
- var _useState3 = useState([]), _useState4 = _slicedToArray(_useState3, 2), itemShow = _useState4[0], setItemShow = _useState4[1];
62
- var _useState5 = useState([]), _useState6 = _slicedToArray(_useState5, 2), itemTitle = _useState6[0], setItemTitle = _useState6[1];
63
- var toggleItemShow = function toggleItemShow2(index) {
64
- itemShow[index] = !itemShow[index];
65
- var temp = itemShow.map(function(i, idx) {
59
+ var _useState3 = useState([]), _useState4 = _slicedToArray(_useState3, 2), showMenuItem = _useState4[0], setShowMenuItem = _useState4[1];
60
+ var _useState5 = useState([]), _useState6 = _slicedToArray(_useState5, 2), menuItemTitle = _useState6[0], setMenuItemTitle = _useState6[1];
61
+ var toggleMenuItem = function toggleMenuItem2(index) {
62
+ showMenuItem[index] = !showMenuItem[index];
63
+ var temp = showMenuItem.map(function(i, idx) {
66
64
  return idx === index ? i : false;
67
65
  });
68
- setItemShow(_toConsumableArray(temp));
66
+ setShowMenuItem(_toConsumableArray(temp));
69
67
  };
70
- var hideItemShow = function hideItemShow2(index) {
71
- itemShow[index] = false;
72
- setItemShow(_toConsumableArray(itemShow));
68
+ var hideMenuItem = function hideMenuItem2(index) {
69
+ showMenuItem[index] = false;
70
+ setShowMenuItem(_toConsumableArray(showMenuItem));
73
71
  };
74
72
  var updateTitle = function updateTitle2(text, index) {
75
- itemTitle[index] = text;
76
- setItemTitle(_toConsumableArray(itemTitle));
77
- };
78
- var parent = function parent2() {
79
- return parentRef;
73
+ menuItemTitle[index] = text;
74
+ setMenuItemTitle(_toConsumableArray(menuItemTitle));
80
75
  };
81
76
  var cloneChildren = function cloneChildren2() {
82
77
  return React__default.Children.map(children, function(child, index) {
83
78
  return React__default.cloneElement(child, {
84
- showPopup: itemShow[index],
85
- orderKey: index,
79
+ show: showMenuItem[index],
80
+ index,
86
81
  activeColor,
87
82
  parent: {
88
- closeOnClickOverlay,
83
+ closeOnOverlayClick,
89
84
  lockScroll,
90
- toggleItemShow,
85
+ toggleMenuItem,
91
86
  updateTitle,
92
- hideItemShow,
93
- parent
87
+ hideMenuItem,
88
+ menuRef
94
89
  }
95
90
  });
96
91
  });
97
92
  };
98
- return React__default.createElement("div", _objectSpread(_objectSpread({
99
- className: "nut-menu ".concat(className, " ").concat(isScrollFixed ? "scroll-fixed" : "")
100
- }, rest), {}, {
101
- ref: parentRef
93
+ var menuTitle = function menuTitle2() {
94
+ return React__default.Children.map(children, function(child, index) {
95
+ if (React__default.isValidElement(child)) {
96
+ var _child$props = child.props, title = _child$props.title, options = _child$props.options, value = _child$props.value, disabled = _child$props.disabled, direction = _child$props.direction;
97
+ var selected = options === null || options === void 0 ? void 0 : options.filter(function(option) {
98
+ return option.value === value;
99
+ });
100
+ var finallyTitle = function finallyTitle2() {
101
+ if (title)
102
+ return title;
103
+ if (menuItemTitle && menuItemTitle[index])
104
+ return menuItemTitle[index];
105
+ if (selected && selected.length && selected[0].text)
106
+ return selected[0].text;
107
+ return "";
108
+ };
109
+ return React__default.createElement("div", {
110
+ className: classNames("nut-menu__item ", className, {
111
+ active: showMenuItem[index],
112
+ disabled
113
+ }),
114
+ style: {
115
+ color: showMenuItem[index] ? activeColor : ""
116
+ },
117
+ key: index,
118
+ onClick: function onClick() {
119
+ !disabled && toggleMenuItem(index);
120
+ }
121
+ }, React__default.createElement("div", {
122
+ className: classNames("nut-menu__title ", {
123
+ active: showMenuItem[index],
124
+ disabled
125
+ })
126
+ }, React__default.createElement("div", {
127
+ className: "nut-menu__title-text"
128
+ }, finallyTitle()), icon || (direction === "up" ? React__default.createElement(ArrowUp2, {
129
+ className: "nut-menu__title-icon"
130
+ }) : React__default.createElement(ArrowDown2, {
131
+ className: "nut-menu__title-icon"
132
+ }))));
133
+ }
134
+ return null;
135
+ });
136
+ };
137
+ return React__default.createElement("div", _objectSpread(_objectSpread({}, rest), {}, {
138
+ className: classNames("nut-menu", className, {
139
+ "scroll-fixed": isScrollFixed
140
+ }),
141
+ ref: menuRef
102
142
  }), React__default.createElement("div", {
103
143
  className: "nut-menu-relative"
104
144
  }, React__default.createElement("div", {
105
- className: "nut-menu__bar ".concat(itemShow.includes(true) ? "opened" : "", " ").concat(className)
106
- }, React__default.Children.toArray(children).map(function(child, index) {
107
- if (!child)
108
- return null;
109
- var _child$props = child.props, disabled = _child$props.disabled, title = _child$props.title, value = _child$props.value, direction = _child$props.direction, options = _child$props.options, className2 = _child$props.className;
110
- var currentTitle = options === null || options === void 0 ? void 0 : options.filter(function(option) {
111
- return option.value === value;
112
- });
113
- function finallyTitle() {
114
- if (title)
115
- return title;
116
- if (itemTitle && itemTitle[index])
117
- return itemTitle[index];
118
- if (currentTitle && currentTitle[0] && currentTitle[0].text)
119
- return currentTitle[0].text;
120
- return "";
121
- }
122
- return React__default.createElement("div", {
123
- className: "nut-menu__item ".concat(classNames({
124
- active: itemShow[index],
125
- disabled
126
- }), " ").concat(className2),
127
- style: {
128
- color: itemShow[index] ? activeColor : ""
129
- },
130
- key: index,
131
- onClick: function onClick() {
132
- !disabled && toggleItemShow(index);
133
- }
134
- }, React__default.createElement("div", {
135
- className: "nut-menu__title ".concat(classNames({
136
- active: itemShow[index],
137
- disabled
138
- }))
139
- }, React__default.createElement("div", {
140
- className: "nut-menu__title-text"
141
- }, finallyTitle()), titleIcon || React__default.createElement(React__default.Fragment, null, direction === "up" ? React__default.createElement(ArrowUp2, {
142
- className: "nut-menu__title-icon"
143
- }) : React__default.createElement(ArrowDown2, {
144
- className: "nut-menu__title-icon"
145
- }))));
146
- })), cloneChildren()));
145
+ className: classNames("nut-menu__bar", {
146
+ opened: showMenuItem.includes(true)
147
+ })
148
+ }, menuTitle()), cloneChildren()));
147
149
  };
148
150
  Menu.defaultProps = defaultProps;
149
151
  Menu.displayName = "NutMenu";