@hi-ui/input 4.0.0-alpha.5 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,11 +1,83 @@
1
- # `@hi-ui/input`
1
+ # Input 输入框
2
2
 
3
- > TODO: description
3
+ 用来接收文本型内容的组件
4
4
 
5
- ## Usage
5
+ ## 何时使用
6
6
 
7
- ```
8
- const Input = require('@hi-ui/input');
7
+ 用户需要通过键盘输入内容时
9
8
 
10
- // TODO: DEMONSTRATE API
11
- ```
9
+ 常见于表单,作为表单的组件类型之一
10
+
11
+ ## 使用示例
12
+
13
+ <!-- Inject Stories -->
14
+
15
+ ## Input Props
16
+
17
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
18
+ | ---------------- | ------------------------------------------------- | ----------------------------- | ---------------------------------------------------------------------- | ------- |
19
+ | value | 设置输入框的值 | string | - | - |
20
+ | defaultValue | 设置输入框的默认值 | string | - | - |
21
+ | type | 设置输入框类型 | string | 'text' \| 'textarea' \| 'id' \| 'tel' \| 'card' \| 'amount' \| 'email' | 'text' |
22
+ | prepend | 输入框前置外部内容 | ReactNode | - | - |
23
+ | append | 输入框后置外部内容 | ReactNode | - | - |
24
+ | disabled | 是否禁用 | boolean | true \| false | false |
25
+ | clearable | 是否可清空 | boolean | true \| false | false |
26
+ | placeholder | 输入框占位符 | string | - | - |
27
+ | readOnly | 开启输入框只读 | boolean | true \| false | false |
28
+ | autoFocus | 开启输入框自动聚焦 | boolean | true \| false | false |
29
+ | maxLength | 输入最大长度 | number | - | - |
30
+ | prefix | 输入框内置内容 | ReactNode | - | - |
31
+ | suffix | 输入框后置内容 | ReactNode | - | - |
32
+ | trimValueOnBlur | 开启失焦时触发对值的 trim,将触发 onChange 给用户 | boolean | true \| false | false |
33
+ | clearableTrigger | 清除按钮展示的触发形态 | string | 'always' | 'hover' | 'hover' |
34
+ | appearance | 设置展现形式 | 'line' \| 'unset' \| 'filled' | 'line' |
35
+ | size | 设置尺寸 | string | 'sm' \| 'md' \| 'lg' | 'md' |
36
+
37
+ ## Input Events
38
+
39
+ | 名称 | 说明 | 类型 | 参数 |
40
+ | -------- | -------------- | ------------------------------------------------------- | --------------------- |
41
+ | onChange | 值改变时的回调 | (event: React.ChangeEvent<HTMLTextAreaElement>) => void | event: input 事件对象 |
42
+
43
+ ## TextArea Props
44
+
45
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
46
+ | --------------- | ------------------------------------------------- | ----------------------------- | -------------------- | ------ |
47
+ | value | 设置输入框的值 | string | - | - |
48
+ | defaultValue | 设置输入框的默认值 | string | - | - |
49
+ | appearance | 设置展现形式 | 'line' \| 'unset' \| 'filled' | 'line' |
50
+ | size | 设置尺寸 | string | 'sm' \| 'md' \| 'lg' | 'md' |
51
+ | disabled | 是否禁用 | boolean | true \| false | false |
52
+ | placeholder | 输入框占位符 | string | - | - |
53
+ | readOnly | 开启输入框只读 | boolean | true \| false | false |
54
+ | autoFocus | 开启输入框自动聚焦 | boolean | true \| false | false |
55
+ | maxLength | 输入最大长度 | number | - | - |
56
+ | trimValueOnBlur | 开启失焦时触发对值的 trim,将触发 onChange 给用户 | boolean | true \| false | false |
57
+ | rows | 设置文本域行数,超出触发滚动 | number | - | - |
58
+
59
+ ## TextArea Events
60
+
61
+ | 名称 | 说明 | 类型 | 参数 |
62
+ | -------- | -------------- | ------------------------------------------------------- | ------------------------ |
63
+ | onChange | 值改变时的回调 | (event: React.ChangeEvent<HTMLTextAreaElement>) => void | event: textarea 事件对象 |
64
+
65
+ ## CHANGELOG
66
+
67
+ | 参数 | 变更类型 | 变更内容 | 解决的问题 |
68
+ | ---------------- | ------------------------------- | --------------------------------- | ---------------------------------------------------------------------- |
69
+ | propName | feature \| deprecated \| update | 变更了什么 | 之前是什么样子,解决什么问题 |
70
+ | ---- | ---- | ---- | ---- |
71
+ | bordered | deprecated | 字段 `bordered` => `appearance` | 对于 Picker 类型的组件,统一使用 appearance 设置外形(线\面\无边框)值 |
72
+ | appearance | feature | - | 统一支持适配 UI:线性\面性\无边框 |
73
+ | prepend | update | 字段:prepend -> prepend + prefix | 强化支持 Input 内置外置元素组合 |
74
+ | append | update | 字段 -> append + suffix | 强化支持 Input 内置外置元素组合 |
75
+ | prefix | feature | 字段:prepend -> prepend + prefix | 强化支持 Input 内置元素 |
76
+ | suffix | feature | 字段 -> append + suffix | 强化支持 Input 内置元素 |
77
+ | readOnly | feature | - | 强化支持 Input 功能 |
78
+ | autoFocus | feature | - | 强化支持 Input 功能 |
79
+ | maxLength | feature | - | 强化支持 Input 功能 |
80
+ | trimValueOnBlur | feature | - | 强化支持 Input 功能 |
81
+ | clearableTrigger | feature | - | 强化支持 Input 清空内容功能 |
82
+ | size | feature | - | UI 适配不同 Size |
83
+ | TextArea | feature | 组件拆分 | 1. 拆解 api 功能及类型,职责分明 2. 减少用户使用困惑; |
package/lib/cjs/Input.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /** @LICENSE
2
- * @hi-ui/input v4.0.0-alpha.4
2
+ * @hi-ui/input
3
3
  * https://github.com/XiaoMi/hiui/tree/master/packages/ui/input#readme
4
4
  *
5
5
  * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
@@ -23,12 +23,12 @@ var classname = require('@hi-ui/classname');
23
23
 
24
24
  var env = require('@hi-ui/env');
25
25
 
26
- var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
27
-
28
26
  var useMergeRefs = require('@hi-ui/use-merge-refs');
29
27
 
30
28
  var icons = require('@hi-ui/icons');
31
29
 
30
+ var useInput = require('./use-input.js');
31
+
32
32
  function _interopDefaultLegacy(e) {
33
33
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
34
34
  'default': e
@@ -37,11 +37,16 @@ function _interopDefaultLegacy(e) {
37
37
 
38
38
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
39
39
 
40
- var _role = 'input';
41
-
42
- var _prefix = classname.getPrefixCls(_role);
40
+ var _prefix = classname.getPrefixCls('input');
43
41
  /**
44
- * TODO: What is Input
42
+ * 输入框
43
+ *
44
+ * @TODO:
45
+ * 1. size api 确认
46
+ * 2. 修改类名结构
47
+ * 3. 支持带数字展示
48
+ * 4. InputGroup 模式支持
49
+ * 5. 手动聚焦支持额外配置
45
50
  */
46
51
 
47
52
 
@@ -49,102 +54,115 @@ var Input = /*#__PURE__*/React.forwardRef(function (_a, ref) {
49
54
  var _a$prefixCls = _a.prefixCls,
50
55
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
51
56
  _a$role = _a.role,
52
- role = _a$role === void 0 ? _role : _a$role,
57
+ role = _a$role === void 0 ? 'input' : _a$role,
53
58
  className = _a.className,
54
59
  style = _a.style,
55
- _a$autoFocus = _a.autoFocus,
56
- autoFocus = _a$autoFocus === void 0 ? false : _a$autoFocus,
57
- _a$disabled = _a.disabled,
58
- disabled = _a$disabled === void 0 ? false : _a$disabled,
59
- _a$readOnly = _a.readOnly,
60
- readOnly = _a$readOnly === void 0 ? false : _a$readOnly,
61
- name = _a.name,
62
- maxLength = _a.maxLength,
63
- _a$type = _a.type,
64
- type = _a$type === void 0 ? 'text' : _a$type,
65
60
  _a$size = _a.size,
66
- size = _a$size === void 0 ? 'sm' : _a$size,
61
+ size = _a$size === void 0 ? 'md' : _a$size,
67
62
  _a$appearance = _a.appearance,
68
- appearance = _a$appearance === void 0 ? 'outline' : _a$appearance,
69
- placeholder = _a.placeholder,
63
+ appearance = _a$appearance === void 0 ? 'line' : _a$appearance,
70
64
  prepend = _a.prepend,
71
65
  append = _a.append,
72
66
  prefix = _a.prefix,
73
67
  suffix = _a.suffix,
74
- _a$defaultValue = _a.defaultValue,
75
- defaultValue = _a$defaultValue === void 0 ? '' : _a$defaultValue,
76
- valueProp = _a.value,
77
- onChange = _a.onChange,
78
- onFocus = _a.onFocus,
79
- onBlur = _a.onBlur,
80
68
  _a$clearableTrigger = _a.clearableTrigger,
81
69
  clearableTrigger = _a$clearableTrigger === void 0 ? 'hover' : _a$clearableTrigger,
82
70
  _a$clearable = _a.clearable,
83
71
  clearable = _a$clearable === void 0 ? false : _a$clearable,
84
- rest = tslib.__rest(_a, ["prefixCls", "role", "className", "style", "autoFocus", "disabled", "readOnly", "name", "maxLength", "type", "size", "appearance", "floatLabel", "placeholder", "prepend", "append", "prefix", "suffix", "defaultValue", "value", "onChange", "onFocus", "onBlur", "clearableTrigger", "clearable"]);
72
+ _a$invalid = _a.invalid,
73
+ invalid = _a$invalid === void 0 ? false : _a$invalid,
74
+ name = _a.name,
75
+ autoFocus = _a.autoFocus,
76
+ disabled = _a.disabled,
77
+ readOnly = _a.readOnly,
78
+ maxLength = _a.maxLength,
79
+ placeholder = _a.placeholder,
80
+ defaultValue = _a.defaultValue,
81
+ valueProp = _a.value,
82
+ onChange = _a.onChange,
83
+ onFocus = _a.onFocus,
84
+ onBlur = _a.onBlur,
85
+ trimValueOnBlur = _a.trimValueOnBlur,
86
+ type = _a.type,
87
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "style", "size", "appearance", "prepend", "append", "prefix", "suffix", "clearableTrigger", "clearable", "invalid", "name", "autoFocus", "disabled", "readOnly", "maxLength", "placeholder", "defaultValue", "value", "onChange", "onFocus", "onBlur", "trimValueOnBlur", "type"]); // @TODO: 临时方案,后面迁移至 InputGroup
88
+
89
+
90
+ var _useMemo = React.useMemo(function () {
91
+ var shouldUnset = [false, false]; // @ts-ignore
92
+ // @ts-ignore
85
93
 
86
- var inputRef = React.useRef(null);
94
+ if ( /*#__PURE__*/React.isValidElement(prepend) && ['Select', 'Button'].includes(prepend.type.HiName)) {
95
+ shouldUnset[0] = true;
96
+ } // @ts-ignore
97
+ // @ts-ignore
98
+
99
+
100
+ if ( /*#__PURE__*/React.isValidElement(append) && ['Select', 'Button'].includes(append.type.HiName)) {
101
+ shouldUnset[1] = true;
102
+ }
103
+
104
+ return shouldUnset;
105
+ }, [prepend, append]),
106
+ unsetPrepend = _useMemo[0],
107
+ unsetAppend = _useMemo[1];
108
+
109
+ var inputElementRef = React.useRef(null);
87
110
  var proxyOnChange = React.useCallback(function (value, evt) {
88
111
  if (!onChange) return;
89
- onChangeMock(onChange, evt, inputRef.current, value);
112
+ onChangeMock(onChange, evt, inputElementRef.current, value);
90
113
  }, [onChange]);
114
+ var clearElementRef = React.useRef(null);
115
+
116
+ var _useInput = useInput.useInput({
117
+ clearElementRef: clearElementRef,
118
+ name: name,
119
+ autoFocus: autoFocus,
120
+ disabled: disabled,
121
+ readOnly: readOnly,
122
+ maxLength: maxLength,
123
+ placeholder: placeholder,
124
+ defaultValue: defaultValue,
125
+ value: valueProp,
126
+ onChange: proxyOnChange,
127
+ onFocus: onFocus,
128
+ onBlur: onBlur,
129
+ trimValueOnBlur: trimValueOnBlur,
130
+ type: type
131
+ }),
132
+ tryChangeValue = _useInput.tryChangeValue,
133
+ focused = _useInput.focused,
134
+ value = _useInput.value,
135
+ getInputProps = _useInput.getInputProps;
91
136
 
92
- var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, proxyOnChange),
93
- value = _useUncontrolledState[0],
94
- tryChangeValue = _useUncontrolledState[1];
95
-
96
- var handleChange = React.useCallback(function (evt) {
97
- var nextValue = evt.target.value;
98
- tryChangeValue(nextValue, evt);
99
- }, [tryChangeValue]);
100
-
101
- var _useState = React.useState(autoFocus),
102
- focused = _useState[0],
103
- setFocused = _useState[1];
104
-
105
- var handleFocus = React.useCallback(function (evt) {
106
- setFocused(true);
107
- onFocus === null || onFocus === void 0 ? void 0 : onFocus(evt);
108
- }, [onFocus]);
109
- var handleBlur = React.useCallback(function (event) {
110
- setFocused(false);
111
- onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
112
- }, [onBlur]);
113
137
  var focus = React.useCallback(function () {
114
138
  var _a;
115
139
 
116
- (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
140
+ (_a = inputElementRef.current) === null || _a === void 0 ? void 0 : _a.focus();
117
141
  }, []);
118
142
  var handleReset = React.useCallback(function (evt) {
119
143
  tryChangeValue('', evt);
120
144
  focus();
121
145
  }, [tryChangeValue, focus]);
122
- var nativeInputProps = React.useMemo(function () {
123
- return {
124
- name: name,
125
- disabled: disabled,
126
- readOnly: readOnly,
127
- autoFocus: autoFocus,
128
- placeholder: placeholder,
129
- maxLength: maxLength
130
- };
131
- }, [disabled, readOnly, autoFocus, placeholder, maxLength, name]);
132
-
133
- var _useState2 = React.useState(false),
134
- hover = _useState2[0],
135
- setHover = _useState2[1]; // 在开启 clearable 下展示 清除内容按钮,可点击进行内容清楚
146
+
147
+ var _useState = React.useState(false),
148
+ hover = _useState[0],
149
+ setHover = _useState[1]; // 在开启 clearable 下展示 清除内容按钮,可点击进行内容清楚
136
150
 
137
151
 
138
152
  var showClearableIcon = clearable && !!value && !disabled;
139
- var cls = classname.cx(className, prefixCls + "__outer", prepend && prefixCls + "__outer--prepend", append && prefixCls + "__outer--append", prefixCls + "--appearance-" + appearance, prefixCls + "--size-" + size);
153
+ var mergedRef = useMergeRefs.useMergeRefs(ref, inputElementRef);
154
+ var cls = classname.cx(prefixCls, className, prefixCls + "--size-" + size, prefixCls + "--appearance-" + appearance);
155
+ var outerCls = classname.cx(prefixCls + "__outer", prepend && prefixCls + "__outer--prepend", prepend && unsetPrepend && prefixCls + "__outer--prepend-unset", append && prefixCls + "__outer--append", append && unsetAppend && prefixCls + "__outer--append-unset");
140
156
  return /*#__PURE__*/React__default['default'].createElement("div", {
141
157
  role: role,
142
158
  className: cls,
143
159
  style: style
160
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
161
+ className: outerCls
144
162
  }, prepend ? /*#__PURE__*/React__default['default'].createElement("div", {
145
163
  className: prefixCls + "__prepend"
146
164
  }, prepend) : null, /*#__PURE__*/React__default['default'].createElement("div", {
147
- className: classname.cx(prefixCls + "__inner", prefix && prefixCls + "__inner--prefix", suffix && prefixCls + "__inner--suffix", focused && "focused", disabled && 'disabled', readOnly && 'readonly'),
165
+ className: classname.cx(prefixCls + "__inner", prefix && prefixCls + "__inner--prefix", suffix && prefixCls + "__inner--suffix", focused && prefixCls + "__inner--focused", disabled && prefixCls + "-__inner-disabled", readOnly && prefixCls + "-__inner-readonly", invalid && prefixCls + "__inner--invalid"),
148
166
  onMouseOver: function onMouseOver(e) {
149
167
  setHover(true);
150
168
  },
@@ -154,30 +172,26 @@ var Input = /*#__PURE__*/React.forwardRef(function (_a, ref) {
154
172
  }, prefix ? /*#__PURE__*/React__default['default'].createElement("span", {
155
173
  className: prefixCls + "__prefix"
156
174
  }, prefix) : null, /*#__PURE__*/React__default['default'].createElement("input", Object.assign({
157
- ref: useMergeRefs.useMergeRefs(ref, inputRef),
158
- className: classname.cx(prefixCls, focused && "focused", disabled && 'disabled', readOnly && 'readonly'),
159
- type: type,
160
- value: value,
161
- onChange: handleChange,
162
- onFocus: handleFocus,
163
- onBlur: handleBlur
164
- }, rest, nativeInputProps)), suffix || showClearableIcon ? /*#__PURE__*/React__default['default'].createElement("span", {
175
+ ref: mergedRef,
176
+ className: prefixCls + "__text"
177
+ }, getInputProps(), rest)), suffix || showClearableIcon ? /*#__PURE__*/React__default['default'].createElement("span", {
165
178
  className: prefixCls + "__suffix"
166
179
  }, showClearableIcon ? /*#__PURE__*/React__default['default'].createElement("span", {
167
- className: classname.cx(prefixCls + "__clear", (clearableTrigger === 'always' || hover) && 'active'),
180
+ ref: clearElementRef,
181
+ className: classname.cx(prefixCls + "__clear", (clearableTrigger === 'always' || hover) && prefixCls + "__clear--active"),
168
182
  role: "button",
169
183
  tabIndex: -1,
170
184
  onClick: handleReset
171
185
  }, /*#__PURE__*/React__default['default'].createElement(icons.CloseCircleFilled, null)) : null, suffix) : null), append ? /*#__PURE__*/React__default['default'].createElement("div", {
172
186
  className: prefixCls + "__append"
173
- }, append) : null);
187
+ }, append) : null));
174
188
  });
175
189
 
176
190
  if (env.__DEV__) {
177
191
  Input.displayName = 'Input';
178
192
  }
179
193
  /**
180
- * 伪造目标事件 target
194
+ * 模拟伪装目标事件 target
181
195
  *
182
196
  * @param target
183
197
  * @param evt
@@ -188,22 +202,22 @@ if (env.__DEV__) {
188
202
 
189
203
 
190
204
  function onChangeMock(onChange, evt, target, targetValue) {
191
- var event = evt; // 点击 clearIcon 时,代理 onChange 的事件对象 target 指向 input.target
205
+ var event = evt; // 点击 clearIcon 或者 失焦 trim 时,都会代理 onChange 的事件对象 target 指向 input.target
192
206
 
193
- if (evt.type === 'click') {
207
+ if (evt.type !== 'change') {
194
208
  if (!target) return;
195
209
  var originalTargetValue = target.value;
196
210
  event = Object.create(evt);
197
211
  event.target = target;
198
212
  event.currentTarget = target;
199
213
  target.value = targetValue;
200
- onChange(event); // 重置为之前值
214
+ onChange(event, targetValue); // 重置为之前值
201
215
 
202
216
  target.value = originalTargetValue;
203
217
  return;
204
218
  }
205
219
 
206
- onChange(event);
220
+ onChange(event, targetValue);
207
221
  }
208
222
 
209
223
  exports.Input = Input;
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../src/Input.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","Input","forwardRef","_a","ref","prefixCls","role","className","style","autoFocus","disabled","readOnly","name","maxLength","type","size","appearance","placeholder","prepend","append","prefix","suffix","defaultValue","valueProp","value","onChange","onFocus","onBlur","clearableTrigger","clearable","rest","inputRef","useRef","proxyOnChange","useCallback","evt","onChangeMock","current","useUncontrolledState","tryChangeValue","handleChange","nextValue","target","useState","focused","setFocused","handleFocus","handleBlur","event","focus","handleReset","nativeInputProps","useMemo","hover","setHover","showClearableIcon","cls","cx","React","onMouseOver","e","onMouseLeave","useMergeRefs","tabIndex","onClick","CloseCircleFilled","__DEV__","displayName","targetValue","originalTargetValue","Object","create","currentTarget"],"mappings":"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"}
1
+ {"version":3,"file":"Input.js","sources":["../../src/Input.tsx"],"sourcesContent":[null],"names":["_prefix","getPrefixCls","Input","forwardRef","_a","ref","prefixCls","role","className","style","size","appearance","prepend","append","prefix","suffix","clearableTrigger","clearable","invalid","name","autoFocus","disabled","readOnly","maxLength","placeholder","defaultValue","valueProp","value","onChange","onFocus","onBlur","trimValueOnBlur","type","rest","useMemo","shouldUnset","isValidElement","includes","HiName","unsetPrepend","unsetAppend","inputElementRef","useRef","proxyOnChange","useCallback","evt","onChangeMock","current","clearElementRef","useInput","tryChangeValue","focused","getInputProps","focus","handleReset","useState","hover","setHover","showClearableIcon","mergedRef","useMergeRefs","cls","cx","outerCls","React","onMouseOver","e","onMouseLeave","tabIndex","onClick","CloseCircleFilled","__DEV__","displayName","target","targetValue","event","originalTargetValue","Object","create","currentTarget"],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ /** @LICENSE
2
+ * @hi-ui/input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/input#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ var _typeof = require("@babel/runtime/helpers/typeof");
13
+
14
+ Object.defineProperty(exports, '__esModule', {
15
+ value: true
16
+ });
17
+
18
+ var tslib = require('tslib');
19
+
20
+ var React = require('react');
21
+
22
+ var classname = require('@hi-ui/classname');
23
+
24
+ var env = require('@hi-ui/env');
25
+
26
+ var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
27
+
28
+ var icons = require('@hi-ui/icons');
29
+
30
+ function _interopDefaultLegacy(e) {
31
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
32
+ 'default': e
33
+ };
34
+ }
35
+
36
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
37
+
38
+ var _role = 'mock-input';
39
+
40
+ var _prefix = classname.getPrefixCls(_role);
41
+
42
+ var NOOP_VALUE = '';
43
+ var NOOP_ARRAY = [];
44
+ /**
45
+ * 支持自定义渲染输入框内容,暂时仅供内部 Picker 类组件使用,不对外提供
46
+ */
47
+
48
+ var MockInput = /*#__PURE__*/React.forwardRef(function (_a, ref) {
49
+ var _a$prefixCls = _a.prefixCls,
50
+ prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
51
+ _a$role = _a.role,
52
+ role = _a$role === void 0 ? _role : _a$role,
53
+ className = _a.className,
54
+ _a$data = _a.data,
55
+ data = _a$data === void 0 ? NOOP_ARRAY : _a$data,
56
+ _a$defaultValue = _a.defaultValue,
57
+ defaultValue = _a$defaultValue === void 0 ? NOOP_VALUE : _a$defaultValue,
58
+ valueProp = _a.value,
59
+ onChange = _a.onChange,
60
+ placeholder = _a.placeholder,
61
+ _a$disabled = _a.disabled,
62
+ disabled = _a$disabled === void 0 ? false : _a$disabled,
63
+ _a$clearable = _a.clearable,
64
+ clearable = _a$clearable === void 0 ? false : _a$clearable,
65
+ _a$focused = _a.focused,
66
+ focused = _a$focused === void 0 ? false : _a$focused,
67
+ _a$invalid = _a.invalid,
68
+ invalid = _a$invalid === void 0 ? false : _a$invalid,
69
+ _a$readOnly = _a.readOnly,
70
+ readOnly = _a$readOnly === void 0 ? false : _a$readOnly,
71
+ _a$size = _a.size,
72
+ size = _a$size === void 0 ? 'md' : _a$size,
73
+ _a$appearance = _a.appearance,
74
+ appearance = _a$appearance === void 0 ? 'line' : _a$appearance,
75
+ _a$clearableTrigger = _a.clearableTrigger,
76
+ clearableTrigger = _a$clearableTrigger === void 0 ? 'hover' : _a$clearableTrigger,
77
+ displayRender = _a.displayRender,
78
+ suffix = _a.suffix,
79
+ _onMouseOver = _a.onMouseOver,
80
+ _onMouseLeave = _a.onMouseLeave,
81
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "data", "defaultValue", "value", "onChange", "placeholder", "disabled", "clearable", "focused", "invalid", "readOnly", "size", "appearance", "clearableTrigger", "displayRender", "suffix", "onMouseOver", "onMouseLeave"]);
82
+
83
+ var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChange),
84
+ value = _useUncontrolledState[0],
85
+ tryChangeValue = _useUncontrolledState[1];
86
+
87
+ var displayItem = React.useMemo(function () {
88
+ if (value === '') return null;
89
+ var displayItem = data.find(function (item) {
90
+ return item.id === value;
91
+ });
92
+ return displayItem || null;
93
+ }, [value, data]);
94
+ var displayValue = React.useMemo(function () {
95
+ if (!displayItem) return '';
96
+
97
+ if (displayRender) {
98
+ return displayRender(displayItem);
99
+ }
100
+
101
+ return displayItem.title;
102
+ }, [displayItem, displayRender]);
103
+ var handleClear = React.useCallback(function (evt) {
104
+ if (disabled) return;
105
+ evt.stopPropagation();
106
+ tryChangeValue(NOOP_VALUE, displayItem);
107
+ }, [tryChangeValue, disabled, displayItem]);
108
+
109
+ var _useState = React.useState(false),
110
+ hover = _useState[0],
111
+ setHover = _useState[1];
112
+
113
+ var trySetHover = React.useCallback(function (hovered) {
114
+ if (disabled) return;
115
+ setHover(hovered);
116
+ }, [disabled]);
117
+ var hasValue = !!displayValue; // 在开启 clearable 下展示 清除内容按钮,可点击进行内容清除
118
+
119
+ var showClearableIcon = React.useMemo(function () {
120
+ return clearable && hasValue && !disabled && (clearableTrigger === 'always' || hover);
121
+ }, [clearable, hasValue, disabled, clearableTrigger, hover]);
122
+ var cls = classname.cx(prefixCls, className, prefixCls + "--appearance-" + appearance, prefixCls + "--size-" + size, focused && "focused", disabled && 'disabled', readOnly && 'readonly', invalid && 'invalid');
123
+ return /*#__PURE__*/React__default['default'].createElement("div", Object.assign({
124
+ ref: ref,
125
+ role: role,
126
+ className: cls,
127
+ onMouseOver: function onMouseOver(evt) {
128
+ trySetHover(true);
129
+ _onMouseOver === null || _onMouseOver === void 0 ? void 0 : _onMouseOver(evt);
130
+ },
131
+ onMouseLeave: function onMouseLeave(evt) {
132
+ trySetHover(false);
133
+ _onMouseLeave === null || _onMouseLeave === void 0 ? void 0 : _onMouseLeave(evt);
134
+ }
135
+ }, rest), hasValue ? /*#__PURE__*/React__default['default'].createElement("span", {
136
+ className: prefixCls + "__value"
137
+ }, displayValue) : /*#__PURE__*/React__default['default'].createElement("span", {
138
+ className: prefixCls + "__placeholder"
139
+ }, placeholder), suffix || showClearableIcon ? /*#__PURE__*/React__default['default'].createElement("span", {
140
+ className: prefixCls + "__suffix"
141
+ }, showClearableIcon ? /*#__PURE__*/React__default['default'].createElement("span", {
142
+ role: "button",
143
+ tabIndex: -1,
144
+ className: classname.cx(prefixCls + "__clear", 'active'),
145
+ onClick: handleClear
146
+ }, /*#__PURE__*/React__default['default'].createElement(icons.CloseCircleFilled, null)) : suffix) : null);
147
+ });
148
+
149
+ if (env.__DEV__) {
150
+ MockInput.displayName = 'MockInput';
151
+ }
152
+
153
+ exports.MockInput = MockInput;
154
+ //# sourceMappingURL=MockInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockInput.js","sources":["../../src/MockInput.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","NOOP_VALUE","NOOP_ARRAY","MockInput","forwardRef","_a","ref","prefixCls","role","className","data","defaultValue","valueProp","value","onChange","placeholder","disabled","clearable","focused","invalid","readOnly","size","appearance","clearableTrigger","displayRender","suffix","onMouseOver","onMouseLeave","rest","useUncontrolledState","tryChangeValue","displayItem","useMemo","find","item","id","displayValue","title","handleClear","useCallback","evt","stopPropagation","useState","hover","setHover","trySetHover","hovered","hasValue","showClearableIcon","cls","cx","React","tabIndex","onClick","CloseCircleFilled","__DEV__","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAMA,KAAK,GAAG,YAAd;;AACA,IAAMC,OAAO,GAAGC,sBAAAA,CAAaF,KAAbE,CAAhB;;AAEA,IAAMC,UAAU,GAAG,EAAnB;AACA,IAAMC,UAAU,GAAG,EAAnB;AAEA;;;;IAGaC,SAAS,gBAAGC,gBAAAA,CACvB,UACEC,EADF,EAwBEC,GAxBF;wBAEIC;MAAAA,sCAAYR;mBACZS;MAAAA,4BAAOV;MACPW,eAAAA;mBACAC;MAAAA,4BAAOR;2BACPS;MAAAA,4CAAeV;MACRW,eAAPC;MACAC,cAAAA;MACAC,iBAAAA;uBACAC;MAAAA,oCAAW;wBACXC;MAAAA,sCAAY;sBACZC;MAAAA,kCAAU;sBACVC;MAAAA,kCAAU;uBACVC;MAAAA,oCAAW;mBACXC;MAAAA,4BAAO;yBACPC;MAAAA,wCAAa;+BACbC;MAAAA,oDAAmB;MACnBC,mBAAAA;MACAC,YAAAA;MACAC,kBAAAA;MACAC,mBAAAA;MACGC,wBArBL,YAAA,QAAA,aAAA,QAAA,gBAAA,SAAA,YAAA,eAAA,YAAA,aAAA,WAAA,WAAA,YAAA,QAAA,cAAA,oBAAA,iBAAA,UAAA,eAAA,gBAAA;;8BAyBgCC,yCAAAA,CAAqBlB,YAArBkB,EAAmCjB,SAAnCiB,EAA8Cf,QAA9Ce;MAAzBhB,KAAP;MAAciB,cAAd;;MAEMC,WAAW,GAAGC,aAAAA,CAAQ;QACtBnB,KAAK,KAAK,IAAI,OAAO,IAAP;QAEZkB,WAAW,GAAGrB,IAAI,CAACuB,IAALvB,CAAU,UAACwB,IAAD;aAAUA,IAAI,CAACC,EAALD,KAAYrB;AAAhC,KAAAH;WAEbqB,WAAW,IAAI;AALG,GAAPC,EAMjB,CAACnB,KAAD,EAAQH,IAAR,CANiBsB;MAQdI,YAAY,GAAGJ,aAAAA,CAAQ;QACvB,CAACD,aAAa,OAAO,EAAP;;QAEdP,eAAe;aACVA,aAAa,CAACO,WAAD;;;WAGfA,WAAW,CAACM;AAPO,GAAPL,EAQlB,CAACD,WAAD,EAAcP,aAAd,CARkBQ;MAUfM,WAAW,GAAGC,iBAAAA,CAClB,UAACC,GAAD;QACMxB,UAAU;AAEdwB,IAAAA,GAAG,CAACC,eAAJD;AAEAV,IAAAA,cAAc,CAAC7B,UAAD,EAAa8B,WAAb,CAAdD;AAN2B,GAAXS,EAQlB,CAACT,cAAD,EAAiBd,QAAjB,EAA2Be,WAA3B,CARkBQ;;kBAWMG,cAAAA,CAAS,KAATA;MAAnBC,KAAP;MAAcC,QAAd;;MACMC,WAAW,GAAGN,iBAAAA,CAClB,UAACO,OAAD;QACM9B,UAAU;AACd4B,IAAAA,QAAQ,CAACE,OAAD,CAARF;AAH2B,GAAXL,EAKlB,CAACvB,QAAD,CALkBuB;MAQdQ,QAAQ,GAAG,CAAC,CAACX;;MAGbY,iBAAiB,GAAGhB,aAAAA,CAAQ;WACzBf,SAAS,IAAI8B,QAAb9B,IAAyB,CAACD,QAA1BC,KAAuCM,gBAAgB,KAAK,QAArBA,IAAiCoB,KAAxE1B;AADwB,GAAPe,EAEvB,CAACf,SAAD,EAAY8B,QAAZ,EAAsB/B,QAAtB,EAAgCO,gBAAhC,EAAkDoB,KAAlD,CAFuBX;MAIpBiB,GAAG,GAAGC,YAAAA,CACV3C,SADU2C,EAEVzC,SAFUyC,EAGP3C,SAHS,kBAGTA,GAAyBe,UAHlB4B,EAIP3C,SAJS,YAITA,GAAmBc,IAJZ6B,EAKVhC,OAAO,aALGgC,EAMVlC,QAAQ,IAAI,UANFkC,EAOV9B,QAAQ,IAAI,UAPF8B,EAQV/B,OAAO,IAAI,SARD+B;sBAYVC,yBAAAA,cAAAA,MAAAA;AACE7C,IAAAA,GAAG,EAAEA;AACLE,IAAAA,IAAI,EAAEA;AACNC,IAAAA,SAAS,EAAEwC;AACXvB,IAAAA,WAAW,EAAE,oBAAA,CAACc,GAAD;AACXK,MAAAA,WAAW,CAAC,IAAD,CAAXA;AACAnB,MAAAA,YAAW,SAAXA,IAAAA,YAAW,WAAXA,SAAAA,GAAAA,YAAW,CAAGc,GAAH,CAAXd;;AAEFC,IAAAA,YAAY,EAAE,qBAAA,CAACa,GAAD;AACZK,MAAAA,WAAW,CAAC,KAAD,CAAXA;AACAlB,MAAAA,aAAY,SAAZA,IAAAA,aAAY,WAAZA,SAAAA,GAAAA,aAAY,CAAGa,GAAH,CAAZb;;KAEEC,KAZNuB,EAcGJ,QAAQ,gBACPI,yBAAAA,cAAAA,OAAAA;AAAM1C,IAAAA,SAAS,EAAKF,SAAL;GAAf4C,EAAyCf,YAAzCe,CADO,gBAGPA,yBAAAA,cAAAA,OAAAA;AAAM1C,IAAAA,SAAS,EAAKF,SAAL;GAAf4C,EAA+CpC,WAA/CoC,CAjBJA,EAmBG1B,MAAM,IAAIuB,iBAAVvB,gBACC0B,yBAAAA,cAAAA,OAAAA;AAAM1C,IAAAA,SAAS,EAAKF,SAAL;GAAf4C,EACGH,iBAAiB,gBAChBG,yBAAAA,cAAAA,OAAAA;AACE3C,IAAAA,IAAI,EAAC;AACL4C,IAAAA,QAAQ,EAAE,CAAC;AACX3C,IAAAA,SAAS,EAAEyC,YAAAA,CAAM3C,SAAJ,YAAF2C,EAA0B,QAA1BA;AACXG,IAAAA,OAAO,EAAEf;GAJXa,eAMEA,yBAAAA,cAAAA,CAACG,uBAADH,MAAAA,CANFA,CADgB,GAUhB1B,MAXJ0B,CADD1B,GAeG,IAlCN0B;AAtF6B,CAAV/C;;AAgMzB,IAAImD,WAAJ,EAAa;AACXpD,EAAAA,SAAS,CAACqD,WAAVrD,GAAwB,WAAxBA;;;"}
package/lib/cjs/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /** @LICENSE
2
- * @hi-ui/input v4.0.0-alpha.4
2
+ * @hi-ui/input
3
3
  * https://github.com/XiaoMi/hiui/tree/master/packages/ui/input#readme
4
4
  *
5
5
  * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
@@ -17,7 +17,13 @@ require('./styles/index.scss.js');
17
17
 
18
18
  var Input = require('./Input.js');
19
19
 
20
+ var useInput = require('./use-input.js');
21
+
22
+ var MockInput = require('./MockInput.js');
23
+
20
24
  exports.Input = Input.Input;
21
25
  exports["default"] = Input.Input;
22
26
  exports.onChangeMock = Input.onChangeMock;
27
+ exports.useInput = useInput.useInput;
28
+ exports.MockInput = MockInput.MockInput;
23
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;"}