@nutui/nutui-react-taro 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 (75) 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 +76 -48
  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 +264 -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/style.harmony.css +103 -4
  18. package/dist/cjs/packages/address/style-jmapp/address.scss +114 -5
  19. package/dist/cjs/packages/address/style-jmapp/style.css +103 -4
  20. package/dist/cjs/packages/address/style-jrkf/address.scss +114 -5
  21. package/dist/cjs/packages/address/style-jrkf/style.css +103 -4
  22. package/dist/cjs/packages/address/utils.d.ts +5 -0
  23. package/dist/cjs/packages/address/utils.js +93 -0
  24. package/dist/cjs/packages/animatingnumbers/style/style.harmony.css +42 -1
  25. package/dist/cjs/packages/cascader/cascader.js +2 -2
  26. package/dist/cjs/packages/picker/style/picker.scss +0 -1
  27. package/dist/cjs/packages/picker/style/style.css +0 -1
  28. package/dist/cjs/packages/picker/style/style.harmony.css +0 -1
  29. package/dist/cjs/packages/picker/style-jmapp/picker.scss +0 -1
  30. package/dist/cjs/packages/picker/style-jmapp/style.css +0 -1
  31. package/dist/cjs/packages/picker/style-jrkf/picker.scss +0 -1
  32. package/dist/cjs/packages/picker/style-jrkf/style.css +0 -1
  33. package/dist/cjs/types/spec/address/base.d.ts +3 -12
  34. package/dist/cjs/types/spec/cascader/base.d.ts +1 -0
  35. package/dist/es/locales/base.d.ts +2 -0
  36. package/dist/es/locales/en-US.js +3 -1
  37. package/dist/es/locales/id-ID.js +3 -1
  38. package/dist/es/locales/tr-TR.js +3 -1
  39. package/dist/es/locales/zh-CN.js +3 -1
  40. package/dist/es/locales/zh-TW.js +3 -1
  41. package/dist/es/locales/zh-UG.js +3 -1
  42. package/dist/es/packages/address/address.js +77 -49
  43. package/dist/es/packages/address/{customRender.d.ts → cascaderRender.d.ts} +1 -1
  44. package/dist/es/packages/address/{customRender.js → cascaderRender.js} +3 -3
  45. package/dist/es/packages/address/elevatorRender.d.ts +14 -0
  46. package/dist/es/packages/address/elevatorRender.js +252 -0
  47. package/dist/es/packages/address/existRender.js +2 -2
  48. package/dist/es/packages/address/style/address.scss +114 -5
  49. package/dist/es/packages/address/style/style.css +103 -4
  50. package/dist/es/packages/address/style/style.harmony.css +103 -4
  51. package/dist/es/packages/address/style-jmapp/address.scss +114 -5
  52. package/dist/es/packages/address/style-jmapp/style.css +103 -4
  53. package/dist/es/packages/address/style-jrkf/address.scss +114 -5
  54. package/dist/es/packages/address/style-jrkf/style.css +103 -4
  55. package/dist/es/packages/address/utils.d.ts +5 -0
  56. package/dist/es/packages/address/utils.js +75 -0
  57. package/dist/es/packages/animatingnumbers/style/style.harmony.css +42 -1
  58. package/dist/es/packages/cascader/cascader.js +1 -1
  59. package/dist/es/packages/picker/style/picker.scss +0 -1
  60. package/dist/es/packages/picker/style/style.css +0 -1
  61. package/dist/es/packages/picker/style/style.harmony.css +0 -1
  62. package/dist/es/packages/picker/style-jmapp/picker.scss +0 -1
  63. package/dist/es/packages/picker/style-jmapp/style.css +0 -1
  64. package/dist/es/packages/picker/style-jrkf/picker.scss +0 -1
  65. package/dist/es/packages/picker/style-jrkf/style.css +0 -1
  66. package/dist/es/types/spec/address/base.d.ts +7 -13
  67. package/dist/es/types/spec/cascader/base.d.ts +1 -0
  68. package/dist/nutui.react.umd.js +458 -119
  69. package/dist/style-jmapp.css +1 -1
  70. package/dist/style-jmapp.scss +41 -41
  71. package/dist/style-jrkf.css +1 -1
  72. package/dist/style-jrkf.scss +41 -41
  73. package/dist/style.css +1 -1
  74. package/dist/style.scss +29 -29
  75. 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: 'قايتا',
@@ -19,13 +19,15 @@ var _components = require("@tarojs/components");
19
19
  var _iconsreacttaro = require("@nutui/icons-react-taro");
20
20
  var _index = /*#__PURE__*/ _interop_require_default._(require("../popup/index"));
21
21
  var _existRender = require("./existRender");
22
- var _customRender = require("./customRender");
22
+ var _elevatorRender = require("./elevatorRender");
23
+ var _cascaderRender = require("./cascaderRender");
23
24
  var _index1 = require("../configprovider/index");
24
25
  var _typings = require("../../utils/typings");
25
26
  var _usepropsvalue = require("../../hooks/use-props-value");
27
+ var _mergeprops = require("../../utils/merge-props");
26
28
  var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
27
29
  defaultValue: [],
28
- type: 'custom',
30
+ type: 'cascader',
29
31
  options: [],
30
32
  optionKey: {
31
33
  textKey: 'text',
@@ -35,6 +37,7 @@ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typing
35
37
  format: {},
36
38
  custom: false,
37
39
  existList: [],
40
+ hotList: [],
38
41
  height: '200px',
39
42
  defaultIcon: null,
40
43
  selectIcon: null,
@@ -43,7 +46,7 @@ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typing
43
46
  });
44
47
  var InternalAddress = function InternalAddress(props, ref) {
45
48
  var locale = (0, _index1.useConfig)().locale;
46
- 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, [
49
+ 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, [
47
50
  "style",
48
51
  "className",
49
52
  "visible",
@@ -62,6 +65,7 @@ var InternalAddress = function InternalAddress(props, ref) {
62
65
  "defaultIcon",
63
66
  "closeIcon",
64
67
  "backIcon",
68
+ "hotList",
65
69
  "onChange",
66
70
  "onExistSelect",
67
71
  "onClose",
@@ -88,64 +92,88 @@ var InternalAddress = function InternalAddress(props, ref) {
88
92
  setInnerVisible(false);
89
93
  onClose && onClose();
90
94
  };
91
- var renderLeftOnCustomSwitch = function renderLeftOnCustomSwitch() {
92
- return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, custom && /*#__PURE__*/ _react.default.createElement(_components.View, {
95
+ var renderLeftOnCascaderSwitch = function renderLeftOnCascaderSwitch() {
96
+ if (!custom) return null;
97
+ return /*#__PURE__*/ _react.default.createElement(_components.View, {
93
98
  className: "".concat(classPrefix, "-left-icon"),
94
99
  onClick: onSwitchModule
95
100
  }, /*#__PURE__*/ _react.default.isValidElement(backIcon) ? backIcon : /*#__PURE__*/ _react.default.createElement(_iconsreacttaro.ArrowLeft, {
96
101
  color: "#cccccc"
97
- })));
102
+ }));
98
103
  };
99
104
  var selectedExistItem = function selectedExistItem(data) {
100
105
  onExistSelect && onExistSelect(data);
101
106
  handleClose();
102
107
  };
103
108
  var onSwitchModule = function onSwitchModule() {
104
- if (currentType === 'exist') {
105
- setCurrentType('custom');
106
- } else {
107
- setCurrentType('exist');
108
- }
109
+ var nextType = currentType === 'exist' ? 'cascader' : 'exist';
110
+ setCurrentType(nextType);
109
111
  onSwitch && onSwitch({
110
- type: currentType
112
+ type: nextType
111
113
  });
112
114
  };
113
- return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, currentType === 'custom' || currentType === 'custom2' ? /*#__PURE__*/ _react.default.createElement(_customRender.CustomRender, {
114
- visible: innerVisible,
115
- closeable: true,
116
- title: title || locale.address.selectRegion,
117
- left: renderLeftOnCustomSwitch(),
118
- defaultValue: defaultValue,
119
- closeIcon: closeIcon,
120
- options: options,
121
- format: format,
122
- optionKey: optionKey,
123
- type: currentType,
124
- height: height,
125
- onClose: handleClose,
126
- onChange: function onChange1(val, params) {
127
- onChange === null || onChange === void 0 ? void 0 : onChange(val, params);
128
- }
129
- }) : /*#__PURE__*/ _react.default.createElement(_index.default, {
130
- visible: innerVisible,
131
- position: "bottom",
132
- round: true,
133
- closeable: true,
134
- closeIcon: closeIcon,
135
- title: title || locale.address.selectRegion,
136
- onClose: handleClose
137
- }, /*#__PURE__*/ _react.default.createElement(_components.View, {
138
- className: "".concat(classPrefix, " ").concat(className || ''),
139
- style: (0, _object_spread._)({}, style)
140
- }, /*#__PURE__*/ _react.default.createElement(_existRender.ExistRender, {
141
- type: currentType,
142
- existList: existList,
143
- selectIcon: selectIcon,
144
- defaultIcon: defaultIcon,
145
- custom: custom,
146
- onSelect: selectedExistItem,
147
- onSwitch: onSwitchModule
148
- }))));
115
+ var renderElevator = function renderElevator() {
116
+ return /*#__PURE__*/ _react.default.createElement(_elevatorRender.ElevatorRender, {
117
+ visible: innerVisible,
118
+ closeable: true,
119
+ title: title || locale.address.selectRegion,
120
+ left: backIcon,
121
+ defaultValue: defaultValue,
122
+ closeIcon: closeIcon,
123
+ options: options,
124
+ hotList: hotList,
125
+ format: format,
126
+ optionKey: optionKey,
127
+ type: currentType,
128
+ height: height,
129
+ onClose: handleClose,
130
+ onChange: function onChange1(val, params) {
131
+ onChange === null || onChange === void 0 ? void 0 : onChange(val, params);
132
+ }
133
+ });
134
+ };
135
+ var renderCascator = function renderCascator() {
136
+ return /*#__PURE__*/ _react.default.createElement(_cascaderRender.CascaderRender, {
137
+ visible: innerVisible,
138
+ closeable: true,
139
+ title: title || locale.address.selectRegion,
140
+ left: renderLeftOnCascaderSwitch(),
141
+ defaultValue: defaultValue,
142
+ closeIcon: closeIcon,
143
+ options: options,
144
+ format: format,
145
+ optionKey: optionKey,
146
+ type: currentType,
147
+ height: height,
148
+ onClose: handleClose,
149
+ onChange: function onChange1(val, params) {
150
+ onChange && onChange(val, params);
151
+ }
152
+ });
153
+ };
154
+ var renderExist = function renderExist() {
155
+ return /*#__PURE__*/ _react.default.createElement(_index.default, {
156
+ visible: innerVisible,
157
+ position: "bottom",
158
+ round: true,
159
+ closeable: true,
160
+ closeIcon: closeIcon,
161
+ title: title || locale.address.selectRegion,
162
+ onClose: handleClose
163
+ }, /*#__PURE__*/ _react.default.createElement(_components.View, {
164
+ className: "".concat(classPrefix, " ").concat(className || ''),
165
+ style: (0, _object_spread._)({}, style)
166
+ }, /*#__PURE__*/ _react.default.createElement(_existRender.ExistRender, {
167
+ type: currentType,
168
+ existList: existList,
169
+ selectIcon: selectIcon,
170
+ defaultIcon: defaultIcon,
171
+ custom: custom,
172
+ onSelect: selectedExistItem,
173
+ onSwitch: onSwitchModule
174
+ })));
175
+ };
176
+ return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, currentType === 'elevator' ? renderElevator() : null, currentType === 'cascader' ? renderCascator() : null, currentType === 'exist' ? renderExist() : null);
149
177
  };
150
178
  var Address = /*#__PURE__*/ (0, _react.forwardRef)(InternalAddress);
151
179
  Address.displayName = 'NutAddress';
@@ -10,4 +10,4 @@ export interface AddressProps extends TaroCascaderProps {
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 _index = /*#__PURE__*/ _interop_require_default._(require("../cascader/index"));
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(_index.default, (0, _object_spread._)({
47
+ return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, type === 'cascader' && /*#__PURE__*/ _react.default.createElement(_index.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, TaroCascaderProps, CascaderValue, CascaderOptionKey, RegionData } from "../../types";
3
+ export interface AddressProps extends TaroCascaderProps {
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,264 @@
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 _components = require("@tarojs/components");
18
+ var _index = /*#__PURE__*/ _interop_require_default._(require("../popup/index"));
19
+ var _index1 = /*#__PURE__*/ _interop_require_default._(require("../elevator/index"));
20
+ var _utils = require("../cascader/utils");
21
+ var _utils1 = require("./utils");
22
+ var _typings = require("../../utils/typings");
23
+ var _mergeprops = require("../../utils/merge-props");
24
+ var _usepropsvalue = require("../../hooks/use-props-value");
25
+ var _isempty = require("../../utils/is-empty");
26
+ var _index2 = require("../configprovider/index");
27
+ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
28
+ visible: false,
29
+ type: 'elevator',
30
+ options: [],
31
+ optionKey: {
32
+ textKey: 'text',
33
+ valueKey: 'value',
34
+ childrenKey: 'children'
35
+ },
36
+ format: {},
37
+ height: '200px',
38
+ activeColor: '',
39
+ activeIcon: 'checklist',
40
+ popup: true,
41
+ closeable: false,
42
+ closeIconPosition: 'top-right',
43
+ closeIcon: 'close',
44
+ lazy: false,
45
+ hotList: [],
46
+ onClose: function onClose() {},
47
+ onChange: function onChange() {},
48
+ onPathChange: function onPathChange() {}
49
+ });
50
+ var ElevatorRender = function ElevatorRender(props) {
51
+ 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;
52
+ var _useConfig = (0, _index2.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;
53
+ var classPrefix = 'nut-address';
54
+ var MAX_LENGTH = 10;
55
+ var _usePropsValue = (0, _sliced_to_array._)((0, _usepropsvalue.usePropsValue)({
56
+ value: outerValue,
57
+ defaultValue: outerDefaultValue,
58
+ finalValue: [],
59
+ onChange: function onChange1(value) {
60
+ onChange(value, []);
61
+ onPathChange(value, []);
62
+ }
63
+ }), 2), value = _usePropsValue[0], setValue = _usePropsValue[1];
64
+ var _useState = (0, _sliced_to_array._)((0, _react.useState)(outerOptions), 2), innerOptions = _useState[0], setInnerOptions = _useState[1];
65
+ var _useState1 = (0, _sliced_to_array._)((0, _react.useState)(value), 2), innerValue = _useState1[0], setInnerValue = _useState1[1];
66
+ var _useState2 = (0, _sliced_to_array._)((0, _react.useState)([]), 2), elevatorOptions = _useState2[0], setElevatorOptions = _useState2[1];
67
+ var _useState3 = (0, _sliced_to_array._)((0, _react.useState)(selectProvince), 2), addressTip = _useState3[0], setAddressTip = _useState3[1];
68
+ var _useState4 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), levelIndex = _useState4[0], setLevelIndex = _useState4[1];
69
+ var _useState5 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), tabActiveIndex = _useState5[0], setTabActiveIndex = _useState5[1];
70
+ // 初始化数据,只格式化一次;动态数据todo
71
+ var options = (0, _react.useMemo)(function() {
72
+ if (!(0, _isempty.isEmpty)(format)) {
73
+ return (0, _utils1.transformData)((0, _utils.normalizeListOptions)(innerOptions, format));
74
+ }
75
+ if (!(0, _isempty.isEmpty)(optionKey)) {
76
+ return (0, _utils1.transformData)((0, _utils.normalizeOptions)(innerOptions, optionKey) || []);
77
+ }
78
+ return (0, _utils1.transformData)(innerOptions);
79
+ }, [
80
+ innerOptions,
81
+ optionKey,
82
+ format
83
+ ]);
84
+ (0, _react.useEffect)(function() {
85
+ setElevatorOptions(options);
86
+ }, [
87
+ options
88
+ ]);
89
+ var levels = (0, _react.useMemo)(function() {
90
+ var next = [];
91
+ var end = false;
92
+ var currentOptions = options;
93
+ innerValue.forEach(function(val, index) {
94
+ var opt = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.flatMap(function(o) {
95
+ return o.list.find(function(item) {
96
+ return item.name === val;
97
+ });
98
+ }).filter(function(item) {
99
+ return item !== undefined;
100
+ })[0];
101
+ next.push({
102
+ name: val,
103
+ children: currentOptions,
104
+ levelIndex: index,
105
+ current: index === tabActiveIndex
106
+ });
107
+ if (opt === null || opt === void 0 ? void 0 : opt.children) {
108
+ currentOptions = opt.children;
109
+ } else {
110
+ end = true;
111
+ }
112
+ });
113
+ if (!end) {
114
+ next.push({
115
+ name: null,
116
+ children: currentOptions,
117
+ levels: -1,
118
+ current: false
119
+ });
120
+ }
121
+ return next;
122
+ }, [
123
+ innerValue,
124
+ options,
125
+ tabActiveIndex
126
+ ]);
127
+ var _usePropsValue1 = (0, _sliced_to_array._)((0, _usepropsvalue.usePropsValue)({
128
+ value: outerVisible,
129
+ defaultValue: undefined,
130
+ onChange: function onChange(value) {
131
+ if (value === false) onClose();
132
+ }
133
+ }), 2), visible = _usePropsValue1[0], setVisible = _usePropsValue1[1];
134
+ (0, _react.useEffect)(function() {
135
+ if (!visible) setInnerValue(value);
136
+ }, [
137
+ visible,
138
+ value
139
+ ]);
140
+ (0, _react.useEffect)(function() {
141
+ setInnerOptions(outerOptions);
142
+ }, [
143
+ outerOptions
144
+ ]);
145
+ (0, _react.useEffect)(function() {
146
+ setTabActiveIndex(levels.length - 1);
147
+ setAddressTip(innerValue.length ? select : selectProvince);
148
+ }, [
149
+ innerValue
150
+ ]);
151
+ var handleElevatorItemClick = function handleElevatorItemClick(elevatorItem, levelIndex) {
152
+ var _elevatorItem_children;
153
+ var nextValue = innerValue.slice(0, levelIndex);
154
+ if (elevatorItem.name) {
155
+ nextValue[levelIndex] = elevatorItem.name;
156
+ }
157
+ setInnerValue(nextValue);
158
+ if ((_elevatorItem_children = elevatorItem.children) === null || _elevatorItem_children === void 0 ? void 0 : _elevatorItem_children.length) {
159
+ setElevatorOptions(elevatorItem.children);
160
+ setLevelIndex(levelIndex + 1);
161
+ } else {
162
+ setVisible(false);
163
+ setValue(nextValue);
164
+ }
165
+ };
166
+ var handleHotItemClick = function handleHotItemClick(hotItem) {
167
+ // 通过修改 innerValue 构造 level 数据
168
+ var distData = (0, _utils1.findDataByName)(options, hotItem.name);
169
+ // 热门城市主要是一级城市和二级城市,可以扩展。TODO
170
+ if (distData) {
171
+ var nextValue = [
172
+ distData.pName,
173
+ distData.name
174
+ ].filter(function(item) {
175
+ return item !== '';
176
+ });
177
+ setInnerValue(nextValue);
178
+ setElevatorOptions(distData.children);
179
+ setLevelIndex(nextValue.length);
180
+ }
181
+ };
182
+ var renderTabs = function renderTabs() {
183
+ if (!levels.length || !levels[0].name) return null;
184
+ return /*#__PURE__*/ _react.default.createElement(_components.View, {
185
+ className: "".concat(classPrefix, "-selected")
186
+ }, levels.map(function(item, index) {
187
+ var _levels_;
188
+ return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, {
189
+ key: "adtabs-".concat(index)
190
+ }, item.name && /*#__PURE__*/ _react.default.createElement(_components.View, {
191
+ className: "".concat(classPrefix, "-selected-item ").concat(item.current ? 'active' : ''),
192
+ onClick: function onClick() {
193
+ var _props_onTabsChange;
194
+ (_props_onTabsChange = props.onTabsChange) === null || _props_onTabsChange === void 0 ? void 0 : _props_onTabsChange.call(props, index);
195
+ setTabActiveIndex(index);
196
+ setLevelIndex(index);
197
+ setElevatorOptions(item.children);
198
+ }
199
+ }, item.name), ((_levels_ = levels[index + 1]) === null || _levels_ === void 0 ? void 0 : _levels_.name) && /*#__PURE__*/ _react.default.createElement(_components.View, {
200
+ className: "".concat(classPrefix, "-selected-border")
201
+ }, "-"));
202
+ }));
203
+ };
204
+ var renderHotCity = function renderHotCity() {
205
+ if (levels.length && tabActiveIndex !== 0) return null;
206
+ return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_components.View, {
207
+ className: "".concat(classPrefix, "-title")
208
+ }, hotCity), /*#__PURE__*/ _react.default.createElement(_components.View, {
209
+ className: "".concat(classPrefix, "-hotlist ").concat(hotList.length > MAX_LENGTH ? 'hotlist-more' : '')
210
+ }, hotList.map(function(item, index) {
211
+ return /*#__PURE__*/ _react.default.createElement(_components.View, {
212
+ className: "".concat(classPrefix, "-hotlist-item"),
213
+ key: "hot-".concat(index),
214
+ onClick: function onClick() {
215
+ return handleHotItemClick(item);
216
+ }
217
+ }, item.name);
218
+ })));
219
+ };
220
+ var renderArea = function renderArea() {
221
+ return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_components.View, {
222
+ className: "".concat(classPrefix, "-title")
223
+ }, addressTip), /*#__PURE__*/ _react.default.createElement(_index1.default, {
224
+ className: "".concat(classPrefix, "-elevator"),
225
+ list: elevatorOptions,
226
+ onItemClick: function onItemClick(key, item) {
227
+ return handleElevatorItemClick(item, levelIndex);
228
+ },
229
+ // height="67%"
230
+ style: {
231
+ height: '100%'
232
+ },
233
+ height: "93%"
234
+ }));
235
+ };
236
+ var renderContent = function renderContent() {
237
+ return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, renderTabs(), /*#__PURE__*/ _react.default.createElement(_components.View, {
238
+ style: {
239
+ height: innerValue.length ? '80%' : '93%',
240
+ overflowY: levels.length && tabActiveIndex !== 0 ? 'hidden' : 'auto'
241
+ }
242
+ }, renderHotCity(), renderArea()));
243
+ };
244
+ return popup ? /*#__PURE__*/ _react.default.createElement(_index.default, (0, _object_spread_props._)((0, _object_spread._)({}, popupProps), {
245
+ visible: visible,
246
+ position: "bottom",
247
+ style: {
248
+ height: '89%'
249
+ },
250
+ round: true,
251
+ closeIcon: closeIcon,
252
+ closeable: closeable,
253
+ closeIconPosition: closeIconPosition,
254
+ title: title,
255
+ left: left,
256
+ onOverlayClick: function onOverlayClick() {
257
+ return setVisible(false);
258
+ },
259
+ onCloseIconClick: function onCloseIconClick() {
260
+ return setVisible(false);
261
+ }
262
+ }), renderContent()) : renderContent();
263
+ };
264
+ ElevatorRender.displayName = 'NutElevatorRender';
@@ -16,7 +16,7 @@ var _iconsreacttaro = require("@nutui/icons-react-taro");
16
16
  var _components = require("@tarojs/components");
17
17
  var _index = require("../configprovider/index");
18
18
  var defaultProps = {
19
- type: 'custom',
19
+ type: 'exist',
20
20
  existList: [],
21
21
  defaultIcon: null,
22
22
  selectIcon: null,
@@ -46,7 +46,7 @@ var ExistRender = function ExistRender(props) {
46
46
  var onClick = function onClick(e) {
47
47
  e.stopPropagation();
48
48
  onSwitch && onSwitch({
49
- type: type === 'exist' ? 'custom' : 'exist'
49
+ type: type === 'exist' ? 'cascader' : 'exist'
50
50
  });
51
51
  };
52
52
  return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_components.ScrollView, {