@nutui/nutui-react-taro 3.0.19-cpp.26-beta.5 → 3.0.19-cpp.27

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 (89) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/locales/base.d.ts +5 -0
  3. package/dist/cjs/locales/en-US.js +5 -0
  4. package/dist/cjs/locales/id-ID.js +5 -0
  5. package/dist/cjs/locales/ja-JP.js +6 -1
  6. package/dist/cjs/locales/tr-TR.js +5 -0
  7. package/dist/cjs/locales/zh-CN.js +5 -0
  8. package/dist/cjs/locales/zh-TW.js +5 -0
  9. package/dist/cjs/locales/zh-UG.js +5 -0
  10. package/dist/cjs/packages/address/address.d.ts +1 -1
  11. package/dist/cjs/packages/animatingnumbers/countup.js +3 -1
  12. package/dist/cjs/packages/avatar/avatar.js +32 -6
  13. package/dist/cjs/packages/badge/badge.js +16 -3
  14. package/dist/cjs/packages/button/button.d.ts +2 -21
  15. package/dist/cjs/packages/button/button.js +2 -3
  16. package/dist/cjs/packages/button/index.d.ts +0 -1
  17. package/dist/cjs/packages/dialog/dialog.js +6 -2
  18. package/dist/cjs/packages/divider/divider.js +2 -2
  19. package/dist/cjs/packages/empty/empty.d.ts +4 -4
  20. package/dist/cjs/packages/image/image.js +11 -3
  21. package/dist/cjs/packages/input/input.js +10 -3
  22. package/dist/cjs/packages/progress/progress.js +2 -4
  23. package/dist/cjs/packages/quickenter/quickenter.js +21 -15
  24. package/dist/cjs/packages/quickenter/style/quickenter.scss +10 -2
  25. package/dist/cjs/packages/quickenter/style/style.css +7 -1
  26. package/dist/cjs/packages/quickenter/style/style.harmony.css +6 -1
  27. package/dist/cjs/packages/quickenter/style-jmapp/quickenter.scss +10 -2
  28. package/dist/cjs/packages/quickenter/style-jmapp/style.css +7 -1
  29. package/dist/cjs/packages/quickenter/style-jrkf/quickenter.scss +10 -2
  30. package/dist/cjs/packages/quickenter/style-jrkf/style.css +7 -1
  31. package/dist/cjs/packages/resultpage/resultpage.js +2 -1
  32. package/dist/cjs/packages/searchbar/searchbar.js +23 -9
  33. package/dist/cjs/packages/swipe/swipe.d.ts +1 -1
  34. package/dist/cjs/packages/tabs/tabs.js +12 -5
  35. package/dist/cjs/types/spec/button/base.d.ts +2 -1
  36. package/dist/cjs/types/spec/button/taro.d.ts +5 -1
  37. package/dist/cjs/types/spec/quickenter/base.d.ts +1 -0
  38. package/dist/cjs/utils/taro/get-rect.js +4 -2
  39. package/dist/es/locales/base.d.ts +5 -0
  40. package/dist/es/locales/en-US.js +5 -0
  41. package/dist/es/locales/id-ID.js +5 -0
  42. package/dist/es/locales/ja-JP.js +6 -1
  43. package/dist/es/locales/tr-TR.js +5 -0
  44. package/dist/es/locales/zh-CN.js +5 -0
  45. package/dist/es/locales/zh-TW.js +5 -0
  46. package/dist/es/locales/zh-UG.js +5 -0
  47. package/dist/es/packages/address/address.d.ts +1 -1
  48. package/dist/es/packages/animatingnumbers/countup.js +3 -1
  49. package/dist/es/packages/avatar/avatar.js +32 -6
  50. package/dist/es/packages/badge/badge.js +16 -3
  51. package/dist/es/packages/button/button.d.ts +2 -21
  52. package/dist/es/packages/button/button.js +2 -4
  53. package/dist/es/packages/button/index.d.ts +0 -1
  54. package/dist/es/packages/dialog/dialog.js +6 -2
  55. package/dist/es/packages/divider/divider.js +1 -1
  56. package/dist/es/packages/empty/empty.d.ts +4 -4
  57. package/dist/es/packages/image/image.js +11 -3
  58. package/dist/es/packages/input/input.js +10 -3
  59. package/dist/es/packages/popup/popup.js +1 -2
  60. package/dist/es/packages/progress/progress.js +2 -4
  61. package/dist/es/packages/quickenter/quickenter.js +19 -13
  62. package/dist/es/packages/quickenter/style/quickenter.scss +10 -2
  63. package/dist/es/packages/quickenter/style/style.css +7 -1
  64. package/dist/es/packages/quickenter/style/style.harmony.css +6 -1
  65. package/dist/es/packages/quickenter/style-jmapp/quickenter.scss +10 -2
  66. package/dist/es/packages/quickenter/style-jmapp/style.css +7 -1
  67. package/dist/es/packages/quickenter/style-jrkf/quickenter.scss +10 -2
  68. package/dist/es/packages/quickenter/style-jrkf/style.css +7 -1
  69. package/dist/es/packages/resultpage/resultpage.js +2 -1
  70. package/dist/es/packages/searchbar/searchbar.js +23 -9
  71. package/dist/es/packages/swipe/swipe.d.ts +1 -1
  72. package/dist/es/packages/tabs/tabs.js +12 -5
  73. package/dist/es/types/spec/button/base.d.ts +2 -1
  74. package/dist/es/types/spec/button/taro.d.ts +5 -1
  75. package/dist/es/types/spec/quickenter/base.d.ts +1 -0
  76. package/dist/es/utils/taro/get-rect.js +4 -2
  77. package/dist/nutui.react.umd.js +1127 -102
  78. package/dist/style-jmapp.css +1 -1
  79. package/dist/style-jmapp.scss +30 -30
  80. package/dist/style-jrkf.css +1 -1
  81. package/dist/style-jrkf.scss +34 -34
  82. package/dist/style.css +1 -1
  83. package/dist/style.scss +44 -44
  84. package/dist/styles/jd-font.scss +2 -2
  85. package/dist/styles/themes/daojia.css +1 -1
  86. package/dist/styles/themes/dark-daojia.css +1 -1
  87. package/dist/styles/themes/dark.css +1 -1
  88. package/dist/styles/themes/default.css +1 -1
  89. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # v3.0.19-cpp.27
2
+
3
+ `2026-04-24`
4
+
5
+ - 🏡 chore: 升级京东正黑字体到 2.3 (#3435)
6
+ - 🏡 chore: 升级 icon 库版本
7
+ - 🚀 feat: 针对小程序环境进行性能优化与 SelectorQuery 作用域适配 (Tabs, CountUp, getRect)
8
+ - ♿️ feat: 全面适配无障碍 (A11y),涉及组件:Image, Dialog, Button, SearchBar, Popup, Tabs, Progress, Avatar, NavBar, ResultPage
9
+ - 📖 docs: 新增组件标准白皮书与 AI 助手相关文档
10
+ - 🐛 fix(avatar): 修复 onClick 条件判断逻辑并支持 Taro 端 alt 属性
11
+ - 🐛 fix(tabs): 修复 useRtl 引用路径并优化无障碍属性
12
+ - 🐛 fix(quickenter): 修复顶部安全区域适配问题
13
+ - 🐛 fix(type): 修复类型导出与 lint 问题
14
+
1
15
  # v3.0.18
2
16
 
3
17
  `2025-08-15`
@@ -9,6 +9,11 @@ export interface BaseLang {
9
9
  edit: string;
10
10
  reset: string;
11
11
  close: string;
12
+ back: string;
13
+ clear: string;
14
+ image: {
15
+ errorTip: string;
16
+ };
12
17
  video: {
13
18
  errorTip: string;
14
19
  clickRetry: string;
@@ -19,6 +19,11 @@ var enUS = {
19
19
  edit: 'Edit',
20
20
  reset: 'Reset',
21
21
  close: 'Close',
22
+ back: 'Back',
23
+ clear: 'Clear',
24
+ image: {
25
+ errorTip: 'Image failed to load'
26
+ },
22
27
  video: {
23
28
  errorTip: 'Error Tip',
24
29
  clickRetry: 'Click Retry'
@@ -19,6 +19,11 @@ var idID = {
19
19
  edit: 'Sunting',
20
20
  reset: 'Mengatur Ulang',
21
21
  close: 'Tutup',
22
+ back: 'Kembali',
23
+ clear: 'Bersihkan',
24
+ image: {
25
+ errorTip: 'Gambar gagal dimuat'
26
+ },
22
27
  video: {
23
28
  errorTip: 'Terjadi Kesalahan',
24
29
  clickRetry: 'Coba Lagi'
@@ -18,6 +18,12 @@ var jaJP = {
18
18
  select: '選択してください',
19
19
  edit: '編集',
20
20
  reset: 'リセット',
21
+ close: '閉じる',
22
+ back: '戻る',
23
+ clear: 'クリア',
24
+ image: {
25
+ errorTip: '画像の読み込みに失敗しました'
26
+ },
21
27
  video: {
22
28
  errorTip: '動画の読み込みに失敗しました',
23
29
  clickRetry: 'クリックして再試行'
@@ -165,7 +171,6 @@ var jaJP = {
165
171
  errorCanvasTips: '現在の環境はCanvasをサポートしていません'
166
172
  },
167
173
  mask: 'マスク',
168
- close: '閉じる',
169
174
  quickenter: {
170
175
  title: 'クイックアクセス'
171
176
  }
@@ -19,6 +19,11 @@ var trTR = {
19
19
  edit: 'düzenlemek',
20
20
  reset: 'sıfırlama',
21
21
  close: 'Kapat',
22
+ back: 'Geri',
23
+ clear: 'Temizle',
24
+ image: {
25
+ errorTip: 'Resim yüklenemedi'
26
+ },
22
27
  video: {
23
28
  errorTip: 'Video yüklenemedi',
24
29
  clickRetry: 'Yeniden Tıklayın'
@@ -19,6 +19,11 @@ var zhCN = {
19
19
  edit: '编辑',
20
20
  reset: '重置',
21
21
  close: '关闭',
22
+ back: '返回',
23
+ clear: '清除',
24
+ image: {
25
+ errorTip: '图片加载失败'
26
+ },
22
27
  video: {
23
28
  errorTip: '视频加载失败',
24
29
  clickRetry: '点击重试'
@@ -19,6 +19,11 @@ var zhCN = {
19
19
  edit: '編輯',
20
20
  reset: '重置',
21
21
  close: '關閉',
22
+ back: '返回',
23
+ clear: '清除',
24
+ image: {
25
+ errorTip: '圖片加載失敗'
26
+ },
22
27
  video: {
23
28
  errorTip: '視頻加載失敗',
24
29
  clickRetry: '點擊重試'
@@ -19,6 +19,11 @@ var zhUG = {
19
19
  edit: 'يحرر',
20
20
  reset: 'إعادة ضبط',
21
21
  close: 'تاقاش',
22
+ back: 'قايتىش',
23
+ clear: 'تاقاش',
24
+ image: {
25
+ errorTip: 'رەسىم يۈكلەش مەغلۇپ بولدى'
26
+ },
22
27
  video: {
23
28
  errorTip: 'فىلىمنى قويۇش مەغلۇپ بولدى',
24
29
  clickRetry: 'قايتا سىناش'
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import { AddressRef, TaroAddressProps } from "../../types";
3
- export declare const Address: React.ForwardRefExoticComponent<Partial<TaroAddressProps> & Omit<React.HTMLAttributes<HTMLDivElement>, "defaultValue" | "onChange" | "onClick" | "title" | "onLoad"> & React.RefAttributes<AddressRef>>;
3
+ export declare const Address: React.ForwardRefExoticComponent<Partial<TaroAddressProps> & Omit<React.HTMLAttributes<HTMLDivElement>, "defaultValue" | "onChange" | "title" | "onClick" | "onLoad"> & React.RefAttributes<AddressRef>>;
@@ -59,7 +59,9 @@ var CountUp = function CountUp(props) {
59
59
  var isLoaded = (0, _react.useRef)(false);
60
60
  var setNumberTransform = (0, _react.useCallback)(function() {
61
61
  if (countupRef.current && numberArr.length) {
62
- (0, _taro.createSelectorQuery)().selectAll('.nut-countup-listitem').node(function(numberItems) {
62
+ var _countupRef_current;
63
+ (0, _taro.createSelectorQuery)() // @ts-ignore
64
+ .in(((_countupRef_current = countupRef.current) === null || _countupRef_current === void 0 ? void 0 : _countupRef_current._scope) || countupRef.current).selectAll('.nut-countup-listitem').node(function(numberItems) {
63
65
  var transformArrCache = [];
64
66
  Object.keys(numberItems).forEach(function(key) {
65
67
  var elem = numberItems[Number(key)];
@@ -13,6 +13,7 @@ var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcar
13
13
  var _define_property = require("@swc/helpers/_/_define_property");
14
14
  var _object_spread = require("@swc/helpers/_/_object_spread");
15
15
  var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
16
+ var _object_without_properties = require("@swc/helpers/_/_object_without_properties");
16
17
  var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
17
18
  var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
18
19
  var _components = require("@tarojs/components");
@@ -37,7 +38,23 @@ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typing
37
38
  });
38
39
  var classPrefix = "nut-avatar";
39
40
  var Avatar = function Avatar(props) {
40
- var _$_object_spread = (0, _object_spread._)({}, defaultProps, props), children = _$_object_spread.children, size = _$_object_spread.size, shape = _$_object_spread.shape, background = _$_object_spread.background, color = _$_object_spread.color, src = _$_object_spread.src, icon = _$_object_spread.icon, mode = _$_object_spread.mode, fit = _$_object_spread.fit, avatarIndex = _$_object_spread.avatarIndex, className = _$_object_spread.className, style = _$_object_spread.style, onClick = _$_object_spread.onClick, onError = _$_object_spread.onError;
41
+ var _ref = (0, _object_spread._)({}, defaultProps, props), children = _ref.children, size = _ref.size, shape = _ref.shape, background = _ref.background, color = _ref.color, src = _ref.src, alt = _ref.alt, icon = _ref.icon, mode = _ref.mode, fit = _ref.fit, avatarIndex = _ref.avatarIndex, className = _ref.className, style = _ref.style, onClick = _ref.onClick, onError = _ref.onError, rest = (0, _object_without_properties._)(_ref, [
42
+ "children",
43
+ "size",
44
+ "shape",
45
+ "background",
46
+ "color",
47
+ "src",
48
+ "alt",
49
+ "icon",
50
+ "mode",
51
+ "fit",
52
+ "avatarIndex",
53
+ "className",
54
+ "style",
55
+ "onClick",
56
+ "onError"
57
+ ]);
41
58
  var _useState // 是否显示的最大头像个数
42
59
  = (0, _sliced_to_array._)((0, _react.useState)(false), 2), showMax = _useState[0], setShowMax = _useState[1];
43
60
  var avatarRef = (0, _react.useRef)(null);
@@ -74,7 +91,8 @@ var Avatar = function Avatar(props) {
74
91
  }
75
92
  }, [
76
93
  avatarIndex,
77
- groupCount
94
+ groupCount,
95
+ groupMax
78
96
  ]);
79
97
  var errorEvent = function errorEvent() {
80
98
  onError && onError();
@@ -82,19 +100,26 @@ var Avatar = function Avatar(props) {
82
100
  var clickAvatar = function clickAvatar(e) {
83
101
  onClick && onClick(e);
84
102
  };
85
- return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, (showMax || !groupMax || avatarIndex <= groupMax) && /*#__PURE__*/ _react.default.createElement(_components.View, {
103
+ return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, (showMax || !groupMax || avatarIndex <= groupMax) && /*#__PURE__*/ _react.default.createElement(_components.View, (0, _object_spread._)({
86
104
  className: cls,
87
105
  style: !showMax ? styles : maxStyles,
88
106
  onClick: clickAvatar,
89
- ref: avatarRef
90
- }, (!groupMax || avatarIndex <= groupMax) && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, src && /*#__PURE__*/ _react.default.createElement(_components.Image, {
107
+ ref: avatarRef,
108
+ // @ts-ignore
109
+ ariaRole: onClick ? 'button' : undefined
110
+ }, rest), (!groupMax || avatarIndex <= groupMax) && /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, src && /*#__PURE__*/ _react.default.createElement(_components.Image, {
91
111
  className: "nut-avatar-img nut-avatar-".concat(groupSize || size || 'normal', "-img"),
92
112
  src: src,
113
+ nativeProps: {
114
+ alt: alt
115
+ },
93
116
  style: {
94
117
  objectFit: fit
95
118
  },
96
119
  mode: mode,
97
- onError: errorEvent
120
+ onError: errorEvent,
121
+ // @ts-ignore
122
+ ariaHidden: true
98
123
  }), /*#__PURE__*/ _react.default.isValidElement(icon) ? /*#__PURE__*/ _react.default.createElement(_components.View, {
99
124
  className: "nut-avatar-text"
100
125
  }, /*#__PURE__*/ _react.default.cloneElement(icon, (0, _object_spread_props._)((0, _object_spread._)({}, icon.props), {
@@ -108,6 +133,7 @@ var Avatar = function Avatar(props) {
108
133
  }, children), !src && !icon && !children && /*#__PURE__*/ _react.default.createElement(_components.View, {
109
134
  className: "nut-avatar-text"
110
135
  }, /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.User, {
136
+ ariaHidden: true,
111
137
  style: {
112
138
  color: color
113
139
  },
@@ -14,6 +14,7 @@ var _async_to_generator = require("@swc/helpers/_/_async_to_generator");
14
14
  var _define_property = require("@swc/helpers/_/_define_property");
15
15
  var _object_spread = require("@swc/helpers/_/_object_spread");
16
16
  var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
17
+ var _object_without_properties = require("@swc/helpers/_/_object_without_properties");
17
18
  var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
18
19
  var _type_of = require("@swc/helpers/_/_type_of");
19
20
  var _ts_generator = require("@swc/helpers/_/_ts_generator");
@@ -53,7 +54,19 @@ var Badge = function Badge(props) {
53
54
  };
54
55
  var _this;
55
56
  var rtl = (0, _index.useRtl)();
56
- var _$_object_spread = (0, _object_spread._)({}, defaultProps, props), className = _$_object_spread.className, style = _$_object_spread.style, value = _$_object_spread.value, max = _$_object_spread.max, children = _$_object_spread.children, dot = _$_object_spread.dot, top = _$_object_spread.top, right = _$_object_spread.right, fill = _$_object_spread.fill, size = _$_object_spread.size, disabled = _$_object_spread.disabled;
57
+ var _ref = (0, _object_spread._)({}, defaultProps, props), className = _ref.className, style = _ref.style, value = _ref.value, max = _ref.max, children = _ref.children, dot = _ref.dot, top = _ref.top, right = _ref.right, fill = _ref.fill, size = _ref.size, disabled = _ref.disabled, rest = (0, _object_without_properties._)(_ref, [
58
+ "className",
59
+ "style",
60
+ "value",
61
+ "max",
62
+ "children",
63
+ "dot",
64
+ "top",
65
+ "right",
66
+ "fill",
67
+ "size",
68
+ "disabled"
69
+ ]);
57
70
  var classPrefix = 'nut-badge';
58
71
  var isHarmony = (0, _platform.harmony)();
59
72
  var classes = (0, _classnames.default)(classPrefix, className);
@@ -81,11 +94,11 @@ var Badge = function Badge(props) {
81
94
  })();
82
95
  };
83
96
  var _obj1;
84
- return /*#__PURE__*/ _react.default.createElement(_components.View, {
97
+ return /*#__PURE__*/ _react.default.createElement(_components.View, (0, _object_spread._)({
85
98
  className: classes,
86
99
  style: style,
87
100
  ref: badgeRef
88
- }, isIcon() && /*#__PURE__*/ _react.default.createElement(_components.View, {
101
+ }, rest), isIcon() && /*#__PURE__*/ _react.default.createElement(_components.View, {
89
102
  className: (0, _classnames.default)("".concat(classPrefix, "-content"), (_obj1 = {}, (0, _define_property._)(_obj1, "".concat(classPrefix, "-icon"), true), (0, _define_property._)(_obj1, "".concat(classPrefix, "-icon-rtl"), rtl), _obj1)),
90
103
  style: contentStyle
91
104
  }, value), children, !isIcon() && (getContent() || dot) && /*#__PURE__*/ _react.default.createElement(_components.View, {
@@ -1,22 +1,3 @@
1
1
  import React from 'react';
2
- import type { MouseEvent } from 'react';
3
- import { BasicComponent } from "../../utils/typings";
4
- export type ButtonType = 'default' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
5
- export type ButtonSize = 'xlarge' | 'large' | 'normal' | 'small' | 'mini';
6
- export type ButtonShape = 'square' | 'round';
7
- export type ButtonFill = 'solid' | 'outline' | 'dashed' | 'none';
8
- export interface ButtonProps extends BasicComponent {
9
- color: string;
10
- shape: ButtonShape;
11
- type: ButtonType;
12
- size: ButtonSize;
13
- fill: ButtonFill;
14
- block: boolean;
15
- loading: boolean;
16
- disabled: boolean;
17
- icon: React.ReactNode;
18
- rightIcon: React.ReactNode;
19
- nativeType: 'submit' | 'reset';
20
- onClick: (e: MouseEvent<HTMLButtonElement>) => void;
21
- }
22
- export declare const Button: React.ForwardRefExoticComponent<Partial<ButtonProps> & React.RefAttributes<HTMLButtonElement>>;
2
+ import { TaroButtonProps } from "../../types";
3
+ export declare const Button: React.ForwardRefExoticComponent<Omit<Partial<TaroButtonProps>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
@@ -105,9 +105,7 @@ var Button = /*#__PURE__*/ _react.default.forwardRef(function(props, ref) {
105
105
  // if (getEnv() === 'WEB') {
106
106
  // ;(rest as any).type = formType
107
107
  // }
108
- return(// eslint-disable-next-line @typescript-eslint/ban-ts-comment
109
- // @ts-ignore
110
- // eslint-disable-next-line react/button-has-type
108
+ return(// @ts-ignore
111
109
  // <TaroButton
112
110
  /*#__PURE__*/ /*#__PURE__*/ _react.default.createElement(_components.View, (0, _object_spread_props._)((0, _object_spread._)({}, rest), {
113
111
  ref: ref,
@@ -120,6 +118,7 @@ var Button = /*#__PURE__*/ _react.default.forwardRef(function(props, ref) {
120
118
  }), /*#__PURE__*/ _react.default.createElement(_components.View, {
121
119
  className: "nut-button-wrap"
122
120
  }, loading && /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.Loading, {
121
+ ariaHidden: true,
123
122
  className: "nut-icon-loading"
124
123
  }), !loading && icon, children && /*#__PURE__*/ _react.default.createElement(_components.View, {
125
124
  className: "nut-button-children nut-button-".concat(size, "-children nut-button-").concat(type, "-children ").concat(!(props.fill || disabled || loading) ? '' : "nut-button-".concat(type).concat(props.fill ? "-".concat(fill) : '').concat(disabled || loading ? '-disabled' : '')).concat(icon || loading ? " nut-button-text" : '').concat(rightIcon ? ' nut-button-text-right' : ''),
@@ -1,3 +1,2 @@
1
1
  import { Button } from "./button";
2
- export type { ButtonType, ButtonProps, ButtonSize, ButtonShape, ButtonFill, } from "./button";
3
2
  export default Button;
@@ -203,7 +203,11 @@ var BaseDialog = function BaseDialog(props) {
203
203
  };
204
204
  var _obj;
205
205
  var closeClasses = (0, _classnames.default)((_obj = {}, (0, _define_property._)(_obj, "".concat(classPrefix, "-close"), true), (0, _define_property._)(_obj, "".concat(classPrefix, "-close-").concat(closeIconPosition), true), _obj));
206
- var systomIcon = closeIconPosition !== 'bottom' ? /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.Close, null) : /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.Failure, null);
206
+ var systemIcon = closeIconPosition !== 'bottom' ? /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.Close, {
207
+ ariaHidden: true
208
+ }) : /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.Failure, {
209
+ ariaHidden: true
210
+ });
207
211
  return /*#__PURE__*/ _react.default.createElement(_components.View, {
208
212
  className: closeClasses,
209
213
  onClick: handleClose,
@@ -211,7 +215,7 @@ var BaseDialog = function BaseDialog(props) {
211
215
  ariaLabel: locale.close,
212
216
  // @ts-ignore
213
217
  tabIndex: 0
214
- }, /*#__PURE__*/ _react.default.isValidElement(closeIcon) ? closeIcon : systomIcon);
218
+ }, /*#__PURE__*/ _react.default.isValidElement(closeIcon) ? closeIcon : systemIcon);
215
219
  };
216
220
  var onHandleClickOverlay = function onHandleClickOverlay(e) {
217
221
  if (closeOnOverlayClick && visible && e.target === e.currentTarget) {
@@ -17,7 +17,7 @@ var _react = /*#__PURE__*/ _interop_require_default._(require("react"));
17
17
  var _classnames = /*#__PURE__*/ _interop_require_default._(require("classnames"));
18
18
  var _components = require("@tarojs/components");
19
19
  var _typings = require("../../utils/typings");
20
- var _configprovider = require("../configprovider/configprovider");
20
+ var _index = require("../configprovider/index");
21
21
  var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
22
22
  contentPosition: 'center',
23
23
  direction: 'horizontal'
@@ -31,7 +31,7 @@ var Divider = function Divider(props) {
31
31
  "className",
32
32
  "direction"
33
33
  ]);
34
- var rtl = (0, _configprovider.useRtl)();
34
+ var rtl = (0, _index.useRtl)();
35
35
  var _obj, _obj1;
36
36
  var classes = direction === 'horizontal' ? (0, _classnames.default)((_obj = {}, (0, _define_property._)(_obj, "".concat(classPrefix), true), (0, _define_property._)(_obj, "".concat(classPrefix, "-center"), children), (0, _define_property._)(_obj, "".concat(classPrefix, "-left"), contentPosition === 'left'), (0, _define_property._)(_obj, "".concat(classPrefix, "-right"), contentPosition === 'right'), (0, _define_property._)(_obj, "".concat(classPrefix, "-rtl"), ([
37
37
  'left',
@@ -1,11 +1,11 @@
1
1
  import React, { FunctionComponent, ReactNode } from 'react';
2
2
  import { BasicComponent } from "../../utils/typings";
3
- import { ButtonFill, ButtonSize, ButtonType } from "../button/button";
3
+ import { UIFill, UISize, UIType } from "../../types/base/atoms";
4
4
  export interface EmptyAction {
5
5
  text: React.ReactNode;
6
- type?: ButtonType;
7
- size?: ButtonSize;
8
- fill?: ButtonFill;
6
+ type?: UIType;
7
+ size?: UISize;
8
+ fill?: UIFill;
9
9
  disabled?: boolean;
10
10
  onClick?: () => () => void;
11
11
  }
@@ -21,6 +21,7 @@ var _components = require("@tarojs/components");
21
21
  var _iconsreacttaro = require("@nutui/icons-react-taro");
22
22
  var _classnames = /*#__PURE__*/ _interop_require_default._(require("classnames"));
23
23
  var _pxtransform = require("../../utils/taro/px-transform");
24
+ var _index = require("../configprovider/index");
24
25
  var defaultProps = {
25
26
  src: '',
26
27
  error: true,
@@ -42,6 +43,7 @@ var Image = function Image(props) {
42
43
  ]);
43
44
  var _useState = (0, _sliced_to_array._)((0, _react.useState)(true), 2), innerLoading = _useState[0], setInnerLoading = _useState[1];
44
45
  var _useState1 = (0, _sliced_to_array._)((0, _react.useState)(false), 2), isError = _useState1[0], setIsError = _useState1[1];
46
+ var locale = (0, _index.useConfig)().locale;
45
47
  var pxCheck = function pxCheck(value) {
46
48
  return Number.isNaN(Number(value)) ? String(value) : (0, _pxtransform.pxTransform)(+value);
47
49
  };
@@ -74,8 +76,11 @@ var Image = function Image(props) {
74
76
  if (!isError) return null;
75
77
  if (typeof error === 'boolean' && error === true && !innerLoading) {
76
78
  return /*#__PURE__*/ _react.default.createElement(_components.View, {
77
- className: "".concat(classPrefix, "-error")
78
- }, /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.ImageError, null));
79
+ className: "".concat(classPrefix, "-error"),
80
+ ariaLabel: locale.image.errorTip || ''
81
+ }, /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.ImageError, {
82
+ ariaHidden: true
83
+ }));
79
84
  }
80
85
  if (/*#__PURE__*/ _react.default.isValidElement(error) && !innerLoading) {
81
86
  return /*#__PURE__*/ _react.default.createElement(_components.View, {
@@ -86,7 +91,8 @@ var Image = function Image(props) {
86
91
  }, [
87
92
  error,
88
93
  isError,
89
- innerLoading
94
+ innerLoading,
95
+ locale
90
96
  ]);
91
97
  var renderLoading = (0, _react.useCallback)(function() {
92
98
  if (!loading) return null;
@@ -112,6 +118,8 @@ var Image = function Image(props) {
112
118
  className: (0, _classnames.default)("".concat(classPrefix, "-default"), className && "".concat(className, "-image"), (0, _define_property._)({}, "".concat(classPrefix, "-error"), isError)),
113
119
  style: imgStyle,
114
120
  src: src,
121
+ // @ts-ignore
122
+ ariaHidden: isError,
115
123
  onLoad: function onLoad(e) {
116
124
  return handleLoad(e);
117
125
  },
@@ -202,7 +202,9 @@ var Input = /*#__PURE__*/ (0, _react.forwardRef)(function(props, ref) {
202
202
  confirmType: confirmType,
203
203
  onBlur: handleBlur,
204
204
  onFocus: handleFocus,
205
- onInput: handleInput
205
+ onInput: handleInput,
206
+ ariaLabel: props.ariaLabel || // eslint-disable-next-line no-nested-ternary
207
+ (value ? undefined : placeholder === undefined ? locale.placeholder : placeholder)
206
208
  })), /*#__PURE__*/ _react.default.createElement(_components.View, {
207
209
  style: {
208
210
  display: clearable && !readOnly && active && value.length > 0 ? 'flex' : 'none',
@@ -215,8 +217,13 @@ var Input = /*#__PURE__*/ (0, _react.forwardRef)(function(props, ref) {
215
217
  setValue('');
216
218
  onClear === null || onClear === void 0 ? void 0 : onClear('');
217
219
  }
218
- }
219
- }, clearIcon || /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.MaskClose, {
220
+ },
221
+ ariaRole: "button",
222
+ ariaLabel: locale.clear || '清除'
223
+ }, clearIcon ? /*#__PURE__*/ _react.default.cloneElement(clearIcon, {
224
+ ariaHidden: true
225
+ }) : /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.MaskClose, {
226
+ ariaHidden: true,
220
227
  className: "nut-input-clear"
221
228
  })));
222
229
  });
@@ -33,7 +33,7 @@ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typing
33
33
  });
34
34
  var Progress = function Progress(props) {
35
35
  var rtl = (0, _index.useRtl)();
36
- var _ref = (0, _object_spread._)({}, defaultProps, props), className = _ref.className, style = _ref.style, percent = _ref.percent, background = _ref.background, color = _ref.color, strokeWidth = _ref.strokeWidth, showText = _ref.showText, animated = _ref.animated, children = _ref.children, lazy = _ref.lazy, delay = _ref.delay, showInfo = _ref.showInfo, borderRadius = _ref.borderRadius, fontSize = _ref.fontSize, activeColor = _ref.activeColor, backgroundColor = _ref.backgroundColor, active = _ref.active, activeMode = _ref.activeMode, duration = _ref.duration, ariaLabel = _ref.ariaLabel, onActiveEnd = _ref.onActiveEnd, rest = (0, _object_without_properties._)(_ref, [
36
+ var _ref = (0, _object_spread._)({}, defaultProps, props), className = _ref.className, style = _ref.style, percent = _ref.percent, background = _ref.background, color = _ref.color, strokeWidth = _ref.strokeWidth, showText = _ref.showText, animated = _ref.animated, children = _ref.children, lazy = _ref.lazy, delay = _ref.delay, showInfo = _ref.showInfo, borderRadius = _ref.borderRadius, fontSize = _ref.fontSize, activeColor = _ref.activeColor, backgroundColor = _ref.backgroundColor, active = _ref.active, activeMode = _ref.activeMode, duration = _ref.duration, onActiveEnd = _ref.onActiveEnd, rest = (0, _object_without_properties._)(_ref, [
37
37
  "className",
38
38
  "style",
39
39
  "percent",
@@ -53,7 +53,6 @@ var Progress = function Progress(props) {
53
53
  "active",
54
54
  "activeMode",
55
55
  "duration",
56
- "ariaLabel",
57
56
  "onActiveEnd"
58
57
  ]);
59
58
  var classPrefix = 'nut-progress';
@@ -220,8 +219,7 @@ var Progress = function Progress(props) {
220
219
  ref: progressRef,
221
220
  id: selector,
222
221
  className: (0, _classnames.default)(classPrefix, className),
223
- style: style,
224
- "aria-label": ariaLabel
222
+ style: style
225
223
  }, rest), /*#__PURE__*/ _react.default.createElement(_components.View, {
226
224
  className: "".concat(classPrefix, "-outer"),
227
225
  style: stylesOuter
@@ -21,18 +21,18 @@ var _taro = /*#__PURE__*/ _interop_require_default._(require("@tarojs/taro"));
21
21
  var _classnames = /*#__PURE__*/ _interop_require_default._(require("classnames"));
22
22
  var _iconsreacttaro = require("@nutui/icons-react-taro");
23
23
  var _index = /*#__PURE__*/ _interop_require_default._(require("../popup/index"));
24
- var _index1 = /*#__PURE__*/ _interop_require_default._(require("../safearea/index"));
25
24
  var _typings = require("../../utils/typings");
26
25
  var _usepropsvalue = require("../../hooks/use-props-value");
27
- var _index2 = /*#__PURE__*/ _interop_require_default._(require("../badge/index"));
26
+ var _index1 = /*#__PURE__*/ _interop_require_default._(require("../badge/index"));
28
27
  var _configprovider = require("../configprovider");
29
28
  var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
30
29
  options: [],
31
30
  visible: false,
32
- closeOnOverlayClick: true
31
+ closeOnOverlayClick: true,
32
+ safeAreaInsetTop: true
33
33
  });
34
34
  var InternalQuickEnter = function InternalQuickEnter(props, ref) {
35
- var _ref = (0, _object_spread._)({}, defaultProps, props), children = _ref.children, visible = _ref.visible, title = _ref.title, _ref_options = _ref.options, options = _ref_options === void 0 ? [] : _ref_options, closeOnOverlayClick = _ref.closeOnOverlayClick, _ref_popupProps = _ref.popupProps, popupProps = _ref_popupProps === void 0 ? {} : _ref_popupProps, className = _ref.className, style = _ref.style, onClose = _ref.onClose, onChange = _ref.onChange, closeIcon = _ref.closeIcon, rest = (0, _object_without_properties._)(_ref, [
35
+ var _ref = (0, _object_spread._)({}, defaultProps, props), children = _ref.children, visible = _ref.visible, title = _ref.title, _ref_options = _ref.options, options = _ref_options === void 0 ? [] : _ref_options, closeOnOverlayClick = _ref.closeOnOverlayClick, _ref_popupProps = _ref.popupProps, popupProps = _ref_popupProps === void 0 ? {} : _ref_popupProps, className = _ref.className, style = _ref.style, onClose = _ref.onClose, onChange = _ref.onChange, closeIcon = _ref.closeIcon, safeAreaInsetTop = _ref.safeAreaInsetTop, rest = (0, _object_without_properties._)(_ref, [
36
36
  "children",
37
37
  "visible",
38
38
  "title",
@@ -43,12 +43,15 @@ var InternalQuickEnter = function InternalQuickEnter(props, ref) {
43
43
  "style",
44
44
  "onClose",
45
45
  "onChange",
46
- "closeIcon"
46
+ "closeIcon",
47
+ "safeAreaInsetTop"
47
48
  ]);
48
49
  var locale = (0, _configprovider.useConfig)().locale;
49
50
  var mergedTitle = title || locale.quickenter.title;
50
51
  var classPrefix = 'nut-quickenter';
51
- var classes = (0, _classnames.default)(classPrefix, className);
52
+ var classes = (0, _classnames.default)(classPrefix, className, {
53
+ 'safe-area-top': safeAreaInsetTop
54
+ });
52
55
  var _usePropsValue = (0, _sliced_to_array._)((0, _usepropsvalue.usePropsValue)({
53
56
  value: props.visible,
54
57
  defaultValue: false,
@@ -93,7 +96,9 @@ var InternalQuickEnter = function InternalQuickEnter(props, ref) {
93
96
  e.stopPropagation();
94
97
  onCancelEvent();
95
98
  }
96
- }, closeIcon || /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.Close, null)));
99
+ }, closeIcon || /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.Close, {
100
+ ariaLabel: locale.close
101
+ })));
97
102
  };
98
103
  var renderContent = function renderContent() {
99
104
  return /*#__PURE__*/ _react.default.createElement(_components.View, {
@@ -101,20 +106,23 @@ var InternalQuickEnter = function InternalQuickEnter(props, ref) {
101
106
  }, /*#__PURE__*/ _react.default.createElement(_components.View, {
102
107
  className: "".concat(classPrefix, "-list")
103
108
  }, options.map(function(item, index) {
104
- var _item_badgeProps;
105
- var _item_badge;
109
+ var _item_badgeProps, _item_badgeProps1;
110
+ var _item_badge, _item_badge1;
106
111
  return /*#__PURE__*/ _react.default.createElement(_components.View, {
107
112
  key: index,
108
113
  className: "".concat(classPrefix, "-item"),
114
+ ariaLabel: "".concat(item.title, " ").concat((_item_badge = item.badge) !== null && _item_badge !== void 0 ? _item_badge : (_item_badgeProps = item.badgeProps) === null || _item_badgeProps === void 0 ? void 0 : _item_badgeProps.value),
109
115
  onClick: function onClick() {
110
116
  return handleItemClick(item, index);
111
117
  }
112
118
  }, /*#__PURE__*/ _react.default.createElement(_components.View, {
113
- className: "".concat(classPrefix, "-item-icon")
114
- }, /*#__PURE__*/ _react.default.createElement(_index2.default, (0, _object_spread_props._)((0, _object_spread._)({}, item.badgeProps), {
115
- value: (_item_badge = item.badge) !== null && _item_badge !== void 0 ? _item_badge : (_item_badgeProps = item.badgeProps) === null || _item_badgeProps === void 0 ? void 0 : _item_badgeProps.value
119
+ className: "".concat(classPrefix, "-item-icon"),
120
+ ariaHidden: true
121
+ }, /*#__PURE__*/ _react.default.createElement(_index1.default, (0, _object_spread_props._)((0, _object_spread._)({}, item.badgeProps), {
122
+ value: (_item_badge1 = item.badge) !== null && _item_badge1 !== void 0 ? _item_badge1 : (_item_badgeProps1 = item.badgeProps) === null || _item_badgeProps1 === void 0 ? void 0 : _item_badgeProps1.value
116
123
  }), item.icon)), /*#__PURE__*/ _react.default.createElement(_components.View, {
117
- className: "".concat(classPrefix, "-item-title")
124
+ className: "".concat(classPrefix, "-item-title"),
125
+ ariaHidden: true
118
126
  }, item.title));
119
127
  })));
120
128
  };
@@ -139,8 +147,6 @@ var InternalQuickEnter = function InternalQuickEnter(props, ref) {
139
147
  onCancelEvent();
140
148
  },
141
149
  onClose: onCancelEvent
142
- }), /*#__PURE__*/ _react.default.createElement(_index1.default, {
143
- position: "top"
144
150
  }), renderQuickEnterElement()));
145
151
  };
146
152
  var QuickEnter = /*#__PURE__*/ _react.default.forwardRef(InternalQuickEnter);
@@ -1,6 +1,7 @@
1
1
  .nut-quickenter {
2
2
  width: 100%;
3
- max-height: $quickenter-max-height; // Limit height for scrolling
3
+ /* 限制弹层最大高度,包含安全区 */
4
+ max-height: calc(#{$quickenter-max-height} + env(safe-area-inset-top, 0));
4
5
  background: $quickenter-bg-color;
5
6
  border-radius: 0 0 12px 12px;
6
7
  overflow: hidden;
@@ -10,6 +11,13 @@
10
11
  box-shadow: $quickenter-box-shadow;
11
12
  // backdrop-filter: $quickenter-backdrop-filter;
12
13
 
14
+ &.safe-area-top {
15
+ /* 使用 env fallback,确保旧浏览器返回 0 */
16
+ padding-top: calc(
17
+ env(safe-area-inset-top, 0) * var(--nutui-safe-area-multiple, 1)
18
+ );
19
+ }
20
+
13
21
  &-control {
14
22
  display: flex;
15
23
  align-items: center;
@@ -44,7 +52,7 @@
44
52
  &-content {
45
53
  flex: 1;
46
54
  padding: 10px 28px;
47
- overflow-y: hidden; // Default: no scrolling
55
+ overflow-y: hidden; // 始终可滚动,防止内容被遮挡
48
56
  box-sizing: border-box;
49
57
 
50
58
  &-scrollable {
@@ -1,10 +1,12 @@
1
+ @charset "UTF-8";
1
2
  /* #ifdef harmony */
2
3
  /* #endif */
3
4
  /* #ifndef harmony */
4
5
  /* #endif */
5
6
  .nut-quickenter {
6
7
  width: 100%;
7
- max-height: var(--nutui-quickenter-max-height, 256px);
8
+ /* 限制弹层最大高度,包含安全区 */
9
+ max-height: calc(var(--nutui-quickenter-max-height, 256px) + env(safe-area-inset-top, 0));
8
10
  background: var(--nutui-quickenter-bg-color, #f5f5f5);
9
11
  border-radius: 0 0 12px 12px;
10
12
  overflow: hidden;
@@ -13,6 +15,10 @@
13
15
  flex-direction: column;
14
16
  box-shadow: var(--nutui-quickenter-box-shadow, 0px 8px 16px rgba(141, 153, 167, 0.2), 0px -0.5px 0px rgba(0, 0, 0, 0.05) inset);
15
17
  }
18
+ .nut-quickenter.safe-area-top {
19
+ /* 使用 env fallback,确保旧浏览器返回 0 */
20
+ padding-top: calc(env(safe-area-inset-top, 0) * var(--nutui-safe-area-multiple, 1));
21
+ }
16
22
  .nut-quickenter-control {
17
23
  display: flex;
18
24
  align-items: center;