@nutui/nutui-react 3.0.10-beta.1 → 3.0.11-patch.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/locales/base.d.ts +2 -0
  3. package/dist/cjs/locales/en-US.js +3 -1
  4. package/dist/cjs/locales/id-ID.js +3 -1
  5. package/dist/cjs/locales/tr-TR.js +3 -1
  6. package/dist/cjs/locales/zh-CN.js +3 -1
  7. package/dist/cjs/locales/zh-TW.js +3 -1
  8. package/dist/cjs/locales/zh-UG.js +3 -1
  9. package/dist/cjs/packages/address/address.js +80 -55
  10. package/dist/cjs/packages/address/{customRender.d.ts → cascaderRender.d.ts} +1 -1
  11. package/dist/cjs/packages/address/{customRender.js → cascaderRender.js} +5 -5
  12. package/dist/cjs/packages/address/elevatorRender.d.ts +14 -0
  13. package/dist/cjs/packages/address/elevatorRender.js +262 -0
  14. package/dist/cjs/packages/address/existRender.js +2 -2
  15. package/dist/cjs/packages/address/style/address.scss +114 -5
  16. package/dist/cjs/packages/address/style/style.css +103 -4
  17. package/dist/cjs/packages/address/style-jmapp/address.scss +114 -5
  18. package/dist/cjs/packages/address/style-jmapp/style.css +103 -4
  19. package/dist/cjs/packages/address/style-jrkf/address.scss +114 -5
  20. package/dist/cjs/packages/address/style-jrkf/style.css +103 -4
  21. package/dist/cjs/packages/address/utils.d.ts +5 -0
  22. package/dist/cjs/packages/address/utils.js +93 -0
  23. package/dist/cjs/packages/elevator/elevator.js +2 -1
  24. package/dist/cjs/packages/picker/style/picker.scss +0 -1
  25. package/dist/cjs/packages/picker/style/style.css +0 -1
  26. package/dist/cjs/packages/picker/style-jmapp/picker.scss +0 -1
  27. package/dist/cjs/packages/picker/style-jmapp/style.css +0 -1
  28. package/dist/cjs/packages/picker/style-jrkf/picker.scss +0 -1
  29. package/dist/cjs/packages/picker/style-jrkf/style.css +0 -1
  30. package/dist/cjs/types/spec/address/base.d.ts +3 -12
  31. package/dist/cjs/types/spec/cascader/base.d.ts +1 -0
  32. package/dist/es/locales/base.d.ts +2 -0
  33. package/dist/es/locales/en-US.js +3 -1
  34. package/dist/es/locales/id-ID.js +3 -1
  35. package/dist/es/locales/tr-TR.js +3 -1
  36. package/dist/es/locales/zh-CN.js +3 -1
  37. package/dist/es/locales/zh-TW.js +3 -1
  38. package/dist/es/locales/zh-UG.js +3 -1
  39. package/dist/es/packages/address/address.js +81 -56
  40. package/dist/es/packages/address/{customRender.d.ts → cascaderRender.d.ts} +1 -1
  41. package/dist/es/packages/address/{customRender.js → cascaderRender.js} +3 -3
  42. package/dist/es/packages/address/elevatorRender.d.ts +14 -0
  43. package/dist/es/packages/address/elevatorRender.js +250 -0
  44. package/dist/es/packages/address/existRender.js +2 -2
  45. package/dist/es/packages/address/style/address.scss +114 -5
  46. package/dist/es/packages/address/style/style.css +103 -4
  47. package/dist/es/packages/address/style-jmapp/address.scss +114 -5
  48. package/dist/es/packages/address/style-jmapp/style.css +103 -4
  49. package/dist/es/packages/address/style-jrkf/address.scss +114 -5
  50. package/dist/es/packages/address/style-jrkf/style.css +103 -4
  51. package/dist/es/packages/address/utils.d.ts +5 -0
  52. package/dist/es/packages/address/utils.js +75 -0
  53. package/dist/es/packages/elevator/elevator.js +2 -1
  54. package/dist/es/packages/picker/style/picker.scss +0 -1
  55. package/dist/es/packages/picker/style/style.css +0 -1
  56. package/dist/es/packages/picker/style-jmapp/picker.scss +0 -1
  57. package/dist/es/packages/picker/style-jmapp/style.css +0 -1
  58. package/dist/es/packages/picker/style-jrkf/picker.scss +0 -1
  59. package/dist/es/packages/picker/style-jrkf/style.css +0 -1
  60. package/dist/es/types/spec/address/base.d.ts +7 -13
  61. package/dist/es/types/spec/cascader/base.d.ts +1 -0
  62. package/dist/nutui.react.umd.js +463 -127
  63. package/dist/style-jmapp.css +1 -1
  64. package/dist/style-jmapp.scss +35 -35
  65. package/dist/style-jrkf.css +1 -1
  66. package/dist/style-jrkf.scss +27 -27
  67. package/dist/style.css +1 -1
  68. package/dist/style.scss +42 -42
  69. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ # v3.0.11
2
+
3
+ `2025-05-09`
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)
10
+
11
+ # v3.0.10
12
+
13
+ `2025-04-25`
14
+
15
+ - 📖 docs: jmapp 不判断环境,直接打开 (#3193)
16
+ - :sparkles: feat(switch): loading 态受控 (#3149)
17
+ - :sparkles: feat(uploader): add listUploadRender prop for custom list mode upload… (#3198)
18
+ - :sparkles: feat(video): 兼容taro Component属性 (#3185)
19
+ - :sparkles: feat(radio): 支持自定义icon的classname (#3196)
20
+ - :bug: fix(tabs): 修复滚动计算问题,优化定位逻辑 (#3183)
21
+ - :bug: fix: 兼容选中值为0的情况 (#3192)
22
+
1
23
  # v3.0.9
2
24
 
3
25
  `2025-04-18`
@@ -64,6 +64,8 @@ export interface BaseLang {
64
64
  selectRegion: string;
65
65
  deliveryTo: string;
66
66
  chooseAnotherAddress: string;
67
+ hotCity: string;
68
+ selectProvince: string;
67
69
  };
68
70
  signature: {
69
71
  reSign: string;
@@ -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 zhCN = {
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: '重签',
@@ -83,7 +83,9 @@ var zhCN = {
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: '重簽',
@@ -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 _customRender = require("./customRender");
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: 'custom',
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 _ref = (0, _object_spread._)({}, defaultProps, props), style = _ref.style, className = _ref.className, visible = _ref.visible, defaultVisible = _ref.defaultVisible, defaultValue = _ref.defaultValue, children = _ref.children, type = _ref.type, options = _ref.options, optionKey = _ref.optionKey, format = _ref.format, height = _ref.height, title = _ref.title, existList = _ref.existList, custom = _ref.custom, selectIcon = _ref.selectIcon, defaultIcon = _ref.defaultIcon, closeIcon = _ref.closeIcon, backIcon = _ref.backIcon, onChange = _ref.onChange, onExistSelect = _ref.onExistSelect, onClose = _ref.onClose, onSwitch = _ref.onSwitch, rest = (0, _object_without_properties._)(_ref, [
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 renderLeftOnCustomSwitch = function renderLeftOnCustomSwitch() {
99
- if (custom) {
100
- return /*#__PURE__*/ _react.default.createElement("div", {
101
- className: "".concat(classPrefix, "-left-icon"),
102
- onClick: onSwitchModule
103
- }, /*#__PURE__*/ _react.default.isValidElement(backIcon) ? backIcon : /*#__PURE__*/ _react.default.createElement(_iconsreact.ArrowLeft, {
104
- color: "#cccccc"
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
- if (currentType === 'exist') {
115
- setCurrentType('custom');
116
- } else {
117
- setCurrentType('exist');
118
- }
116
+ var nextType = currentType === 'exist' ? 'cascader' : 'exist';
117
+ setCurrentType(nextType);
119
118
  onSwitch && onSwitch({
120
- type: currentType
119
+ type: nextType
121
120
  });
122
121
  };
123
- return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, currentType === 'custom' || currentType === 'custom2' ? /*#__PURE__*/ _react.default.createElement(_customRender.CustomRender, {
124
- visible: innerVisible,
125
- closeable: true,
126
- title: title || locale.address.selectRegion,
127
- left: renderLeftOnCustomSwitch(),
128
- defaultValue: defaultValue,
129
- closeIcon: closeIcon,
130
- options: options,
131
- format: format,
132
- optionKey: optionKey,
133
- type: currentType,
134
- height: height,
135
- onClose: handleClose,
136
- onChange: function onChange1(val, params) {
137
- onChange === null || onChange === void 0 ? void 0 : onChange(val, params);
138
- }
139
- }) : /*#__PURE__*/ _react.default.createElement(_popup.default, {
140
- visible: innerVisible,
141
- position: "bottom",
142
- round: true,
143
- closeable: true,
144
- closeIcon: closeIcon,
145
- title: title || locale.address.selectRegion,
146
- onClose: handleClose
147
- }, /*#__PURE__*/ _react.default.createElement("div", {
148
- className: "".concat(classPrefix, " ").concat(className || ''),
149
- style: (0, _object_spread._)({}, style)
150
- }, /*#__PURE__*/ _react.default.createElement(_existRender.ExistRender, {
151
- type: currentType,
152
- existList: existList,
153
- selectIcon: selectIcon,
154
- defaultIcon: defaultIcon,
155
- custom: custom,
156
- onSelect: selectedExistItem,
157
- onSwitch: onSwitchModule
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 CustomRender: FunctionComponent<Partial<AddressProps> & Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'defaultValue' | 'onChange'>>;
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, "CustomRender", {
5
+ Object.defineProperty(exports, "CascaderRender", {
6
6
  enumerable: true,
7
7
  get: function() {
8
- return CustomRender;
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: 'custom',
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 CustomRender = function CustomRender(props) {
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 === 'custom' && /*#__PURE__*/ _react.default.createElement(_cascader.default, (0, _object_spread._)({
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: 'custom',
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' ? 'custom' : '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", {