@arco-design/mobile-react 2.20.0 → 2.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.en-US.md +2 -2
- package/README.md +2 -2
- package/cjs/avatar/index.d.ts +1 -1
- package/cjs/avatar/index.js +1 -1
- package/cjs/badge/index.d.ts +1 -1
- package/cjs/badge/index.js +1 -1
- package/cjs/button/style/css/index.css +64 -64
- package/cjs/button/style/index.less +7 -5
- package/cjs/carousel/index.d.ts +1 -1
- package/cjs/carousel/index.js +1 -1
- package/cjs/cell/index.d.ts +1 -1
- package/cjs/cell/index.js +1 -1
- package/cjs/checkbox/index.d.ts +1 -1
- package/cjs/checkbox/index.js +1 -1
- package/cjs/collapse/index.d.ts +1 -1
- package/cjs/collapse/index.js +1 -1
- package/cjs/count-down/index.d.ts +1 -1
- package/cjs/count-down/index.js +1 -1
- package/cjs/date-picker/index.d.ts +1 -1
- package/cjs/date-picker/index.js +1 -1
- package/cjs/dropdown/dropdown.js +36 -20
- package/cjs/dropdown/style/css/index.css +3 -0
- package/cjs/dropdown/style/index.less +2 -0
- package/cjs/ellipsis/components/js-ellipsis.js +2 -3
- package/cjs/ellipsis/index.d.ts +1 -1
- package/cjs/ellipsis/index.js +3 -4
- package/cjs/image/index.d.ts +1 -1
- package/cjs/image/index.js +1 -1
- package/cjs/image-picker/index.d.ts +4 -175
- package/cjs/image-picker/index.js +41 -18
- package/cjs/image-picker/type.d.ts +174 -0
- package/cjs/image-picker/type.js +3 -0
- package/cjs/image-preview/index.d.ts +1 -1
- package/cjs/image-preview/index.js +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +9 -1
- package/cjs/input/hooks.js +49 -8
- package/cjs/input/index.d.ts +1 -1
- package/cjs/input/index.js +1 -1
- package/cjs/input/props.d.ts +8 -2
- package/cjs/notice-bar/index.d.ts +1 -1
- package/cjs/notice-bar/index.js +1 -1
- package/cjs/picker/index.d.ts +1 -1
- package/cjs/picker/index.js +1 -1
- package/cjs/picker-view/index.d.ts +1 -1
- package/cjs/picker-view/index.js +1 -1
- package/cjs/popover/index.d.ts +1 -1
- package/cjs/popover/index.js +1 -1
- package/cjs/popup-swiper/index.js +3 -2
- package/cjs/radio/index.d.ts +1 -1
- package/cjs/radio/index.js +1 -1
- package/cjs/rate/index.d.ts +1 -1
- package/cjs/rate/index.js +1 -1
- package/cjs/search-bar/association.d.ts +3 -0
- package/cjs/search-bar/association.js +92 -0
- package/cjs/search-bar/cancel-button.d.ts +10 -0
- package/cjs/search-bar/cancel-button.js +41 -0
- package/cjs/search-bar/demo/style/css/mobile.css +5 -0
- package/cjs/search-bar/demo/style/mobile.less +9 -0
- package/cjs/search-bar/highlight.d.ts +12 -0
- package/cjs/search-bar/highlight.js +77 -0
- package/cjs/search-bar/index.d.ts +13 -0
- package/cjs/search-bar/index.js +231 -0
- package/cjs/search-bar/style/css/index.css +148 -0
- package/cjs/search-bar/style/css/index.d.ts +2 -0
- package/cjs/search-bar/style/css/index.js +5 -0
- package/cjs/search-bar/style/index.d.ts +2 -0
- package/cjs/search-bar/style/index.js +5 -0
- package/cjs/search-bar/style/index.less +111 -0
- package/cjs/search-bar/type.d.ts +163 -0
- package/cjs/search-bar/type.js +3 -0
- package/cjs/slider/index.d.ts +1 -1
- package/cjs/slider/index.js +1 -1
- package/cjs/steps/index.d.ts +1 -1
- package/cjs/steps/index.js +1 -1
- package/cjs/sticky/index.d.ts +1 -1
- package/cjs/style.d.ts +2 -0
- package/cjs/style.js +4 -0
- package/cjs/swipe-action/demo/style/css/mobile.css +5 -0
- package/cjs/swipe-action/demo/style/mobile.less +9 -0
- package/cjs/swipe-action/index.d.ts +12 -0
- package/cjs/swipe-action/index.js +337 -0
- package/cjs/swipe-action/item.d.ts +11 -0
- package/cjs/swipe-action/item.js +52 -0
- package/cjs/swipe-action/style/css/index.css +88 -0
- package/cjs/swipe-action/style/css/index.d.ts +2 -0
- package/cjs/swipe-action/style/css/index.js +5 -0
- package/cjs/swipe-action/style/index.d.ts +2 -0
- package/cjs/swipe-action/style/index.js +5 -0
- package/cjs/swipe-action/style/index.less +89 -0
- package/cjs/swipe-action/type.d.ts +123 -0
- package/cjs/swipe-action/type.js +3 -0
- package/cjs/switch/index.d.ts +1 -1
- package/cjs/switch/index.js +1 -1
- package/cjs/tabs/tab-pane.js +5 -1
- package/cjs/tag/index.d.ts +1 -1
- package/cjs/tag/index.js +1 -1
- package/cjs/textarea/index.d.ts +1 -1
- package/cjs/textarea/index.js +1 -1
- package/dist/index.js +7394 -6570
- package/dist/index.min.js +6 -6
- package/dist/style.css +267 -64
- package/dist/style.min.css +1 -1
- package/esm/avatar/index.d.ts +1 -1
- package/esm/avatar/index.js +1 -1
- package/esm/badge/index.d.ts +1 -1
- package/esm/badge/index.js +1 -1
- package/esm/button/style/css/index.css +64 -64
- package/esm/button/style/index.less +7 -5
- package/esm/carousel/index.d.ts +1 -1
- package/esm/carousel/index.js +1 -1
- package/esm/cell/index.d.ts +1 -1
- package/esm/cell/index.js +1 -1
- package/esm/checkbox/index.d.ts +1 -1
- package/esm/checkbox/index.js +1 -1
- package/esm/collapse/index.d.ts +1 -1
- package/esm/collapse/index.js +1 -1
- package/esm/count-down/index.d.ts +1 -1
- package/esm/count-down/index.js +1 -1
- package/esm/date-picker/index.d.ts +1 -1
- package/esm/date-picker/index.js +1 -1
- package/esm/dropdown/dropdown.js +36 -20
- package/esm/dropdown/style/css/index.css +3 -0
- package/esm/dropdown/style/index.less +2 -0
- package/esm/ellipsis/components/js-ellipsis.js +2 -3
- package/esm/ellipsis/index.d.ts +1 -1
- package/esm/ellipsis/index.js +3 -4
- package/esm/image/index.d.ts +1 -1
- package/esm/image/index.js +1 -1
- package/esm/image-picker/index.d.ts +4 -175
- package/esm/image-picker/index.js +30 -17
- package/esm/image-picker/type.d.ts +174 -0
- package/esm/image-picker/type.js +1 -0
- package/esm/image-preview/index.d.ts +1 -1
- package/esm/image-preview/index.js +1 -1
- package/esm/index.d.ts +2 -0
- package/esm/index.js +2 -0
- package/esm/input/hooks.js +49 -8
- package/esm/input/index.d.ts +1 -1
- package/esm/input/index.js +1 -1
- package/esm/input/props.d.ts +8 -2
- package/esm/notice-bar/index.d.ts +1 -1
- package/esm/notice-bar/index.js +1 -1
- package/esm/picker/index.d.ts +1 -1
- package/esm/picker/index.js +1 -1
- package/esm/picker-view/index.d.ts +1 -1
- package/esm/picker-view/index.js +1 -1
- package/esm/popover/index.d.ts +1 -1
- package/esm/popover/index.js +1 -1
- package/esm/popup-swiper/index.js +3 -2
- package/esm/radio/index.d.ts +1 -1
- package/esm/radio/index.js +1 -1
- package/esm/rate/index.d.ts +1 -1
- package/esm/rate/index.js +1 -1
- package/esm/search-bar/association.d.ts +3 -0
- package/esm/search-bar/association.js +82 -0
- package/esm/search-bar/cancel-button.d.ts +10 -0
- package/esm/search-bar/cancel-button.js +30 -0
- package/esm/search-bar/demo/style/css/mobile.css +5 -0
- package/esm/search-bar/demo/style/mobile.less +9 -0
- package/esm/search-bar/highlight.d.ts +12 -0
- package/esm/search-bar/highlight.js +66 -0
- package/esm/search-bar/index.d.ts +13 -0
- package/esm/search-bar/index.js +212 -0
- package/esm/search-bar/style/css/index.css +148 -0
- package/esm/search-bar/style/css/index.d.ts +2 -0
- package/esm/search-bar/style/css/index.js +2 -0
- package/esm/search-bar/style/index.d.ts +2 -0
- package/esm/search-bar/style/index.js +2 -0
- package/esm/search-bar/style/index.less +111 -0
- package/esm/search-bar/type.d.ts +163 -0
- package/esm/search-bar/type.js +1 -0
- package/esm/slider/index.d.ts +1 -1
- package/esm/slider/index.js +1 -1
- package/esm/steps/index.d.ts +1 -1
- package/esm/steps/index.js +1 -1
- package/esm/sticky/index.d.ts +1 -1
- package/esm/style.d.ts +2 -0
- package/esm/style.js +2 -0
- package/esm/swipe-action/demo/style/css/mobile.css +5 -0
- package/esm/swipe-action/demo/style/mobile.less +9 -0
- package/esm/swipe-action/index.d.ts +12 -0
- package/esm/swipe-action/index.js +320 -0
- package/esm/swipe-action/item.d.ts +11 -0
- package/esm/swipe-action/item.js +42 -0
- package/esm/swipe-action/style/css/index.css +88 -0
- package/esm/swipe-action/style/css/index.d.ts +2 -0
- package/esm/swipe-action/style/css/index.js +2 -0
- package/esm/swipe-action/style/index.d.ts +2 -0
- package/esm/swipe-action/style/index.js +2 -0
- package/esm/swipe-action/style/index.less +89 -0
- package/esm/swipe-action/type.d.ts +123 -0
- package/esm/swipe-action/type.js +1 -0
- package/esm/switch/index.d.ts +1 -1
- package/esm/switch/index.js +1 -1
- package/esm/tabs/tab-pane.js +5 -1
- package/esm/tag/index.d.ts +1 -1
- package/esm/tag/index.js +1 -1
- package/esm/textarea/index.d.ts +1 -1
- package/esm/textarea/index.js +1 -1
- package/package.json +3 -3
- package/tokens/app/arcodesign/default/css-variables.less +34 -0
- package/tokens/app/arcodesign/default/index.d.ts +34 -0
- package/tokens/app/arcodesign/default/index.js +34 -0
- package/tokens/app/arcodesign/default/index.json +398 -0
- package/tokens/app/arcodesign/default/index.less +34 -0
- package/umd/avatar/index.d.ts +1 -1
- package/umd/avatar/index.js +1 -1
- package/umd/badge/index.d.ts +1 -1
- package/umd/badge/index.js +1 -1
- package/umd/button/style/css/index.css +64 -64
- package/umd/button/style/index.less +7 -5
- package/umd/carousel/index.d.ts +1 -1
- package/umd/carousel/index.js +1 -1
- package/umd/cell/index.d.ts +1 -1
- package/umd/cell/index.js +1 -1
- package/umd/checkbox/index.d.ts +1 -1
- package/umd/checkbox/index.js +1 -1
- package/umd/collapse/index.d.ts +1 -1
- package/umd/collapse/index.js +1 -1
- package/umd/count-down/index.d.ts +1 -1
- package/umd/count-down/index.js +1 -1
- package/umd/date-picker/index.d.ts +1 -1
- package/umd/date-picker/index.js +1 -1
- package/umd/dropdown/dropdown.js +36 -20
- package/umd/dropdown/style/css/index.css +3 -0
- package/umd/dropdown/style/index.less +2 -0
- package/umd/ellipsis/components/js-ellipsis.js +2 -3
- package/umd/ellipsis/index.d.ts +1 -1
- package/umd/ellipsis/index.js +3 -4
- package/umd/image/index.d.ts +1 -1
- package/umd/image/index.js +1 -1
- package/umd/image-picker/index.d.ts +4 -175
- package/umd/image-picker/index.js +40 -22
- package/umd/image-picker/type.d.ts +174 -0
- package/umd/image-picker/type.js +17 -0
- package/umd/image-preview/index.d.ts +1 -1
- package/umd/image-preview/index.js +1 -1
- package/umd/index.d.ts +2 -0
- package/umd/index.js +9 -5
- package/umd/input/hooks.js +48 -7
- package/umd/input/index.d.ts +1 -1
- package/umd/input/index.js +1 -1
- package/umd/input/props.d.ts +8 -2
- package/umd/notice-bar/index.d.ts +1 -1
- package/umd/notice-bar/index.js +1 -1
- package/umd/picker/index.d.ts +1 -1
- package/umd/picker/index.js +1 -1
- package/umd/picker-view/index.d.ts +1 -1
- package/umd/picker-view/index.js +1 -1
- package/umd/popover/index.d.ts +1 -1
- package/umd/popover/index.js +1 -1
- package/umd/popup-swiper/index.js +3 -2
- package/umd/radio/index.d.ts +1 -1
- package/umd/radio/index.js +1 -1
- package/umd/rate/index.d.ts +1 -1
- package/umd/rate/index.js +1 -1
- package/umd/search-bar/association.d.ts +3 -0
- package/umd/search-bar/association.js +101 -0
- package/umd/search-bar/cancel-button.d.ts +10 -0
- package/umd/search-bar/cancel-button.js +52 -0
- package/umd/search-bar/demo/style/css/mobile.css +5 -0
- package/umd/search-bar/demo/style/mobile.less +9 -0
- package/umd/search-bar/highlight.d.ts +12 -0
- package/umd/search-bar/highlight.js +87 -0
- package/umd/search-bar/index.d.ts +13 -0
- package/umd/search-bar/index.js +229 -0
- package/umd/search-bar/style/css/index.css +148 -0
- package/umd/search-bar/style/css/index.d.ts +2 -0
- package/umd/search-bar/style/css/index.js +15 -0
- package/umd/search-bar/style/index.d.ts +2 -0
- package/umd/search-bar/style/index.js +15 -0
- package/umd/search-bar/style/index.less +111 -0
- package/umd/search-bar/type.d.ts +163 -0
- package/umd/search-bar/type.js +17 -0
- package/umd/slider/index.d.ts +1 -1
- package/umd/slider/index.js +1 -1
- package/umd/steps/index.d.ts +1 -1
- package/umd/steps/index.js +1 -1
- package/umd/sticky/index.d.ts +1 -1
- package/umd/style.d.ts +2 -0
- package/umd/style.js +4 -4
- package/umd/swipe-action/demo/style/css/mobile.css +5 -0
- package/umd/swipe-action/demo/style/mobile.less +9 -0
- package/umd/swipe-action/index.d.ts +12 -0
- package/umd/swipe-action/index.js +342 -0
- package/umd/swipe-action/item.d.ts +11 -0
- package/umd/swipe-action/item.js +62 -0
- package/umd/swipe-action/style/css/index.css +88 -0
- package/umd/swipe-action/style/css/index.d.ts +2 -0
- package/umd/swipe-action/style/css/index.js +15 -0
- package/umd/swipe-action/style/index.d.ts +2 -0
- package/umd/swipe-action/style/index.js +15 -0
- package/umd/swipe-action/style/index.less +89 -0
- package/umd/swipe-action/type.d.ts +123 -0
- package/umd/swipe-action/type.js +17 -0
- package/umd/switch/index.d.ts +1 -1
- package/umd/switch/index.js +1 -1
- package/umd/tabs/tab-pane.js +5 -1
- package/umd/tag/index.d.ts +1 -1
- package/umd/tag/index.js +1 -1
- package/umd/textarea/index.d.ts +1 -1
- package/umd/textarea/index.js +1 -1
package/cjs/input/hooks.js
CHANGED
@@ -45,6 +45,8 @@ function useInputLogic(props, inputRef) {
|
|
45
45
|
clearShowType = _props$clearShowType === void 0 ? 'focus' : _props$clearShowType,
|
46
46
|
_props$clearIcon = props.clearIcon,
|
47
47
|
clearIcon = _props$clearIcon === void 0 ? /*#__PURE__*/_react.default.createElement(_IconClear.default, null) : _props$clearIcon,
|
48
|
+
_props$preventEventWh = props.preventEventWhenClearing,
|
49
|
+
preventEventWhenClearing = _props$preventEventWh === void 0 ? true : _props$preventEventWh,
|
48
50
|
onClear = props.onClear,
|
49
51
|
autoFocus = props.autoFocus;
|
50
52
|
|
@@ -57,8 +59,30 @@ function useInputLogic(props, inputRef) {
|
|
57
59
|
}),
|
58
60
|
showClear = _useState2[0],
|
59
61
|
toggleClear = _useState2[1];
|
60
|
-
|
61
|
-
|
62
|
+
/**
|
63
|
+
* clear相关问题背景
|
64
|
+
* 如果点击clear按钮之前已经是focusing状态了,那么在点完clear按钮之后会手动聚焦一下
|
65
|
+
* 该行为将导致onClear事件触发时,也会触发一次onBlur和onFocus事件,可能影响一些组件外的代码逻辑
|
66
|
+
*
|
67
|
+
* e.g. 假设input按钮右侧有一个按钮仅在聚焦时展示
|
68
|
+
* 实现代码大致是:onBlur设置其visible为false,onFocus设置其visible为true
|
69
|
+
* 那么这个按钮就会因为clear的点击造成一瞬的闪烁
|
70
|
+
*
|
71
|
+
* 解决思路
|
72
|
+
* 先来看一下,在输入框已激活的状态时,点击清除按钮后,组件的一些事件的触发顺序
|
73
|
+
* handleBlur -> handleClear -> handleFocus -> onBlur(外部回调) -> onFocus(外部回调)
|
74
|
+
* 可以看到外部的onBlur和onFocus回调都是在handleClear函数之后被调用
|
75
|
+
* 因此可以在handleClear中设置一个shouldPreventEvent的boolean标志
|
76
|
+
* 如果这个标志为true,则跳过调用外部的onBlur和onFocus,并在最后再将标志置回false
|
77
|
+
*
|
78
|
+
*/
|
79
|
+
|
80
|
+
|
81
|
+
var _useState3 = (0, _react.useState)(false),
|
82
|
+
isFocusing = _useState3[0],
|
83
|
+
setIsFocusing = _useState3[1];
|
84
|
+
|
85
|
+
var shouldPreventEvent = (0, _react.useRef)(false);
|
62
86
|
var actualInputValue = value !== void 0 ? value : inputValue;
|
63
87
|
var system = (0, _helpers.useSystem)();
|
64
88
|
var wrapRef = (0, _react.useRef)(null);
|
@@ -126,7 +150,12 @@ function useInputLogic(props, inputRef) {
|
|
126
150
|
|
127
151
|
function handleFocus(e) {
|
128
152
|
(0, _mobileUtils.nextTick)(function () {
|
129
|
-
|
153
|
+
if (preventEventWhenClearing && shouldPreventEvent.current) {
|
154
|
+
shouldPreventEvent.current = false;
|
155
|
+
return;
|
156
|
+
}
|
157
|
+
|
158
|
+
setIsFocusing(true);
|
130
159
|
clearShowType === 'focus' && toggleClear(true);
|
131
160
|
onFocus && onFocus(e);
|
132
161
|
});
|
@@ -134,7 +163,11 @@ function useInputLogic(props, inputRef) {
|
|
134
163
|
|
135
164
|
function handleBlur(e) {
|
136
165
|
(0, _mobileUtils.nextTick)(function () {
|
137
|
-
|
166
|
+
if (preventEventWhenClearing && shouldPreventEvent.current) {
|
167
|
+
return;
|
168
|
+
}
|
169
|
+
|
170
|
+
setIsFocusing(false);
|
138
171
|
clearShowType === 'focus' && toggleClear(false);
|
139
172
|
onBlur && onBlur(e);
|
140
173
|
});
|
@@ -143,7 +176,7 @@ function useInputLogic(props, inputRef) {
|
|
143
176
|
function handleClick(e) {
|
144
177
|
// 安卓才会有键盘切换不过来的问题,ios不开启此项,因为blur之后不能再自动focus
|
145
178
|
// @en Android will have the problem that the keyboard cannot be switched. iOS does not enable this, because it can no longer automatically focus after blur.
|
146
|
-
if (blurBeforeFocus && system === 'android' && !
|
179
|
+
if (blurBeforeFocus && system === 'android' && !isFocusing) {
|
147
180
|
inputRef.current && inputRef.current.blur();
|
148
181
|
(0, _mobileUtils.nextTick)(function () {
|
149
182
|
inputRef.current && inputRef.current.focus();
|
@@ -166,18 +199,26 @@ function useInputLogic(props, inputRef) {
|
|
166
199
|
onClear && onClear(e); // 当点击clear前是focus时强制执行focus
|
167
200
|
// @en Enforce focus when focus is before clicking clear
|
168
201
|
|
169
|
-
if (
|
202
|
+
if (isFocusing) {
|
203
|
+
if (preventEventWhenClearing) {
|
204
|
+
shouldPreventEvent.current = true;
|
205
|
+
}
|
206
|
+
|
170
207
|
inputRef.current && inputRef.current.focus();
|
171
208
|
}
|
172
209
|
});
|
173
210
|
}
|
174
211
|
|
212
|
+
function renderPendNode(pend) {
|
213
|
+
return typeof pend === 'function' ? pend(isFocusing, actualInputValue) : pend;
|
214
|
+
}
|
215
|
+
|
175
216
|
function renderWrapper(prefixCls, type, children) {
|
176
217
|
return /*#__PURE__*/_react.default.createElement("div", {
|
177
218
|
className: prefixCls + "-container all-border-box " + (className || ''),
|
178
219
|
style: style,
|
179
220
|
ref: wrapRef
|
180
|
-
}, prepend, /*#__PURE__*/_react.default.createElement("div", {
|
221
|
+
}, renderPendNode(prepend), /*#__PURE__*/_react.default.createElement("div", {
|
181
222
|
className: (0, _mobileUtils.cls)(prefixCls + "-wrap", type, "border-" + border, system, {
|
182
223
|
disabled: disabled
|
183
224
|
}, {
|
@@ -196,7 +237,7 @@ function useInputLogic(props, inputRef) {
|
|
196
237
|
onClick: handleClear
|
197
238
|
}, clearIcon) : null, suffix ? /*#__PURE__*/_react.default.createElement("div", {
|
198
239
|
className: prefixCls + "-suffix"
|
199
|
-
}, suffix) : null), append);
|
240
|
+
}, suffix) : null), renderPendNode(append));
|
200
241
|
}
|
201
242
|
|
202
243
|
return {
|
package/cjs/input/index.d.ts
CHANGED
package/cjs/input/index.js
CHANGED
@@ -22,7 +22,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
22
22
|
/**
|
23
23
|
* 输入框组件,支持添加前后缀。
|
24
24
|
* @en The input box, supports adding prefixes and suffixes.
|
25
|
-
* @type
|
25
|
+
* @type 数据录入
|
26
26
|
* @type_en Data Entry
|
27
27
|
* @name 输入框
|
28
28
|
* @name_en Input
|
package/cjs/input/props.d.ts
CHANGED
@@ -80,12 +80,12 @@ export interface BasicInputProps<T = HTMLInputElement> {
|
|
80
80
|
* 输入框头部内容,在输入框外部
|
81
81
|
* @en The content of the header of the input box, outside the input box
|
82
82
|
*/
|
83
|
-
prepend?: React.ReactNode;
|
83
|
+
prepend?: React.ReactNode | ((focusing: boolean, inputValue: string) => React.ReactNode);
|
84
84
|
/**
|
85
85
|
* 输入框尾部内容,在输入框外部
|
86
86
|
* @en The content at the end of the input box, outside the input box
|
87
87
|
*/
|
88
|
-
append?: React.ReactNode;
|
88
|
+
append?: React.ReactNode | ((focusing: boolean, inputValue: string) => React.ReactNode);
|
89
89
|
/**
|
90
90
|
* 在聚焦之前blur掉,即切换不同input时会重新弹起键盘,常用于input type切换时重新加载键盘,安卓上有效
|
91
91
|
* @en Blur before focusing, that is, the keyboard will be re-bounced when switching between different inputs. It is often used to reload the keyboard when the input type is switched. It is valid on Android.
|
@@ -102,6 +102,12 @@ export interface BasicInputProps<T = HTMLInputElement> {
|
|
102
102
|
* @default "focus"
|
103
103
|
*/
|
104
104
|
clearShowType?: 'focus' | 'value' | 'always';
|
105
|
+
/**
|
106
|
+
* 在聚焦模式下点击清除按钮时,是否要屏蔽对应产生的onBlur和onFocus事件
|
107
|
+
* @en Whether to block the onBlur and onFocus events generated when the clear button is clicked in focus mode
|
108
|
+
* @default true
|
109
|
+
*/
|
110
|
+
preventEventWhenClearing?: boolean;
|
105
111
|
/**
|
106
112
|
* 清除按钮类型,也可自定义
|
107
113
|
* @en Clear button type, also customizable
|
@@ -98,7 +98,7 @@ export interface NoticeBarRef {
|
|
98
98
|
/**
|
99
99
|
* 可自定义换行或滚动效果,支持循环滚动。
|
100
100
|
* @en Line wrapping or scrolling effects can be customized, and circular scrolling is supported.
|
101
|
-
* @type
|
101
|
+
* @type 信息展示
|
102
102
|
* @type_en Data Display
|
103
103
|
* @name 通知栏
|
104
104
|
* @name_en NoticeBar
|
package/cjs/notice-bar/index.js
CHANGED
@@ -20,7 +20,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
20
20
|
/**
|
21
21
|
* 可自定义换行或滚动效果,支持循环滚动。
|
22
22
|
* @en Line wrapping or scrolling effects can be customized, and circular scrolling is supported.
|
23
|
-
* @type
|
23
|
+
* @type 信息展示
|
24
24
|
* @type_en Data Display
|
25
25
|
* @name 通知栏
|
26
26
|
* @name_en NoticeBar
|
package/cjs/picker/index.d.ts
CHANGED
package/cjs/picker/index.js
CHANGED
@@ -45,7 +45,7 @@ export interface PickerViewRef {
|
|
45
45
|
/**
|
46
46
|
* 选择器视图组件,不含弹窗,方便使用方灵活定制选择器。
|
47
47
|
* @en The picker view component, not has contain popup, which is convenient for the user to flexibly customize the picker.
|
48
|
-
* @type
|
48
|
+
* @type 数据录入
|
49
49
|
* @type_en Data Entry
|
50
50
|
* @name 选择器视图
|
51
51
|
* @name_en PickerView
|
package/cjs/picker-view/index.js
CHANGED
@@ -46,7 +46,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
46
46
|
/**
|
47
47
|
* 选择器视图组件,不含弹窗,方便使用方灵活定制选择器。
|
48
48
|
* @en The picker view component, not has contain popup, which is convenient for the user to flexibly customize the picker.
|
49
|
-
* @type
|
49
|
+
* @type 数据录入
|
50
50
|
* @type_en Data Entry
|
51
51
|
* @name 选择器视图
|
52
52
|
* @name_en PickerView
|
package/cjs/popover/index.d.ts
CHANGED
@@ -8,7 +8,7 @@ declare const _default: import("react").ForwardRefExoticComponent<Partial<import
|
|
8
8
|
* @en Bubble card, supports six directions, small arrows are centered in each direction based on the mounted sub-elements, and supports controlled and uncontrolled modes.
|
9
9
|
* @name 气泡卡片
|
10
10
|
* @name_en Popover
|
11
|
-
* @type
|
11
|
+
* @type 信息展示
|
12
12
|
* @type_en Data Display
|
13
13
|
*/
|
14
14
|
export default _default;
|
package/cjs/popover/index.js
CHANGED
@@ -29,7 +29,7 @@ var Menu = (0, _menu.componentGenerator)(_popover.Popover);
|
|
29
29
|
* @en Bubble card, supports six directions, small arrows are centered in each direction based on the mounted sub-elements, and supports controlled and uncontrolled modes.
|
30
30
|
* @name 气泡卡片
|
31
31
|
* @name_en Popover
|
32
|
-
* @type
|
32
|
+
* @type 信息展示
|
33
33
|
* @type_en Data Display
|
34
34
|
*/
|
35
35
|
|
@@ -139,13 +139,14 @@ var PopupSwiper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
139
139
|
var movingFromDirec = allowedDirections.includes(fromDirec) ? fromDirec : '';
|
140
140
|
var disDirection = exitDirection || movingFromDirec;
|
141
141
|
var direcValue = ['top', 'bottom'].includes(disDirection) ? 'Y' : 'X';
|
142
|
+
var direcRatio = ['bottom', 'right'].includes(disDirection) ? 1 : -1;
|
142
143
|
|
143
144
|
switch (movingFromDirec) {
|
144
145
|
case 'top':
|
145
146
|
case 'bottom':
|
146
147
|
setDistance({
|
147
148
|
direction: direcValue,
|
148
|
-
value: Math
|
149
|
+
value: Math.abs(disY) * direcRatio
|
149
150
|
});
|
150
151
|
break;
|
151
152
|
|
@@ -153,7 +154,7 @@ var PopupSwiper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
153
154
|
case 'right':
|
154
155
|
setDistance({
|
155
156
|
direction: direcValue,
|
156
|
-
value: Math
|
157
|
+
value: Math.abs(disX) * direcRatio
|
157
158
|
});
|
158
159
|
break;
|
159
160
|
|
package/cjs/radio/index.d.ts
CHANGED
@@ -8,7 +8,7 @@ declare const _default: import("react").ForwardRefExoticComponent<import("./type
|
|
8
8
|
* @en Radio button, click to switch selection when available, supports disabled state and radio option group.
|
9
9
|
* @name 单选框
|
10
10
|
* @name_en Radio
|
11
|
-
* @type
|
11
|
+
* @type 数据录入
|
12
12
|
* @type_en Data Entry
|
13
13
|
*/
|
14
14
|
export default _default;
|
package/cjs/radio/index.js
CHANGED
@@ -29,7 +29,7 @@ var Group = (0, _group.componentGenerator)(_radio.Radio);
|
|
29
29
|
* @en Radio button, click to switch selection when available, supports disabled state and radio option group.
|
30
30
|
* @name 单选框
|
31
31
|
* @name_en Radio
|
32
|
-
* @type
|
32
|
+
* @type 数据录入
|
33
33
|
* @type_en Data Entry
|
34
34
|
*/
|
35
35
|
|
package/cjs/rate/index.d.ts
CHANGED
package/cjs/rate/index.js
CHANGED
@@ -0,0 +1,92 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports.SearchBarAssociation = SearchBarAssociation;
|
7
|
+
|
8
|
+
var _mobileUtils = require("@arco-design/mobile-utils");
|
9
|
+
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
11
|
+
|
12
|
+
var _highlight = require("./highlight");
|
13
|
+
|
14
|
+
function SearchBarAssociation(props) {
|
15
|
+
var _cls;
|
16
|
+
|
17
|
+
var prefixCls = props.prefixCls,
|
18
|
+
_props$associationIte = props.associationItems,
|
19
|
+
associationItems = _props$associationIte === void 0 ? [] : _props$associationIte,
|
20
|
+
highlightClassName = props.highlightClassName,
|
21
|
+
_props$highlightMode = props.highlightMode,
|
22
|
+
highlightMode = _props$highlightMode === void 0 ? 'none' : _props$highlightMode,
|
23
|
+
highlightStyle = props.highlightStyle,
|
24
|
+
onAssociationClick = props.onAssociationClick,
|
25
|
+
onAssociationItemClick = props.onAssociationItemClick,
|
26
|
+
renderAssociation = props.renderAssociation,
|
27
|
+
renderAssociationItem = props.renderAssociationItem,
|
28
|
+
keyword = props.keyword,
|
29
|
+
visible = props.visible;
|
30
|
+
var searchBarAssociationPrefixCls = prefixCls + "-association";
|
31
|
+
var defaultHighlightClassName = searchBarAssociationPrefixCls + "-item-highlight";
|
32
|
+
|
33
|
+
var renderHighlightNode = function renderHighlightNode(content) {
|
34
|
+
if (!content || !keyword || highlightMode === 'none') {
|
35
|
+
return content;
|
36
|
+
}
|
37
|
+
|
38
|
+
var config = {
|
39
|
+
keyword: keyword,
|
40
|
+
content: content,
|
41
|
+
highlightClassName: highlightClassName || defaultHighlightClassName,
|
42
|
+
highlightStyle: highlightStyle
|
43
|
+
};
|
44
|
+
|
45
|
+
if (highlightMode === 'contain') {
|
46
|
+
return (0, _highlight.highlightWithContainMode)(config);
|
47
|
+
}
|
48
|
+
|
49
|
+
if (highlightMode === 'prefix') {
|
50
|
+
return (0, _highlight.highlightWithPrefixMode)(config);
|
51
|
+
}
|
52
|
+
|
53
|
+
return typeof highlightMode === 'function' ? highlightMode(content, keyword, defaultHighlightClassName) : content;
|
54
|
+
};
|
55
|
+
|
56
|
+
var renderItem = function renderItem(item, index) {
|
57
|
+
var itemContent = item.content;
|
58
|
+
var node = itemContent; // itemContent为string类型,并且开启高亮模式才去走渲染高亮内容的逻辑
|
59
|
+
// @en When `itemContent` is a string, and the highlight mode is turned on, the logic of rendering the highlighted content is performed
|
60
|
+
|
61
|
+
if (typeof itemContent === 'string' && highlightMode !== 'none') {
|
62
|
+
node = renderHighlightNode(itemContent);
|
63
|
+
}
|
64
|
+
|
65
|
+
if (renderAssociationItem) {
|
66
|
+
node = renderAssociationItem(item, index, node);
|
67
|
+
}
|
68
|
+
|
69
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
70
|
+
key: index,
|
71
|
+
className: searchBarAssociationPrefixCls + "-item",
|
72
|
+
onClick: function onClick() {
|
73
|
+
return onAssociationItemClick == null ? void 0 : onAssociationItemClick(item, index);
|
74
|
+
}
|
75
|
+
}, node);
|
76
|
+
};
|
77
|
+
|
78
|
+
var renderContent = function renderContent() {
|
79
|
+
var associationContent = associationItems.map(renderItem);
|
80
|
+
|
81
|
+
if (renderAssociation) {
|
82
|
+
return renderAssociation(associationContent);
|
83
|
+
}
|
84
|
+
|
85
|
+
return associationContent;
|
86
|
+
};
|
87
|
+
|
88
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
89
|
+
className: (0, _mobileUtils.cls)(searchBarAssociationPrefixCls, (_cls = {}, _cls[searchBarAssociationPrefixCls + "-visible"] = visible, _cls)),
|
90
|
+
onClick: onAssociationClick
|
91
|
+
}, renderContent());
|
92
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
interface CancelButtonProps {
|
3
|
+
className: string;
|
4
|
+
onCancel?: () => void;
|
5
|
+
focusing: boolean;
|
6
|
+
currentInputValue: string;
|
7
|
+
text?: string;
|
8
|
+
}
|
9
|
+
export declare function CancelButton(props: CancelButtonProps): JSX.Element | null;
|
10
|
+
export {};
|
@@ -0,0 +1,41 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
exports.CancelButton = CancelButton;
|
5
|
+
|
6
|
+
var _mobileUtils = require("@arco-design/mobile-utils");
|
7
|
+
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
9
|
+
|
10
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
11
|
+
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
13
|
+
|
14
|
+
function CancelButton(props) {
|
15
|
+
var className = props.className,
|
16
|
+
onCancel = props.onCancel,
|
17
|
+
focusing = props.focusing,
|
18
|
+
currentInputValue = props.currentInputValue,
|
19
|
+
text = props.text;
|
20
|
+
|
21
|
+
var _useState = (0, _react.useState)(focusing || Boolean(currentInputValue)),
|
22
|
+
visible = _useState[0],
|
23
|
+
setVisible = _useState[1];
|
24
|
+
|
25
|
+
var handleClick = function handleClick() {
|
26
|
+
onCancel == null ? void 0 : onCancel(); // 如果不延迟,在聚焦切输入框有值的情况下,点击取消按钮会造成闪烁
|
27
|
+
// @en If there is no delay, when the focus cut input box has a value, clicking the cancel button will cause flickering
|
28
|
+
|
29
|
+
(0, _mobileUtils.nextTick)(function () {
|
30
|
+
setVisible(false);
|
31
|
+
});
|
32
|
+
};
|
33
|
+
|
34
|
+
(0, _react.useEffect)(function () {
|
35
|
+
setVisible(focusing || Boolean(currentInputValue));
|
36
|
+
}, [focusing, currentInputValue]);
|
37
|
+
return visible ? /*#__PURE__*/_react.default.createElement("span", {
|
38
|
+
className: className,
|
39
|
+
onClick: handleClick
|
40
|
+
}, text) : null;
|
41
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { SearchBarAssociationHighlightConfig } from './type';
|
3
|
+
/**
|
4
|
+
* 高亮搜索候选项中,包含的关键字
|
5
|
+
*
|
6
|
+
*/
|
7
|
+
export declare function highlightWithContainMode(config: SearchBarAssociationHighlightConfig): React.ReactNode[];
|
8
|
+
/**
|
9
|
+
* 高亮搜索候选项和关键字的最长前缀公共字符串
|
10
|
+
*
|
11
|
+
*/
|
12
|
+
export declare function highlightWithPrefixMode(config: SearchBarAssociationHighlightConfig): string | (string | JSX.Element)[];
|
@@ -0,0 +1,77 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
exports.__esModule = true;
|
6
|
+
exports.highlightWithContainMode = highlightWithContainMode;
|
7
|
+
exports.highlightWithPrefixMode = highlightWithPrefixMode;
|
8
|
+
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
10
|
+
|
11
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
12
|
+
|
13
|
+
var _react = _interopRequireDefault(require("react"));
|
14
|
+
|
15
|
+
var _excluded = ["content", "keyword"];
|
16
|
+
|
17
|
+
function createHighlightNode(config, index) {
|
18
|
+
var keyword = config.keyword,
|
19
|
+
highlightClassName = config.highlightClassName,
|
20
|
+
highlightStyle = config.highlightStyle;
|
21
|
+
return /*#__PURE__*/_react.default.createElement("span", {
|
22
|
+
className: highlightClassName,
|
23
|
+
style: highlightStyle,
|
24
|
+
key: index
|
25
|
+
}, keyword);
|
26
|
+
}
|
27
|
+
/**
|
28
|
+
* 高亮搜索候选项中,包含的关键字
|
29
|
+
*
|
30
|
+
*/
|
31
|
+
|
32
|
+
|
33
|
+
function highlightWithContainMode(config) {
|
34
|
+
var _config$content = config.content,
|
35
|
+
content = _config$content === void 0 ? '' : _config$content,
|
36
|
+
_config$keyword = config.keyword,
|
37
|
+
keyword = _config$keyword === void 0 ? '' : _config$keyword; // 具体实现思路就是将keyword作为split的分隔符,切割content得到数组
|
38
|
+
|
39
|
+
var splitContent = content.split(keyword); // 再将高亮后的keyword节点,插空填入数组
|
40
|
+
|
41
|
+
var highlightResult = splitContent.reduce(function (prev, word, index) {
|
42
|
+
prev.push(word);
|
43
|
+
|
44
|
+
if (index !== splitContent.length - 1) {
|
45
|
+
prev.push(createHighlightNode(config, index));
|
46
|
+
}
|
47
|
+
|
48
|
+
return prev;
|
49
|
+
}, []);
|
50
|
+
return highlightResult;
|
51
|
+
}
|
52
|
+
/**
|
53
|
+
* 高亮搜索候选项和关键字的最长前缀公共字符串
|
54
|
+
*
|
55
|
+
*/
|
56
|
+
|
57
|
+
|
58
|
+
function highlightWithPrefixMode(config) {
|
59
|
+
var _config$content2 = config.content,
|
60
|
+
content = _config$content2 === void 0 ? '' : _config$content2,
|
61
|
+
_config$keyword2 = config.keyword,
|
62
|
+
keyword = _config$keyword2 === void 0 ? '' : _config$keyword2,
|
63
|
+
otherConfig = (0, _objectWithoutPropertiesLoose2.default)(config, _excluded);
|
64
|
+
var splitIndex = -1;
|
65
|
+
|
66
|
+
for (var i = 0; i < keyword.length; i++) {
|
67
|
+
if (i >= content.length || content[i] !== keyword[i]) {
|
68
|
+
break;
|
69
|
+
}
|
70
|
+
|
71
|
+
splitIndex = i;
|
72
|
+
}
|
73
|
+
|
74
|
+
return splitIndex > -1 ? [createHighlightNode((0, _extends2.default)({}, otherConfig, {
|
75
|
+
keyword: content.substring(0, splitIndex + 1)
|
76
|
+
}), 0), content.substring(splitIndex + 1)] : content;
|
77
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { SearchAssociationBaseItem, SearchBarProps, SearchBarRef } from './type';
|
3
|
+
export type { SearchBarProps, SearchBarRef, SearchAssociationHighlightMode, SearchAssociationItem, SearchAssociationShowType, SearchBarShape, } from './type';
|
4
|
+
/**
|
5
|
+
* 搜索栏组件
|
6
|
+
* @en SearchBar component
|
7
|
+
* @type 数据录入
|
8
|
+
* @type_en Data Entry
|
9
|
+
* @name 搜索栏
|
10
|
+
* @name_en SearchBar
|
11
|
+
*/
|
12
|
+
declare const SearchBar: React.ForwardRefExoticComponent<SearchBarProps<SearchAssociationBaseItem> & React.RefAttributes<SearchBarRef>>;
|
13
|
+
export default SearchBar;
|