@nutui/nutui-react 3.0.10 → 3.0.11
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 +19 -13
- package/dist/cjs/locales/base.d.ts +2 -0
- package/dist/cjs/locales/en-US.js +3 -1
- package/dist/cjs/locales/id-ID.js +3 -1
- package/dist/cjs/locales/tr-TR.js +3 -1
- package/dist/cjs/locales/zh-CN.js +3 -1
- package/dist/cjs/locales/zh-TW.js +3 -1
- package/dist/cjs/locales/zh-UG.js +3 -1
- package/dist/cjs/packages/address/address.js +80 -55
- package/dist/cjs/packages/address/{customRender.d.ts → cascaderRender.d.ts} +1 -1
- package/dist/cjs/packages/address/{customRender.js → cascaderRender.js} +5 -5
- package/dist/cjs/packages/address/elevatorRender.d.ts +14 -0
- package/dist/cjs/packages/address/elevatorRender.js +262 -0
- package/dist/cjs/packages/address/existRender.js +2 -2
- package/dist/cjs/packages/address/style/address.scss +0 -5
- package/dist/cjs/packages/address/style/style.css +0 -4
- package/dist/cjs/packages/address/style-jmapp/address.scss +0 -5
- package/dist/cjs/packages/address/style-jmapp/style.css +0 -4
- package/dist/cjs/packages/address/style-jrkf/address.scss +0 -5
- package/dist/cjs/packages/address/style-jrkf/style.css +0 -4
- package/dist/cjs/packages/address/utils.d.ts +5 -0
- package/dist/cjs/packages/address/utils.js +93 -0
- package/dist/cjs/packages/elevator/elevator.js +2 -1
- package/dist/cjs/packages/elevator/style/css.js +2 -0
- package/dist/cjs/packages/elevator/style/elevator.scss +95 -116
- package/dist/cjs/packages/elevator/style/index.js +2 -0
- package/dist/cjs/packages/elevator/style/style.css +83 -98
- package/dist/cjs/packages/elevator/style-jmapp/css.js +2 -0
- package/dist/cjs/packages/elevator/style-jmapp/elevator.scss +95 -116
- package/dist/cjs/packages/elevator/style-jmapp/index.js +2 -0
- package/dist/cjs/packages/elevator/style-jmapp/style.css +83 -98
- package/dist/cjs/packages/elevator/style-jrkf/css.js +2 -0
- package/dist/cjs/packages/elevator/style-jrkf/elevator.scss +95 -116
- package/dist/cjs/packages/elevator/style-jrkf/index.js +2 -0
- package/dist/cjs/packages/elevator/style-jrkf/style.css +83 -98
- package/dist/cjs/packages/picker/style/picker.scss +0 -1
- package/dist/cjs/packages/picker/style/style.css +0 -1
- package/dist/cjs/packages/picker/style-jmapp/picker.scss +0 -1
- package/dist/cjs/packages/picker/style-jmapp/style.css +0 -1
- package/dist/cjs/packages/picker/style-jrkf/picker.scss +0 -1
- package/dist/cjs/packages/picker/style-jrkf/style.css +0 -1
- package/dist/cjs/types/spec/address/base.d.ts +3 -12
- package/dist/cjs/types/spec/cascader/base.d.ts +1 -0
- package/dist/es/locales/base.d.ts +2 -0
- package/dist/es/locales/en-US.js +3 -1
- package/dist/es/locales/id-ID.js +3 -1
- package/dist/es/locales/tr-TR.js +3 -1
- package/dist/es/locales/zh-CN.js +3 -1
- package/dist/es/locales/zh-TW.js +3 -1
- package/dist/es/locales/zh-UG.js +3 -1
- package/dist/es/packages/address/address.js +81 -56
- package/dist/es/packages/address/{customRender.d.ts → cascaderRender.d.ts} +1 -1
- package/dist/es/packages/address/{customRender.js → cascaderRender.js} +3 -3
- package/dist/es/packages/address/elevatorRender.d.ts +14 -0
- package/dist/es/packages/address/elevatorRender.js +250 -0
- package/dist/es/packages/address/existRender.js +2 -2
- package/dist/es/packages/address/style/address.scss +0 -5
- package/dist/es/packages/address/style/style.css +0 -4
- package/dist/es/packages/address/style-jmapp/address.scss +0 -5
- package/dist/es/packages/address/style-jmapp/style.css +0 -4
- package/dist/es/packages/address/style-jrkf/address.scss +0 -5
- package/dist/es/packages/address/style-jrkf/style.css +0 -4
- package/dist/es/packages/address/utils.d.ts +5 -0
- package/dist/es/packages/address/utils.js +75 -0
- package/dist/es/packages/elevator/elevator.js +2 -1
- package/dist/es/packages/elevator/style/css.js +2 -0
- package/dist/es/packages/elevator/style/elevator.scss +95 -116
- package/dist/es/packages/elevator/style/index.js +2 -0
- package/dist/es/packages/elevator/style/style.css +83 -98
- package/dist/es/packages/elevator/style-jmapp/css.js +2 -0
- package/dist/es/packages/elevator/style-jmapp/elevator.scss +95 -116
- package/dist/es/packages/elevator/style-jmapp/index.js +2 -0
- package/dist/es/packages/elevator/style-jmapp/style.css +83 -98
- package/dist/es/packages/elevator/style-jrkf/css.js +2 -0
- package/dist/es/packages/elevator/style-jrkf/elevator.scss +95 -116
- package/dist/es/packages/elevator/style-jrkf/index.js +2 -0
- package/dist/es/packages/elevator/style-jrkf/style.css +83 -98
- package/dist/es/packages/picker/style/picker.scss +0 -1
- package/dist/es/packages/picker/style/style.css +0 -1
- package/dist/es/packages/picker/style-jmapp/picker.scss +0 -1
- package/dist/es/packages/picker/style-jmapp/style.css +0 -1
- package/dist/es/packages/picker/style-jrkf/picker.scss +0 -1
- package/dist/es/packages/picker/style-jrkf/style.css +0 -1
- package/dist/es/types/spec/address/base.d.ts +7 -13
- package/dist/es/types/spec/cascader/base.d.ts +1 -0
- package/dist/nutui.react.umd.js +463 -127
- package/dist/style-jmapp.css +1 -1
- package/dist/style-jmapp.scss +41 -41
- package/dist/style-jrkf.css +1 -1
- package/dist/style-jrkf.scss +44 -44
- package/dist/style.css +1 -1
- package/dist/style.scss +37 -37
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,19 +1,25 @@
|
|
|
1
|
-
# v3.0.
|
|
2
|
-
`2025-
|
|
1
|
+
# v3.0.11
|
|
2
|
+
`2025-05-09`
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
* 📖 docs: 升级文档补充 (#3204)
|
|
6
|
+
* :sparkles: feat(address): v15 适配 (#3171)
|
|
7
|
+
* :bug: fix: 修复编译单个组件在小程序下路径异常的问题 (#3215)
|
|
8
|
+
* :bug: fix(picker): 解决透传popup的round属性不生效问题 (#3205)
|
|
9
|
+
* zap: perf: optimize the performance issues caused by style injection (#3203)
|
|
3
10
|
|
|
4
11
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* 📖 docs: jmapp 不判断环境,直接打开 (#3193)
|
|
9
|
-
* :sparkles: feat(switch): loading 态受控 (#3149)
|
|
10
|
-
* :sparkles: feat(uploader): add listUploadRender prop for custom list mode upload… (#3198)
|
|
11
|
-
* :sparkles: feat(video): 兼容taro Component属性 (#3185)
|
|
12
|
-
* :sparkles: feat(radio): 支持自定义icon的classname (#3196)
|
|
13
|
-
* :bug: fix(tabs): 修复滚动计算问题,优化定位逻辑 (#3183)
|
|
14
|
-
* :bug: fix: 删掉无用console (#3197)
|
|
15
|
-
* :bug: fix: 兼容选中值为0的情况 (#3192)
|
|
12
|
+
# v3.0.10
|
|
13
|
+
|
|
14
|
+
`2025-04-25`
|
|
16
15
|
|
|
16
|
+
- 📖 docs: jmapp 不判断环境,直接打开 (#3193)
|
|
17
|
+
- :sparkles: feat(switch): loading 态受控 (#3149)
|
|
18
|
+
- :sparkles: feat(uploader): add listUploadRender prop for custom list mode upload… (#3198)
|
|
19
|
+
- :sparkles: feat(video): 兼容taro Component属性 (#3185)
|
|
20
|
+
- :sparkles: feat(radio): 支持自定义icon的classname (#3196)
|
|
21
|
+
- :bug: fix(tabs): 修复滚动计算问题,优化定位逻辑 (#3183)
|
|
22
|
+
- :bug: fix: 兼容选中值为0的情况 (#3192)
|
|
17
23
|
|
|
18
24
|
# v3.0.9
|
|
19
25
|
|
|
@@ -83,7 +83,9 @@ var enUS = {
|
|
|
83
83
|
address: {
|
|
84
84
|
selectRegion: 'Choose Address',
|
|
85
85
|
deliveryTo: 'Delivery To',
|
|
86
|
-
chooseAnotherAddress: 'Choose Another Address'
|
|
86
|
+
chooseAnotherAddress: 'Choose Another Address',
|
|
87
|
+
hotCity: 'Hot City',
|
|
88
|
+
selectProvince: 'Choose Province or City'
|
|
87
89
|
},
|
|
88
90
|
signature: {
|
|
89
91
|
reSign: 'Re Sign',
|
|
@@ -83,7 +83,9 @@ var idID = {
|
|
|
83
83
|
address: {
|
|
84
84
|
selectRegion: 'Pilih Daerah',
|
|
85
85
|
deliveryTo: 'Kirim Ke',
|
|
86
|
-
chooseAnotherAddress: 'Pilih alamat lain'
|
|
86
|
+
chooseAnotherAddress: 'Pilih alamat lain',
|
|
87
|
+
hotCity: 'Kota-kota populer',
|
|
88
|
+
selectProvince: 'Pilih provinsi/wilayah'
|
|
87
89
|
},
|
|
88
90
|
signature: {
|
|
89
91
|
reSign: 'Masuk Kembali',
|
|
@@ -83,7 +83,9 @@ var trTR = {
|
|
|
83
83
|
address: {
|
|
84
84
|
selectRegion: 'Lütfen bölgenizi seçin',
|
|
85
85
|
deliveryTo: 'Teslimat yeri',
|
|
86
|
-
chooseAnotherAddress: 'Başka bir adres seçin'
|
|
86
|
+
chooseAnotherAddress: 'Başka bir adres seçin',
|
|
87
|
+
hotCity: 'Popüler şehirler',
|
|
88
|
+
selectProvince: 'İl/bölge seçin'
|
|
87
89
|
},
|
|
88
90
|
signature: {
|
|
89
91
|
reSign: 'Yeniden imzala',
|
|
@@ -83,7 +83,9 @@ var zhUG = {
|
|
|
83
83
|
address: {
|
|
84
84
|
selectRegion: 'ئادىرىسنى تاللاڭ',
|
|
85
85
|
deliveryTo: 'قەيەرگە',
|
|
86
|
-
chooseAnotherAddress: 'باشقىنى تاللاش'
|
|
86
|
+
chooseAnotherAddress: 'باشقىنى تاللاش',
|
|
87
|
+
hotCity: 'ئاۋات شەھەرلەر',
|
|
88
|
+
selectProvince: 'ئۆلكە / شەھەرنى تاللاڭ'
|
|
87
89
|
},
|
|
88
90
|
signature: {
|
|
89
91
|
reSign: 'قايتا',
|
|
@@ -25,14 +25,16 @@ var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
|
|
|
25
25
|
var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
26
26
|
var _iconsreact = require("@nutui/icons-react");
|
|
27
27
|
var _popup = /*#__PURE__*/ _interop_require_default._(require("../popup"));
|
|
28
|
-
var
|
|
28
|
+
var _cascaderRender = require("./cascaderRender");
|
|
29
|
+
var _elevatorRender = require("./elevatorRender");
|
|
29
30
|
var _existRender = require("./existRender");
|
|
30
31
|
var _configprovider = require("../configprovider");
|
|
31
32
|
var _typings = require("../../utils/typings");
|
|
32
33
|
var _usepropsvalue = require("../../hooks/use-props-value");
|
|
34
|
+
var _mergeprops = require("../../utils/merge-props");
|
|
33
35
|
var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
|
|
34
36
|
defaultValue: [],
|
|
35
|
-
type: '
|
|
37
|
+
type: 'cascader',
|
|
36
38
|
options: [],
|
|
37
39
|
optionKey: {
|
|
38
40
|
textKey: 'text',
|
|
@@ -42,6 +44,7 @@ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typing
|
|
|
42
44
|
format: {},
|
|
43
45
|
custom: false,
|
|
44
46
|
existList: [],
|
|
47
|
+
hotList: [],
|
|
45
48
|
height: '200px',
|
|
46
49
|
defaultIcon: null,
|
|
47
50
|
selectIcon: null,
|
|
@@ -50,7 +53,7 @@ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typing
|
|
|
50
53
|
});
|
|
51
54
|
var InternalAddress = function InternalAddress(props, ref) {
|
|
52
55
|
var locale = (0, _configprovider.useConfig)().locale;
|
|
53
|
-
var
|
|
56
|
+
var _mergeProps = (0, _mergeprops.mergeProps)(defaultProps, props), style = _mergeProps.style, className = _mergeProps.className, visible = _mergeProps.visible, defaultVisible = _mergeProps.defaultVisible, defaultValue = _mergeProps.defaultValue, children = _mergeProps.children, type = _mergeProps.type, options = _mergeProps.options, optionKey = _mergeProps.optionKey, format = _mergeProps.format, height = _mergeProps.height, title = _mergeProps.title, existList = _mergeProps.existList, custom = _mergeProps.custom, selectIcon = _mergeProps.selectIcon, defaultIcon = _mergeProps.defaultIcon, closeIcon = _mergeProps.closeIcon, backIcon = _mergeProps.backIcon, hotList = _mergeProps.hotList, onChange = _mergeProps.onChange, onExistSelect = _mergeProps.onExistSelect, onClose = _mergeProps.onClose, onSwitch = _mergeProps.onSwitch, rest = (0, _object_without_properties._)(_mergeProps, [
|
|
54
57
|
"style",
|
|
55
58
|
"className",
|
|
56
59
|
"visible",
|
|
@@ -69,6 +72,7 @@ var InternalAddress = function InternalAddress(props, ref) {
|
|
|
69
72
|
"defaultIcon",
|
|
70
73
|
"closeIcon",
|
|
71
74
|
"backIcon",
|
|
75
|
+
"hotList",
|
|
72
76
|
"onChange",
|
|
73
77
|
"onExistSelect",
|
|
74
78
|
"onClose",
|
|
@@ -95,67 +99,88 @@ var InternalAddress = function InternalAddress(props, ref) {
|
|
|
95
99
|
setInnerVisible(false);
|
|
96
100
|
onClose && onClose();
|
|
97
101
|
};
|
|
98
|
-
var
|
|
99
|
-
if (custom)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
return null;
|
|
102
|
+
var renderLeftOnCascaderSwitch = function renderLeftOnCascaderSwitch() {
|
|
103
|
+
if (!custom) return null;
|
|
104
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
105
|
+
className: "".concat(classPrefix, "-left-icon"),
|
|
106
|
+
onClick: onSwitchModule
|
|
107
|
+
}, /*#__PURE__*/ _react.default.isValidElement(backIcon) ? backIcon : /*#__PURE__*/ _react.default.createElement(_iconsreact.ArrowLeft, {
|
|
108
|
+
color: "#cccccc"
|
|
109
|
+
}));
|
|
108
110
|
};
|
|
109
111
|
var selectedExistItem = function selectedExistItem(data) {
|
|
110
112
|
onExistSelect && onExistSelect(data);
|
|
111
113
|
handleClose();
|
|
112
114
|
};
|
|
113
115
|
var onSwitchModule = function onSwitchModule() {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
} else {
|
|
117
|
-
setCurrentType('exist');
|
|
118
|
-
}
|
|
116
|
+
var nextType = currentType === 'exist' ? 'cascader' : 'exist';
|
|
117
|
+
setCurrentType(nextType);
|
|
119
118
|
onSwitch && onSwitch({
|
|
120
|
-
type:
|
|
119
|
+
type: nextType
|
|
121
120
|
});
|
|
122
121
|
};
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
122
|
+
var renderElevator = function renderElevator() {
|
|
123
|
+
return /*#__PURE__*/ _react.default.createElement(_elevatorRender.ElevatorRender, {
|
|
124
|
+
visible: innerVisible,
|
|
125
|
+
closeable: true,
|
|
126
|
+
title: title || locale.address.selectRegion,
|
|
127
|
+
left: backIcon,
|
|
128
|
+
defaultValue: defaultValue,
|
|
129
|
+
closeIcon: closeIcon,
|
|
130
|
+
options: options,
|
|
131
|
+
hotList: hotList,
|
|
132
|
+
format: format,
|
|
133
|
+
optionKey: optionKey,
|
|
134
|
+
type: currentType,
|
|
135
|
+
height: height,
|
|
136
|
+
onClose: handleClose,
|
|
137
|
+
onChange: function onChange1(val, params) {
|
|
138
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(val, params);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
var renderCascator = function renderCascator() {
|
|
143
|
+
return /*#__PURE__*/ _react.default.createElement(_cascaderRender.CascaderRender, {
|
|
144
|
+
visible: innerVisible,
|
|
145
|
+
closeable: true,
|
|
146
|
+
title: title || locale.address.selectRegion,
|
|
147
|
+
left: renderLeftOnCascaderSwitch(),
|
|
148
|
+
defaultValue: defaultValue,
|
|
149
|
+
closeIcon: closeIcon,
|
|
150
|
+
options: options,
|
|
151
|
+
format: format,
|
|
152
|
+
optionKey: optionKey,
|
|
153
|
+
type: currentType,
|
|
154
|
+
height: height,
|
|
155
|
+
onClose: handleClose,
|
|
156
|
+
onChange: function onChange1(val, params) {
|
|
157
|
+
onChange && onChange(val, params);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
var renderExist = function renderExist() {
|
|
162
|
+
return /*#__PURE__*/ _react.default.createElement(_popup.default, {
|
|
163
|
+
visible: innerVisible,
|
|
164
|
+
position: "bottom",
|
|
165
|
+
round: true,
|
|
166
|
+
closeable: true,
|
|
167
|
+
closeIcon: closeIcon,
|
|
168
|
+
title: title || locale.address.selectRegion,
|
|
169
|
+
onClose: handleClose
|
|
170
|
+
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
171
|
+
className: "".concat(classPrefix, " ").concat(className || ''),
|
|
172
|
+
style: (0, _object_spread._)({}, style)
|
|
173
|
+
}, /*#__PURE__*/ _react.default.createElement(_existRender.ExistRender, {
|
|
174
|
+
type: currentType,
|
|
175
|
+
existList: existList,
|
|
176
|
+
selectIcon: selectIcon,
|
|
177
|
+
defaultIcon: defaultIcon,
|
|
178
|
+
custom: custom,
|
|
179
|
+
onSelect: selectedExistItem,
|
|
180
|
+
onSwitch: onSwitchModule
|
|
181
|
+
})));
|
|
182
|
+
};
|
|
183
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, currentType === 'elevator' ? renderElevator() : null, currentType === 'cascader' ? renderCascator() : null, currentType === 'exist' ? renderExist() : null);
|
|
159
184
|
};
|
|
160
185
|
var Address = /*#__PURE__*/ (0, _react.forwardRef)(InternalAddress);
|
|
161
186
|
Address.displayName = 'NutAddress';
|
|
@@ -10,4 +10,4 @@ export interface AddressProps extends WebCascaderProps {
|
|
|
10
10
|
format: Record<string, string | number | null>;
|
|
11
11
|
height: string | number;
|
|
12
12
|
}
|
|
13
|
-
export declare const
|
|
13
|
+
export declare const CascaderRender: FunctionComponent<Partial<AddressProps> & Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'defaultValue' | 'onChange'>>;
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
Object.defineProperty(exports, "
|
|
5
|
+
Object.defineProperty(exports, "CascaderRender", {
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: function() {
|
|
8
|
-
return
|
|
8
|
+
return CascaderRender;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
@@ -17,7 +17,7 @@ var _typings = require("../../utils/typings");
|
|
|
17
17
|
var _cascader = /*#__PURE__*/ _interop_require_default._(require("../cascader"));
|
|
18
18
|
var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
|
|
19
19
|
visible: false,
|
|
20
|
-
type: '
|
|
20
|
+
type: 'cascader',
|
|
21
21
|
options: [],
|
|
22
22
|
optionKey: {
|
|
23
23
|
textKey: 'text',
|
|
@@ -27,7 +27,7 @@ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typing
|
|
|
27
27
|
format: {},
|
|
28
28
|
height: '200px'
|
|
29
29
|
});
|
|
30
|
-
var
|
|
30
|
+
var CascaderRender = function CascaderRender(props) {
|
|
31
31
|
var _ref = (0, _object_spread._)({}, defaultProps, props), children = _ref.children, visible = _ref.visible, type = _ref.type, height = _ref.height, options = _ref.options, title = _ref.title, left = _ref.left, value = _ref.value, defaultValue = _ref.defaultValue, optionKey = _ref.optionKey, format = _ref.format, onClose = _ref.onClose, onChange = _ref.onChange, onPathChange = _ref.onPathChange, rest = (0, _object_without_properties._)(_ref, [
|
|
32
32
|
"children",
|
|
33
33
|
"visible",
|
|
@@ -44,7 +44,7 @@ var CustomRender = function CustomRender(props) {
|
|
|
44
44
|
"onChange",
|
|
45
45
|
"onPathChange"
|
|
46
46
|
]);
|
|
47
|
-
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, type === '
|
|
47
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, type === 'cascader' && /*#__PURE__*/ _react.default.createElement(_cascader.default, (0, _object_spread._)({
|
|
48
48
|
visible: visible,
|
|
49
49
|
value: value,
|
|
50
50
|
defaultValue: defaultValue,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React, { FunctionComponent } from 'react';
|
|
2
|
+
import { CascaderOption, WebCascaderProps, CascaderValue, CascaderOptionKey, RegionData } from "../../types";
|
|
3
|
+
export interface AddressProps extends WebCascaderProps {
|
|
4
|
+
visible: boolean;
|
|
5
|
+
type: string;
|
|
6
|
+
options: CascaderOption[];
|
|
7
|
+
hotList: RegionData[];
|
|
8
|
+
value: CascaderValue;
|
|
9
|
+
defaultValue: CascaderValue;
|
|
10
|
+
optionKey: CascaderOptionKey;
|
|
11
|
+
format: Record<string, string | number | null>;
|
|
12
|
+
height: string | number;
|
|
13
|
+
}
|
|
14
|
+
export declare const ElevatorRender: FunctionComponent<Partial<AddressProps> & Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'defaultValue' | 'onChange'>>;
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ElevatorRender", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ElevatorRender;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
12
|
+
var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
13
|
+
var _object_spread = require("@swc/helpers/_/_object_spread");
|
|
14
|
+
var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
|
|
15
|
+
var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
|
|
16
|
+
var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
17
|
+
var _popup = /*#__PURE__*/ _interop_require_default._(require("../popup"));
|
|
18
|
+
var _elevator = /*#__PURE__*/ _interop_require_default._(require("../elevator"));
|
|
19
|
+
var _utils = require("../cascader/utils");
|
|
20
|
+
var _utils1 = require("./utils");
|
|
21
|
+
var _typings = require("../../utils/typings");
|
|
22
|
+
var _mergeprops = require("../../utils/merge-props");
|
|
23
|
+
var _usepropsvalue = require("../../hooks/use-props-value");
|
|
24
|
+
var _isempty = require("../../utils/is-empty");
|
|
25
|
+
var _configprovider = require("../configprovider");
|
|
26
|
+
var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
|
|
27
|
+
visible: false,
|
|
28
|
+
type: 'elevator',
|
|
29
|
+
options: [],
|
|
30
|
+
optionKey: {
|
|
31
|
+
textKey: 'text',
|
|
32
|
+
valueKey: 'value',
|
|
33
|
+
childrenKey: 'children'
|
|
34
|
+
},
|
|
35
|
+
format: {},
|
|
36
|
+
height: '200px',
|
|
37
|
+
activeColor: '',
|
|
38
|
+
activeIcon: 'checklist',
|
|
39
|
+
popup: true,
|
|
40
|
+
closeable: false,
|
|
41
|
+
closeIconPosition: 'top-right',
|
|
42
|
+
closeIcon: 'close',
|
|
43
|
+
lazy: false,
|
|
44
|
+
hotList: [],
|
|
45
|
+
onClose: function onClose() {},
|
|
46
|
+
onChange: function onChange() {},
|
|
47
|
+
onPathChange: function onPathChange() {}
|
|
48
|
+
});
|
|
49
|
+
var ElevatorRender = function ElevatorRender(props) {
|
|
50
|
+
var _mergeProps = (0, _mergeprops.mergeProps)(defaultProps, props), hotList = _mergeProps.hotList, title = _mergeProps.title, left = _mergeProps.left, optionKey = _mergeProps.optionKey, format = _mergeProps.format, onClose = _mergeProps.onClose, onChange = _mergeProps.onChange, onPathChange = _mergeProps.onPathChange, popup = _mergeProps.popup, _mergeProps_popupProps = _mergeProps.popupProps, popupProps = _mergeProps_popupProps === void 0 ? {} : _mergeProps_popupProps, outerVisible = _mergeProps.visible, outerOptions = _mergeProps.options, outerValue = _mergeProps.value, outerDefaultValue = _mergeProps.defaultValue, closeable = _mergeProps.closeable, closeIconPosition = _mergeProps.closeIconPosition, closeIcon = _mergeProps.closeIcon;
|
|
51
|
+
var _useConfig = (0, _configprovider.useConfig)(), _useConfig_locale = _useConfig.locale, select = _useConfig_locale.select, _useConfig_locale_address = _useConfig_locale.address, hotCity = _useConfig_locale_address.hotCity, selectProvince = _useConfig_locale_address.selectProvince;
|
|
52
|
+
var classPrefix = 'nut-address';
|
|
53
|
+
var MAX_LENGTH = 10;
|
|
54
|
+
var _usePropsValue = (0, _sliced_to_array._)((0, _usepropsvalue.usePropsValue)({
|
|
55
|
+
value: outerValue,
|
|
56
|
+
defaultValue: outerDefaultValue,
|
|
57
|
+
finalValue: [],
|
|
58
|
+
onChange: function onChange1(value) {
|
|
59
|
+
onChange(value, []);
|
|
60
|
+
onPathChange(value, []);
|
|
61
|
+
}
|
|
62
|
+
}), 2), value = _usePropsValue[0], setValue = _usePropsValue[1];
|
|
63
|
+
var _useState = (0, _sliced_to_array._)((0, _react.useState)(outerOptions), 2), innerOptions = _useState[0], setInnerOptions = _useState[1];
|
|
64
|
+
var _useState1 = (0, _sliced_to_array._)((0, _react.useState)(value), 2), innerValue = _useState1[0], setInnerValue = _useState1[1];
|
|
65
|
+
var _useState2 = (0, _sliced_to_array._)((0, _react.useState)([]), 2), elevatorOptions = _useState2[0], setElevatorOptions = _useState2[1];
|
|
66
|
+
var _useState3 = (0, _sliced_to_array._)((0, _react.useState)(selectProvince), 2), addressTip = _useState3[0], setAddressTip = _useState3[1];
|
|
67
|
+
var _useState4 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), levelIndex = _useState4[0], setLevelIndex = _useState4[1];
|
|
68
|
+
var _useState5 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), tabActiveIndex = _useState5[0], setTabActiveIndex = _useState5[1];
|
|
69
|
+
// 初始化数据,只格式化一次;动态数据todo
|
|
70
|
+
var options = (0, _react.useMemo)(function() {
|
|
71
|
+
if (!(0, _isempty.isEmpty)(format)) {
|
|
72
|
+
return (0, _utils1.transformData)((0, _utils.normalizeListOptions)(innerOptions, format));
|
|
73
|
+
}
|
|
74
|
+
if (!(0, _isempty.isEmpty)(optionKey)) {
|
|
75
|
+
return (0, _utils1.transformData)((0, _utils.normalizeOptions)(innerOptions, optionKey) || []);
|
|
76
|
+
}
|
|
77
|
+
return (0, _utils1.transformData)(innerOptions);
|
|
78
|
+
}, [
|
|
79
|
+
innerOptions,
|
|
80
|
+
optionKey,
|
|
81
|
+
format
|
|
82
|
+
]);
|
|
83
|
+
(0, _react.useEffect)(function() {
|
|
84
|
+
setElevatorOptions(options);
|
|
85
|
+
}, [
|
|
86
|
+
options
|
|
87
|
+
]);
|
|
88
|
+
var levels = (0, _react.useMemo)(function() {
|
|
89
|
+
var next = [];
|
|
90
|
+
var end = false;
|
|
91
|
+
var currentOptions = options;
|
|
92
|
+
innerValue.forEach(function(val, index) {
|
|
93
|
+
var opt = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.flatMap(function(o) {
|
|
94
|
+
return o.list.find(function(item) {
|
|
95
|
+
return item.name === val;
|
|
96
|
+
});
|
|
97
|
+
}).filter(function(item) {
|
|
98
|
+
return item !== undefined;
|
|
99
|
+
})[0];
|
|
100
|
+
next.push({
|
|
101
|
+
name: val,
|
|
102
|
+
children: currentOptions,
|
|
103
|
+
levelIndex: index,
|
|
104
|
+
current: index === tabActiveIndex
|
|
105
|
+
});
|
|
106
|
+
if (opt === null || opt === void 0 ? void 0 : opt.children) {
|
|
107
|
+
currentOptions = opt.children;
|
|
108
|
+
} else {
|
|
109
|
+
end = true;
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
if (!end) {
|
|
113
|
+
next.push({
|
|
114
|
+
name: null,
|
|
115
|
+
children: currentOptions,
|
|
116
|
+
levels: -1,
|
|
117
|
+
current: false
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return next;
|
|
121
|
+
}, [
|
|
122
|
+
innerValue,
|
|
123
|
+
options,
|
|
124
|
+
tabActiveIndex
|
|
125
|
+
]);
|
|
126
|
+
var _usePropsValue1 = (0, _sliced_to_array._)((0, _usepropsvalue.usePropsValue)({
|
|
127
|
+
value: outerVisible,
|
|
128
|
+
defaultValue: undefined,
|
|
129
|
+
onChange: function onChange(value) {
|
|
130
|
+
if (value === false) onClose();
|
|
131
|
+
}
|
|
132
|
+
}), 2), visible = _usePropsValue1[0], setVisible = _usePropsValue1[1];
|
|
133
|
+
(0, _react.useEffect)(function() {
|
|
134
|
+
if (!visible) setInnerValue(value);
|
|
135
|
+
}, [
|
|
136
|
+
visible,
|
|
137
|
+
value
|
|
138
|
+
]);
|
|
139
|
+
(0, _react.useEffect)(function() {
|
|
140
|
+
setInnerOptions(outerOptions);
|
|
141
|
+
}, [
|
|
142
|
+
outerOptions
|
|
143
|
+
]);
|
|
144
|
+
(0, _react.useEffect)(function() {
|
|
145
|
+
setTabActiveIndex(levels.length - 1);
|
|
146
|
+
setAddressTip(innerValue.length ? select : selectProvince);
|
|
147
|
+
}, [
|
|
148
|
+
innerValue
|
|
149
|
+
]);
|
|
150
|
+
var handleElevatorItemClick = function handleElevatorItemClick(elevatorItem, levelIndex) {
|
|
151
|
+
var _elevatorItem_children;
|
|
152
|
+
var nextValue = innerValue.slice(0, levelIndex);
|
|
153
|
+
if (elevatorItem.name) {
|
|
154
|
+
nextValue[levelIndex] = elevatorItem.name;
|
|
155
|
+
}
|
|
156
|
+
setInnerValue(nextValue);
|
|
157
|
+
if ((_elevatorItem_children = elevatorItem.children) === null || _elevatorItem_children === void 0 ? void 0 : _elevatorItem_children.length) {
|
|
158
|
+
setElevatorOptions(elevatorItem.children);
|
|
159
|
+
setLevelIndex(levelIndex + 1);
|
|
160
|
+
} else {
|
|
161
|
+
setVisible(false);
|
|
162
|
+
setValue(nextValue);
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
var handleHotItemClick = function handleHotItemClick(hotItem) {
|
|
166
|
+
// 通过修改 innerValue 构造 level 数据
|
|
167
|
+
var distData = (0, _utils1.findDataByName)(options, hotItem.name);
|
|
168
|
+
// 热门城市主要是一级城市和二级城市,可以扩展。TODO
|
|
169
|
+
if (distData) {
|
|
170
|
+
var nextValue = [
|
|
171
|
+
distData.pName,
|
|
172
|
+
distData.name
|
|
173
|
+
].filter(function(item) {
|
|
174
|
+
return item !== '';
|
|
175
|
+
});
|
|
176
|
+
setInnerValue(nextValue);
|
|
177
|
+
setElevatorOptions(distData.children);
|
|
178
|
+
setLevelIndex(nextValue.length);
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
var renderTabs = function renderTabs() {
|
|
182
|
+
if (!levels.length || !levels[0].name) return null;
|
|
183
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
184
|
+
className: "".concat(classPrefix, "-selected")
|
|
185
|
+
}, levels.map(function(item, index) {
|
|
186
|
+
var _levels_;
|
|
187
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, {
|
|
188
|
+
key: "adtabs-".concat(index)
|
|
189
|
+
}, item.name && /*#__PURE__*/ _react.default.createElement("div", {
|
|
190
|
+
className: "".concat(classPrefix, "-selected-item ").concat(item.current ? 'active' : ''),
|
|
191
|
+
onClick: function onClick() {
|
|
192
|
+
var _props_onTabsChange;
|
|
193
|
+
(_props_onTabsChange = props.onTabsChange) === null || _props_onTabsChange === void 0 ? void 0 : _props_onTabsChange.call(props, index);
|
|
194
|
+
setTabActiveIndex(index);
|
|
195
|
+
setLevelIndex(index);
|
|
196
|
+
setElevatorOptions(item.children);
|
|
197
|
+
}
|
|
198
|
+
}, item.name), ((_levels_ = levels[index + 1]) === null || _levels_ === void 0 ? void 0 : _levels_.name) && /*#__PURE__*/ _react.default.createElement("div", {
|
|
199
|
+
className: "".concat(classPrefix, "-selected-border")
|
|
200
|
+
}, "-"));
|
|
201
|
+
}));
|
|
202
|
+
};
|
|
203
|
+
var renderHotCity = function renderHotCity() {
|
|
204
|
+
if (levels.length && tabActiveIndex !== 0) return null;
|
|
205
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement("div", {
|
|
206
|
+
className: "".concat(classPrefix, "-title")
|
|
207
|
+
}, hotCity), /*#__PURE__*/ _react.default.createElement("div", {
|
|
208
|
+
className: "".concat(classPrefix, "-hotlist ").concat(hotList.length > MAX_LENGTH ? 'hotlist-more' : '')
|
|
209
|
+
}, hotList.map(function(item, index) {
|
|
210
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
211
|
+
className: "".concat(classPrefix, "-hotlist-item"),
|
|
212
|
+
key: "hot-".concat(index),
|
|
213
|
+
onClick: function onClick() {
|
|
214
|
+
return handleHotItemClick(item);
|
|
215
|
+
}
|
|
216
|
+
}, item.name);
|
|
217
|
+
})));
|
|
218
|
+
};
|
|
219
|
+
var renderArea = function renderArea() {
|
|
220
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement("div", {
|
|
221
|
+
className: "".concat(classPrefix, "-title")
|
|
222
|
+
}, addressTip), /*#__PURE__*/ _react.default.createElement(_elevator.default, {
|
|
223
|
+
className: "".concat(classPrefix, "-elevator"),
|
|
224
|
+
list: elevatorOptions,
|
|
225
|
+
onItemClick: function onItemClick(key, item) {
|
|
226
|
+
return handleElevatorItemClick(item, levelIndex);
|
|
227
|
+
},
|
|
228
|
+
style: {
|
|
229
|
+
height: '100%'
|
|
230
|
+
},
|
|
231
|
+
height: "93%"
|
|
232
|
+
}));
|
|
233
|
+
};
|
|
234
|
+
var renderContent = function renderContent() {
|
|
235
|
+
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, renderTabs(), /*#__PURE__*/ _react.default.createElement("div", {
|
|
236
|
+
style: {
|
|
237
|
+
height: innerValue.length ? '80%' : '93%',
|
|
238
|
+
overflowY: levels.length && tabActiveIndex !== 0 ? 'hidden' : 'auto'
|
|
239
|
+
}
|
|
240
|
+
}, renderHotCity(), renderArea()));
|
|
241
|
+
};
|
|
242
|
+
return popup ? /*#__PURE__*/ _react.default.createElement(_popup.default, (0, _object_spread_props._)((0, _object_spread._)({}, popupProps), {
|
|
243
|
+
visible: visible,
|
|
244
|
+
position: "bottom",
|
|
245
|
+
style: {
|
|
246
|
+
height: '89%'
|
|
247
|
+
},
|
|
248
|
+
round: true,
|
|
249
|
+
closeIcon: closeIcon,
|
|
250
|
+
closeable: closeable,
|
|
251
|
+
closeIconPosition: closeIconPosition,
|
|
252
|
+
title: title,
|
|
253
|
+
left: left,
|
|
254
|
+
onOverlayClick: function onOverlayClick() {
|
|
255
|
+
return setVisible(false);
|
|
256
|
+
},
|
|
257
|
+
onCloseIconClick: function onCloseIconClick() {
|
|
258
|
+
return setVisible(false);
|
|
259
|
+
}
|
|
260
|
+
}), renderContent()) : renderContent();
|
|
261
|
+
};
|
|
262
|
+
ElevatorRender.displayName = 'NutElevatorRender';
|
|
@@ -15,7 +15,7 @@ var _react = /*#__PURE__*/ _interop_require_default._(require("react"));
|
|
|
15
15
|
var _iconsreact = require("@nutui/icons-react");
|
|
16
16
|
var _configprovider = require("../configprovider");
|
|
17
17
|
var defaultProps = {
|
|
18
|
-
type: '
|
|
18
|
+
type: 'exist',
|
|
19
19
|
existList: [],
|
|
20
20
|
defaultIcon: null,
|
|
21
21
|
selectIcon: null,
|
|
@@ -45,7 +45,7 @@ var ExistRender = function ExistRender(props) {
|
|
|
45
45
|
var onClick = function onClick(e) {
|
|
46
46
|
e.stopPropagation();
|
|
47
47
|
onSwitch && onSwitch({
|
|
48
|
-
type: type === 'exist' ? '
|
|
48
|
+
type: type === 'exist' ? 'cascader' : 'exist'
|
|
49
49
|
});
|
|
50
50
|
};
|
|
51
51
|
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement("ul", {
|