@nutui/nutui-react-taro 3.0.19-cpp.28-beta.1 → 3.0.19-cpp.28
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 +7 -0
- package/dist/cjs/packages/price/price.js +14 -3
- package/dist/cjs/utils/should-render-price-raw.d.ts +1 -0
- package/dist/cjs/utils/should-render-price-raw.js +34 -0
- package/dist/es/packages/price/price.js +14 -3
- package/dist/es/utils/should-render-price-raw.d.ts +1 -0
- package/dist/es/utils/should-render-price-raw.js +24 -0
- package/dist/nutui.react.umd.js +37 -3
- package/dist/style-jmapp.css +1 -1
- package/dist/style-jmapp.scss +40 -40
- package/dist/style-jrkf.css +1 -1
- package/dist/style-jrkf.scss +37 -37
- package/dist/style.css +1 -1
- package/dist/style.scss +31 -31
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# v3.0.19-cpp.28
|
|
2
|
+
|
|
3
|
+
`2026-04-27`
|
|
4
|
+
|
|
5
|
+
- 🚀 feat(price): 组件增加原样渲染的兜底逻辑,支持输入内容包含无价格或多个价格时直接原样返回 (#3440)
|
|
6
|
+
- ♿️ feat(calendarcard): 补充无障碍支持 (A11y),增加 `dayAriaLabel` 多语言配置,开放 `renderDayAriaLabel` 以及在 Web 端支持了 `weekdays` 属性自定义星期的表头
|
|
7
|
+
|
|
1
8
|
# v3.0.19-cpp.27
|
|
2
9
|
|
|
3
10
|
`2026-04-24`
|
|
@@ -20,6 +20,7 @@ var _typings = require("../../utils/typings");
|
|
|
20
20
|
var _index = require("../configprovider/index");
|
|
21
21
|
var _types = require("../../types");
|
|
22
22
|
var _platform = require("../../utils/taro/platform");
|
|
23
|
+
var _shouldrenderpriceraw = require("../../utils/should-render-price-raw");
|
|
23
24
|
var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
|
|
24
25
|
color: 'primary',
|
|
25
26
|
price: 0,
|
|
@@ -34,10 +35,17 @@ var Price = function Price(props) {
|
|
|
34
35
|
var _$_object_spread = (0, _object_spread._)({}, defaultProps, props), color = _$_object_spread.color, originalPrice = _$_object_spread.price, symbol = _$_object_spread.symbol, digits = _$_object_spread.digits, thousands = _$_object_spread.thousands, position = _$_object_spread.position, size = _$_object_spread.size, line = _$_object_spread.line, className = _$_object_spread.className, style = _$_object_spread.style;
|
|
35
36
|
var classPrefix = 'nut-price';
|
|
36
37
|
var rtl = (0, _index.useRtl)();
|
|
38
|
+
var isRenderPriceRaw = (0, _react.useMemo)(function() {
|
|
39
|
+
return typeof originalPrice === 'string' && (0, _shouldrenderpriceraw.shouldRenderPriceAsRaw)(originalPrice);
|
|
40
|
+
}, [
|
|
41
|
+
originalPrice
|
|
42
|
+
]);
|
|
37
43
|
var price = (0, _react.useMemo)(function() {
|
|
44
|
+
if (isRenderPriceRaw) return '';
|
|
38
45
|
return originalPrice.toString().replace(/[^\d.]/g, '');
|
|
39
46
|
}, [
|
|
40
|
-
originalPrice
|
|
47
|
+
originalPrice,
|
|
48
|
+
isRenderPriceRaw
|
|
41
49
|
]);
|
|
42
50
|
var isCustomPriceColor = (0, _react.useMemo)(function() {
|
|
43
51
|
var specificPriceColor = Object.values(_types.PriceColorEnum);
|
|
@@ -118,12 +126,15 @@ var Price = function Price(props) {
|
|
|
118
126
|
style: priceColorStyle
|
|
119
127
|
}, formatDecimal(price))) : null, symbol && position === 'after' ? renderSymbol() : null);
|
|
120
128
|
};
|
|
129
|
+
var renderRawContent = function renderRawContent() {
|
|
130
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, originalPrice);
|
|
131
|
+
};
|
|
121
132
|
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, (0, _platform.harmony)() || process.env.TARO_ENV === 'dynamic' ? /*#__PURE__*/ _react.default.createElement(_components.Text, {
|
|
122
133
|
className: "".concat(classPrefix, " ").concat(classPrefix, "-").concat(color, " ").concat(className),
|
|
123
134
|
style: style
|
|
124
|
-
}, renderInner()) : /*#__PURE__*/ _react.default.createElement(_components.View, {
|
|
135
|
+
}, isRenderPriceRaw ? renderRawContent() : renderInner()) : /*#__PURE__*/ _react.default.createElement(_components.View, {
|
|
125
136
|
className: "".concat(classPrefix, " ").concat(classPrefix, "-").concat(color, " ").concat(className),
|
|
126
137
|
style: style
|
|
127
|
-
}, renderInner()));
|
|
138
|
+
}, isRenderPriceRaw ? renderRawContent() : renderInner()));
|
|
128
139
|
};
|
|
129
140
|
Price.displayName = 'NutPrice';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function shouldRenderPriceAsRaw(s: string): boolean;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "shouldRenderPriceAsRaw", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return shouldRenderPriceAsRaw;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var CJK = /[\u4E00-\u9FFF]/;
|
|
12
|
+
var RE_NUM = /\d+(?:\.\d+)?/g;
|
|
13
|
+
function hasNoExtractablePrice(s) {
|
|
14
|
+
var t = s.trim();
|
|
15
|
+
if (!t) return true;
|
|
16
|
+
if (!/\d/.test(t)) return true;
|
|
17
|
+
if (t.replace(/[^\d.]/g, '') === '') return true;
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
function shouldRenderPriceAsRaw(s) {
|
|
21
|
+
if (hasNoExtractablePrice(s)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
var t = s.trim();
|
|
25
|
+
if (!CJK.test(t)) return false;
|
|
26
|
+
var matches = Array.from(t.matchAll(RE_NUM));
|
|
27
|
+
if (matches.length < 2) return false;
|
|
28
|
+
var a = matches[0];
|
|
29
|
+
var b = matches[1];
|
|
30
|
+
var i0 = a.index;
|
|
31
|
+
var i1 = b.index;
|
|
32
|
+
var between = t.slice(i0 + a[0].length, i1);
|
|
33
|
+
return CJK.test(between);
|
|
34
|
+
}
|
|
@@ -8,6 +8,7 @@ import { ComponentDefaults } from "../../utils/typings";
|
|
|
8
8
|
import { useRtl } from "../configprovider/index";
|
|
9
9
|
import { PriceColorEnum } from "../../types";
|
|
10
10
|
import { harmony } from "../../utils/taro/platform";
|
|
11
|
+
import { shouldRenderPriceAsRaw } from "../../utils/should-render-price-raw";
|
|
11
12
|
var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
|
|
12
13
|
color: 'primary',
|
|
13
14
|
price: 0,
|
|
@@ -22,10 +23,17 @@ export var Price = function(props) {
|
|
|
22
23
|
var _$_object_spread = _object_spread({}, defaultProps, props), color = _$_object_spread.color, originalPrice = _$_object_spread.price, symbol = _$_object_spread.symbol, digits = _$_object_spread.digits, thousands = _$_object_spread.thousands, position = _$_object_spread.position, size = _$_object_spread.size, line = _$_object_spread.line, className = _$_object_spread.className, style = _$_object_spread.style;
|
|
23
24
|
var classPrefix = 'nut-price';
|
|
24
25
|
var rtl = useRtl();
|
|
26
|
+
var isRenderPriceRaw = useMemo(function() {
|
|
27
|
+
return typeof originalPrice === 'string' && shouldRenderPriceAsRaw(originalPrice);
|
|
28
|
+
}, [
|
|
29
|
+
originalPrice
|
|
30
|
+
]);
|
|
25
31
|
var price = useMemo(function() {
|
|
32
|
+
if (isRenderPriceRaw) return '';
|
|
26
33
|
return originalPrice.toString().replace(/[^\d.]/g, '');
|
|
27
34
|
}, [
|
|
28
|
-
originalPrice
|
|
35
|
+
originalPrice,
|
|
36
|
+
isRenderPriceRaw
|
|
29
37
|
]);
|
|
30
38
|
var isCustomPriceColor = useMemo(function() {
|
|
31
39
|
var specificPriceColor = Object.values(PriceColorEnum);
|
|
@@ -106,12 +114,15 @@ export var Price = function(props) {
|
|
|
106
114
|
style: priceColorStyle
|
|
107
115
|
}, formatDecimal(price))) : null, symbol && position === 'after' ? renderSymbol() : null);
|
|
108
116
|
};
|
|
117
|
+
var renderRawContent = function() {
|
|
118
|
+
return /*#__PURE__*/ React.createElement(React.Fragment, null, originalPrice);
|
|
119
|
+
};
|
|
109
120
|
return /*#__PURE__*/ React.createElement(React.Fragment, null, harmony() || process.env.TARO_ENV === 'dynamic' ? /*#__PURE__*/ React.createElement(Text, {
|
|
110
121
|
className: "".concat(classPrefix, " ").concat(classPrefix, "-").concat(color, " ").concat(className),
|
|
111
122
|
style: style
|
|
112
|
-
}, renderInner()) : /*#__PURE__*/ React.createElement(View, {
|
|
123
|
+
}, isRenderPriceRaw ? renderRawContent() : renderInner()) : /*#__PURE__*/ React.createElement(View, {
|
|
113
124
|
className: "".concat(classPrefix, " ").concat(classPrefix, "-").concat(color, " ").concat(className),
|
|
114
125
|
style: style
|
|
115
|
-
}, renderInner()));
|
|
126
|
+
}, isRenderPriceRaw ? renderRawContent() : renderInner()));
|
|
116
127
|
};
|
|
117
128
|
Price.displayName = 'NutPrice';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function shouldRenderPriceAsRaw(s: string): boolean;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var CJK = /[\u4E00-\u9FFF]/;
|
|
2
|
+
var RE_NUM = /\d+(?:\.\d+)?/g;
|
|
3
|
+
function hasNoExtractablePrice(s) {
|
|
4
|
+
var t = s.trim();
|
|
5
|
+
if (!t) return true;
|
|
6
|
+
if (!/\d/.test(t)) return true;
|
|
7
|
+
if (t.replace(/[^\d.]/g, '') === '') return true;
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
export function shouldRenderPriceAsRaw(s) {
|
|
11
|
+
if (hasNoExtractablePrice(s)) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
var t = s.trim();
|
|
15
|
+
if (!CJK.test(t)) return false;
|
|
16
|
+
var matches = Array.from(t.matchAll(RE_NUM));
|
|
17
|
+
if (matches.length < 2) return false;
|
|
18
|
+
var a = matches[0];
|
|
19
|
+
var b = matches[1];
|
|
20
|
+
var i0 = a.index;
|
|
21
|
+
var i1 = b.index;
|
|
22
|
+
var between = t.slice(i0 + a[0].length, i1);
|
|
23
|
+
return CJK.test(between);
|
|
24
|
+
}
|
package/dist/nutui.react.umd.js
CHANGED
|
@@ -41095,6 +41095,30 @@
|
|
|
41095
41095
|
return PriceColorEnum2;
|
|
41096
41096
|
}({});
|
|
41097
41097
|
var destroyList = [];
|
|
41098
|
+
var CJK = /[\u4E00-\u9FFF]/;
|
|
41099
|
+
var RE_NUM = /\d+(?:\.\d+)?/g;
|
|
41100
|
+
function hasNoExtractablePrice(s) {
|
|
41101
|
+
var t = s.trim();
|
|
41102
|
+
if (!t) return true;
|
|
41103
|
+
if (!/\d/.test(t)) return true;
|
|
41104
|
+
if (t.replace(/[^\d.]/g, "") === "") return true;
|
|
41105
|
+
return false;
|
|
41106
|
+
}
|
|
41107
|
+
function shouldRenderPriceAsRaw(s) {
|
|
41108
|
+
if (hasNoExtractablePrice(s)) {
|
|
41109
|
+
return true;
|
|
41110
|
+
}
|
|
41111
|
+
var t = s.trim();
|
|
41112
|
+
if (!CJK.test(t)) return false;
|
|
41113
|
+
var matches = Array.from(t.matchAll(RE_NUM));
|
|
41114
|
+
if (matches.length < 2) return false;
|
|
41115
|
+
var a = matches[0];
|
|
41116
|
+
var b = matches[1];
|
|
41117
|
+
var i0 = a.index;
|
|
41118
|
+
var i1 = b.index;
|
|
41119
|
+
var between = t.slice(i0 + a[0].length, i1);
|
|
41120
|
+
return CJK.test(between);
|
|
41121
|
+
}
|
|
41098
41122
|
var defaultProps$g = _object_spread_props(_object_spread({}, ComponentDefaults), {
|
|
41099
41123
|
color: "primary",
|
|
41100
41124
|
price: 0,
|
|
@@ -41109,10 +41133,17 @@
|
|
|
41109
41133
|
var _$_object_spread = _object_spread({}, defaultProps$g, props), color = _$_object_spread.color, originalPrice = _$_object_spread.price, symbol = _$_object_spread.symbol, digits = _$_object_spread.digits, thousands = _$_object_spread.thousands, position2 = _$_object_spread.position, size = _$_object_spread.size, line = _$_object_spread.line, className = _$_object_spread.className, style = _$_object_spread.style;
|
|
41110
41134
|
var classPrefix2 = "nut-price";
|
|
41111
41135
|
var rtl = useRtl();
|
|
41136
|
+
var isRenderPriceRaw = React.useMemo(function() {
|
|
41137
|
+
return typeof originalPrice === "string" && shouldRenderPriceAsRaw(originalPrice);
|
|
41138
|
+
}, [
|
|
41139
|
+
originalPrice
|
|
41140
|
+
]);
|
|
41112
41141
|
var price = React.useMemo(function() {
|
|
41142
|
+
if (isRenderPriceRaw) return "";
|
|
41113
41143
|
return originalPrice.toString().replace(/[^\d.]/g, "");
|
|
41114
41144
|
}, [
|
|
41115
|
-
originalPrice
|
|
41145
|
+
originalPrice,
|
|
41146
|
+
isRenderPriceRaw
|
|
41116
41147
|
]);
|
|
41117
41148
|
var isCustomPriceColor = React.useMemo(function() {
|
|
41118
41149
|
var specificPriceColor = Object.values(PriceColorEnum);
|
|
@@ -41193,13 +41224,16 @@
|
|
|
41193
41224
|
style: priceColorStyle
|
|
41194
41225
|
}, formatDecimal(price))) : null, symbol && position2 === "after" ? renderSymbol() : null);
|
|
41195
41226
|
};
|
|
41227
|
+
var renderRawContent = function() {
|
|
41228
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, originalPrice);
|
|
41229
|
+
};
|
|
41196
41230
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, harmony() || process.env.TARO_ENV === "dynamic" ? /* @__PURE__ */ React.createElement(components.Text, {
|
|
41197
41231
|
className: "".concat(classPrefix2, " ").concat(classPrefix2, "-").concat(color, " ").concat(className),
|
|
41198
41232
|
style
|
|
41199
|
-
}, renderInner()) : /* @__PURE__ */ React.createElement(components.View, {
|
|
41233
|
+
}, isRenderPriceRaw ? renderRawContent() : renderInner()) : /* @__PURE__ */ React.createElement(components.View, {
|
|
41200
41234
|
className: "".concat(classPrefix2, " ").concat(classPrefix2, "-").concat(color, " ").concat(className),
|
|
41201
41235
|
style
|
|
41202
|
-
}, renderInner()));
|
|
41236
|
+
}, isRenderPriceRaw ? renderRawContent() : renderInner()));
|
|
41203
41237
|
};
|
|
41204
41238
|
Price.displayName = "NutPrice";
|
|
41205
41239
|
var defaultProps$f = {
|