@nutui/nutui-react-taro 3.0.10 → 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 +18 -13
  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 +42 -42
  71. package/dist/style-jrkf.css +1 -1
  72. package/dist/style-jrkf.scss +40 -40
  73. package/dist/style.css +1 -1
  74. package/dist/style.scss +31 -31
  75. package/package.json +1 -1
@@ -7,13 +7,15 @@ import { View } from "@tarojs/components";
7
7
  import { ArrowLeft } from "@nutui/icons-react-taro";
8
8
  import Popup from "../popup/index";
9
9
  import { ExistRender } from "./existRender";
10
- import { CustomRender } from "./customRender";
10
+ import { ElevatorRender } from "./elevatorRender";
11
+ import { CascaderRender } from "./cascaderRender";
11
12
  import { useConfig } from "../configprovider/index";
12
13
  import { ComponentDefaults } from "../../utils/typings";
13
14
  import { usePropsValue } from "../../hooks/use-props-value";
15
+ import { mergeProps } from "../../utils/merge-props";
14
16
  var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
15
17
  defaultValue: [],
16
- type: 'custom',
18
+ type: 'cascader',
17
19
  options: [],
18
20
  optionKey: {
19
21
  textKey: 'text',
@@ -23,6 +25,7 @@ var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
23
25
  format: {},
24
26
  custom: false,
25
27
  existList: [],
28
+ hotList: [],
26
29
  height: '200px',
27
30
  defaultIcon: null,
28
31
  selectIcon: null,
@@ -31,7 +34,7 @@ var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
31
34
  });
32
35
  var InternalAddress = function(props, ref) {
33
36
  var locale = useConfig().locale;
34
- var _ref = _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 = _object_without_properties(_ref, [
37
+ var _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 = _object_without_properties(_mergeProps, [
35
38
  "style",
36
39
  "className",
37
40
  "visible",
@@ -50,6 +53,7 @@ var InternalAddress = function(props, ref) {
50
53
  "defaultIcon",
51
54
  "closeIcon",
52
55
  "backIcon",
56
+ "hotList",
53
57
  "onChange",
54
58
  "onExistSelect",
55
59
  "onClose",
@@ -76,65 +80,89 @@ var InternalAddress = function(props, ref) {
76
80
  setInnerVisible(false);
77
81
  onClose && onClose();
78
82
  };
79
- var renderLeftOnCustomSwitch = function() {
80
- return /*#__PURE__*/ React.createElement(React.Fragment, null, custom && /*#__PURE__*/ React.createElement(View, {
83
+ var renderLeftOnCascaderSwitch = function() {
84
+ if (!custom) return null;
85
+ return /*#__PURE__*/ React.createElement(View, {
81
86
  className: "".concat(classPrefix, "-left-icon"),
82
87
  onClick: onSwitchModule
83
88
  }, /*#__PURE__*/ React.isValidElement(backIcon) ? backIcon : /*#__PURE__*/ React.createElement(ArrowLeft, {
84
89
  color: "#cccccc"
85
- })));
90
+ }));
86
91
  };
87
92
  var selectedExistItem = function(data) {
88
93
  onExistSelect && onExistSelect(data);
89
94
  handleClose();
90
95
  };
91
96
  var onSwitchModule = function() {
92
- if (currentType === 'exist') {
93
- setCurrentType('custom');
94
- } else {
95
- setCurrentType('exist');
96
- }
97
+ var nextType = currentType === 'exist' ? 'cascader' : 'exist';
98
+ setCurrentType(nextType);
97
99
  onSwitch && onSwitch({
98
- type: currentType
100
+ type: nextType
99
101
  });
100
102
  };
101
- return /*#__PURE__*/ React.createElement(React.Fragment, null, currentType === 'custom' || currentType === 'custom2' ? /*#__PURE__*/ React.createElement(CustomRender, {
102
- visible: innerVisible,
103
- closeable: true,
104
- title: title || locale.address.selectRegion,
105
- left: renderLeftOnCustomSwitch(),
106
- defaultValue: defaultValue,
107
- closeIcon: closeIcon,
108
- options: options,
109
- format: format,
110
- optionKey: optionKey,
111
- type: currentType,
112
- height: height,
113
- onClose: handleClose,
114
- onChange: function(val, params) {
115
- onChange === null || onChange === void 0 ? void 0 : onChange(val, params);
116
- }
117
- }) : /*#__PURE__*/ React.createElement(Popup, {
118
- visible: innerVisible,
119
- position: "bottom",
120
- round: true,
121
- closeable: true,
122
- closeIcon: closeIcon,
123
- title: title || locale.address.selectRegion,
124
- onClose: handleClose
125
- }, /*#__PURE__*/ React.createElement(View, {
126
- className: "".concat(classPrefix, " ").concat(className || ''),
127
- style: _object_spread({}, style)
128
- }, // 不需要 close,选中切换即关闭弹框。可手动关闭弹框,只关闭弹框不处理逻辑。
129
- /*#__PURE__*/ React.createElement(ExistRender, {
130
- type: currentType,
131
- existList: existList,
132
- selectIcon: selectIcon,
133
- defaultIcon: defaultIcon,
134
- custom: custom,
135
- onSelect: selectedExistItem,
136
- onSwitch: onSwitchModule
137
- }))));
103
+ var renderElevator = function() {
104
+ return /*#__PURE__*/ React.createElement(ElevatorRender, {
105
+ visible: innerVisible,
106
+ closeable: true,
107
+ title: title || locale.address.selectRegion,
108
+ left: backIcon,
109
+ defaultValue: defaultValue,
110
+ closeIcon: closeIcon,
111
+ options: options,
112
+ hotList: hotList,
113
+ format: format,
114
+ optionKey: optionKey,
115
+ type: currentType,
116
+ height: height,
117
+ onClose: handleClose,
118
+ onChange: function(val, params) {
119
+ onChange === null || onChange === void 0 ? void 0 : onChange(val, params);
120
+ }
121
+ });
122
+ };
123
+ var renderCascator = function() {
124
+ return /*#__PURE__*/ React.createElement(CascaderRender, {
125
+ visible: innerVisible,
126
+ closeable: true,
127
+ title: title || locale.address.selectRegion,
128
+ left: renderLeftOnCascaderSwitch(),
129
+ defaultValue: defaultValue,
130
+ closeIcon: closeIcon,
131
+ options: options,
132
+ format: format,
133
+ optionKey: optionKey,
134
+ type: currentType,
135
+ height: height,
136
+ onClose: handleClose,
137
+ onChange: function(val, params) {
138
+ onChange && onChange(val, params);
139
+ }
140
+ });
141
+ };
142
+ var renderExist = function() {
143
+ return /*#__PURE__*/ React.createElement(Popup, {
144
+ visible: innerVisible,
145
+ position: "bottom",
146
+ round: true,
147
+ closeable: true,
148
+ closeIcon: closeIcon,
149
+ title: title || locale.address.selectRegion,
150
+ onClose: handleClose
151
+ }, /*#__PURE__*/ React.createElement(View, {
152
+ className: "".concat(classPrefix, " ").concat(className || ''),
153
+ style: _object_spread({}, style)
154
+ }, // 不需要 close,选中切换即关闭弹框。可手动关闭弹框,只关闭弹框不处理逻辑。
155
+ /*#__PURE__*/ React.createElement(ExistRender, {
156
+ type: currentType,
157
+ existList: existList,
158
+ selectIcon: selectIcon,
159
+ defaultIcon: defaultIcon,
160
+ custom: custom,
161
+ onSelect: selectedExistItem,
162
+ onSwitch: onSwitchModule
163
+ })));
164
+ };
165
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, currentType === 'elevator' ? renderElevator() : null, currentType === 'cascader' ? renderCascator() : null, currentType === 'exist' ? renderExist() : null);
138
166
  };
139
167
  export var Address = /*#__PURE__*/ forwardRef(InternalAddress);
140
168
  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'>>;
@@ -6,7 +6,7 @@ import { ComponentDefaults } from "../../utils/typings";
6
6
  import Cascader from "../cascader/index";
7
7
  var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
8
8
  visible: false,
9
- type: 'custom',
9
+ type: 'cascader',
10
10
  options: [],
11
11
  optionKey: {
12
12
  textKey: 'text',
@@ -16,7 +16,7 @@ var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
16
16
  format: {},
17
17
  height: '200px'
18
18
  });
19
- export var CustomRender = function(props) {
19
+ export var CascaderRender = function(props) {
20
20
  var _ref = _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 = _object_without_properties(_ref, [
21
21
  "children",
22
22
  "visible",
@@ -33,7 +33,7 @@ export var CustomRender = function(props) {
33
33
  "onChange",
34
34
  "onPathChange"
35
35
  ]);
36
- return /*#__PURE__*/ React.createElement(React.Fragment, null, type === 'custom' && /*#__PURE__*/ React.createElement(Cascader, _object_spread({
36
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, type === 'cascader' && /*#__PURE__*/ React.createElement(Cascader, _object_spread({
37
37
  visible: visible,
38
38
  value: value,
39
39
  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,252 @@
1
+ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
+ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
4
+ import React, { useEffect, useMemo, useState } from "react";
5
+ import { View } from "@tarojs/components";
6
+ import Popup from "../popup/index";
7
+ import Elevator from "../elevator/index";
8
+ import { normalizeListOptions, normalizeOptions } from "../cascader/utils";
9
+ import { transformData, findDataByName } from "./utils";
10
+ import { ComponentDefaults } from "../../utils/typings";
11
+ import { mergeProps } from "../../utils/merge-props";
12
+ import { usePropsValue } from "../../hooks/use-props-value";
13
+ import { isEmpty } from "../../utils/is-empty";
14
+ import { useConfig } from "../configprovider/index";
15
+ var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), {
16
+ visible: false,
17
+ type: 'elevator',
18
+ options: [],
19
+ optionKey: {
20
+ textKey: 'text',
21
+ valueKey: 'value',
22
+ childrenKey: 'children'
23
+ },
24
+ format: {},
25
+ height: '200px',
26
+ activeColor: '',
27
+ activeIcon: 'checklist',
28
+ popup: true,
29
+ closeable: false,
30
+ closeIconPosition: 'top-right',
31
+ closeIcon: 'close',
32
+ lazy: false,
33
+ hotList: [],
34
+ onClose: function() {},
35
+ onChange: function() {},
36
+ onPathChange: function() {}
37
+ });
38
+ export var ElevatorRender = function(props) {
39
+ var _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;
40
+ var _useConfig = 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;
41
+ var classPrefix = 'nut-address';
42
+ var MAX_LENGTH = 10;
43
+ var _usePropsValue = _sliced_to_array(usePropsValue({
44
+ value: outerValue,
45
+ defaultValue: outerDefaultValue,
46
+ finalValue: [],
47
+ onChange: function(value) {
48
+ onChange(value, []);
49
+ onPathChange(value, []);
50
+ }
51
+ }), 2), value = _usePropsValue[0], setValue = _usePropsValue[1];
52
+ var _useState = _sliced_to_array(useState(outerOptions), 2), innerOptions = _useState[0], setInnerOptions = _useState[1];
53
+ var _useState1 = _sliced_to_array(useState(value), 2), innerValue = _useState1[0], setInnerValue = _useState1[1];
54
+ var _useState2 = _sliced_to_array(useState([]), 2), elevatorOptions = _useState2[0], setElevatorOptions = _useState2[1];
55
+ var _useState3 = _sliced_to_array(useState(selectProvince), 2), addressTip = _useState3[0], setAddressTip = _useState3[1];
56
+ var _useState4 = _sliced_to_array(useState(0), 2), levelIndex = _useState4[0], setLevelIndex = _useState4[1];
57
+ var _useState5 = _sliced_to_array(useState(0), 2), tabActiveIndex = _useState5[0], setTabActiveIndex = _useState5[1];
58
+ // 初始化数据,只格式化一次;动态数据todo
59
+ var options = useMemo(function() {
60
+ if (!isEmpty(format)) {
61
+ return transformData(normalizeListOptions(innerOptions, format));
62
+ }
63
+ if (!isEmpty(optionKey)) {
64
+ return transformData(normalizeOptions(innerOptions, optionKey) || []);
65
+ }
66
+ return transformData(innerOptions);
67
+ }, [
68
+ innerOptions,
69
+ optionKey,
70
+ format
71
+ ]);
72
+ useEffect(function() {
73
+ setElevatorOptions(options);
74
+ }, [
75
+ options
76
+ ]);
77
+ var levels = useMemo(function() {
78
+ var next = [];
79
+ var end = false;
80
+ var currentOptions = options;
81
+ innerValue.forEach(function(val, index) {
82
+ var opt = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.flatMap(function(o) {
83
+ return o.list.find(function(item) {
84
+ return item.name === val;
85
+ });
86
+ }).filter(function(item) {
87
+ return item !== undefined;
88
+ })[0];
89
+ next.push({
90
+ name: val,
91
+ children: currentOptions,
92
+ levelIndex: index,
93
+ current: index === tabActiveIndex
94
+ });
95
+ if (opt === null || opt === void 0 ? void 0 : opt.children) {
96
+ currentOptions = opt.children;
97
+ } else {
98
+ end = true;
99
+ }
100
+ });
101
+ if (!end) {
102
+ next.push({
103
+ name: null,
104
+ children: currentOptions,
105
+ levels: -1,
106
+ current: false
107
+ });
108
+ }
109
+ return next;
110
+ }, [
111
+ innerValue,
112
+ options,
113
+ tabActiveIndex
114
+ ]);
115
+ var _usePropsValue1 = _sliced_to_array(usePropsValue({
116
+ value: outerVisible,
117
+ defaultValue: undefined,
118
+ onChange: function(value) {
119
+ if (value === false) onClose();
120
+ }
121
+ }), 2), visible = _usePropsValue1[0], setVisible = _usePropsValue1[1];
122
+ useEffect(function() {
123
+ if (!visible) setInnerValue(value);
124
+ }, [
125
+ visible,
126
+ value
127
+ ]);
128
+ useEffect(function() {
129
+ setInnerOptions(outerOptions);
130
+ }, [
131
+ outerOptions
132
+ ]);
133
+ useEffect(function() {
134
+ setTabActiveIndex(levels.length - 1);
135
+ setAddressTip(innerValue.length ? select : selectProvince);
136
+ }, [
137
+ innerValue
138
+ ]);
139
+ var handleElevatorItemClick = function(elevatorItem, levelIndex) {
140
+ var _elevatorItem_children;
141
+ var nextValue = innerValue.slice(0, levelIndex);
142
+ if (elevatorItem.name) {
143
+ nextValue[levelIndex] = elevatorItem.name;
144
+ }
145
+ setInnerValue(nextValue);
146
+ if ((_elevatorItem_children = elevatorItem.children) === null || _elevatorItem_children === void 0 ? void 0 : _elevatorItem_children.length) {
147
+ setElevatorOptions(elevatorItem.children);
148
+ setLevelIndex(levelIndex + 1);
149
+ } else {
150
+ setVisible(false);
151
+ setValue(nextValue);
152
+ }
153
+ };
154
+ var handleHotItemClick = function(hotItem) {
155
+ // 通过修改 innerValue 构造 level 数据
156
+ var distData = findDataByName(options, hotItem.name);
157
+ // 热门城市主要是一级城市和二级城市,可以扩展。TODO
158
+ if (distData) {
159
+ var nextValue = [
160
+ distData.pName,
161
+ distData.name
162
+ ].filter(function(item) {
163
+ return item !== '';
164
+ });
165
+ setInnerValue(nextValue);
166
+ setElevatorOptions(distData.children);
167
+ setLevelIndex(nextValue.length);
168
+ }
169
+ };
170
+ var renderTabs = function() {
171
+ if (!levels.length || !levels[0].name) return null;
172
+ return /*#__PURE__*/ React.createElement(View, {
173
+ className: "".concat(classPrefix, "-selected")
174
+ }, levels.map(function(item, index) {
175
+ var _levels_;
176
+ return /*#__PURE__*/ React.createElement(React.Fragment, {
177
+ key: "adtabs-".concat(index)
178
+ }, item.name && /*#__PURE__*/ React.createElement(View, {
179
+ className: "".concat(classPrefix, "-selected-item ").concat(item.current ? 'active' : ''),
180
+ onClick: function() {
181
+ var _props_onTabsChange;
182
+ (_props_onTabsChange = props.onTabsChange) === null || _props_onTabsChange === void 0 ? void 0 : _props_onTabsChange.call(props, index);
183
+ setTabActiveIndex(index);
184
+ setLevelIndex(index);
185
+ setElevatorOptions(item.children);
186
+ }
187
+ }, item.name), ((_levels_ = levels[index + 1]) === null || _levels_ === void 0 ? void 0 : _levels_.name) && /*#__PURE__*/ React.createElement(View, {
188
+ className: "".concat(classPrefix, "-selected-border")
189
+ }, "-"));
190
+ }));
191
+ };
192
+ var renderHotCity = function() {
193
+ if (levels.length && tabActiveIndex !== 0) return null;
194
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(View, {
195
+ className: "".concat(classPrefix, "-title")
196
+ }, hotCity), /*#__PURE__*/ React.createElement(View, {
197
+ className: "".concat(classPrefix, "-hotlist ").concat(hotList.length > MAX_LENGTH ? 'hotlist-more' : '')
198
+ }, hotList.map(function(item, index) {
199
+ return /*#__PURE__*/ React.createElement(View, {
200
+ className: "".concat(classPrefix, "-hotlist-item"),
201
+ key: "hot-".concat(index),
202
+ onClick: function() {
203
+ return handleHotItemClick(item);
204
+ }
205
+ }, item.name);
206
+ })));
207
+ };
208
+ var renderArea = function() {
209
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(View, {
210
+ className: "".concat(classPrefix, "-title")
211
+ }, addressTip), /*#__PURE__*/ React.createElement(Elevator, {
212
+ className: "".concat(classPrefix, "-elevator"),
213
+ list: elevatorOptions,
214
+ onItemClick: function(key, item) {
215
+ return handleElevatorItemClick(item, levelIndex);
216
+ },
217
+ // height="67%"
218
+ style: {
219
+ height: '100%'
220
+ },
221
+ height: "93%"
222
+ }));
223
+ };
224
+ var renderContent = function() {
225
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, renderTabs(), /*#__PURE__*/ React.createElement(View, {
226
+ style: {
227
+ height: innerValue.length ? '80%' : '93%',
228
+ overflowY: levels.length && tabActiveIndex !== 0 ? 'hidden' : 'auto'
229
+ }
230
+ }, renderHotCity(), renderArea()));
231
+ };
232
+ return popup ? /*#__PURE__*/ React.createElement(Popup, _object_spread_props(_object_spread({}, popupProps), {
233
+ visible: visible,
234
+ position: "bottom",
235
+ style: {
236
+ height: '89%'
237
+ },
238
+ round: true,
239
+ closeIcon: closeIcon,
240
+ closeable: closeable,
241
+ closeIconPosition: closeIconPosition,
242
+ title: title,
243
+ left: left,
244
+ onOverlayClick: function() {
245
+ return setVisible(false);
246
+ },
247
+ onCloseIconClick: function() {
248
+ return setVisible(false);
249
+ }
250
+ }), renderContent()) : renderContent();
251
+ };
252
+ ElevatorRender.displayName = 'NutElevatorRender';
@@ -5,7 +5,7 @@ import { Check, Location } from "@nutui/icons-react-taro";
5
5
  import { ScrollView, View } from "@tarojs/components";
6
6
  import { useConfig } from "../configprovider/index";
7
7
  var defaultProps = {
8
- type: 'custom',
8
+ type: 'exist',
9
9
  existList: [],
10
10
  defaultIcon: null,
11
11
  selectIcon: null,
@@ -35,7 +35,7 @@ export var ExistRender = function(props) {
35
35
  var onClick = function(e) {
36
36
  e.stopPropagation();
37
37
  onSwitch && onSwitch({
38
- type: type === 'exist' ? 'custom' : 'exist'
38
+ type: type === 'exist' ? 'cascader' : 'exist'
39
39
  });
40
40
  };
41
41
  return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(ScrollView, {
@@ -1,9 +1,4 @@
1
1
  .nut-address {
2
- &-elevator {
3
- display: flex;
4
- margin-top: 20px;
5
- }
6
-
7
2
  &-exist {
8
3
  display: block;
9
4
  padding: 15px 20px 0;
@@ -49,6 +44,120 @@
49
44
  }
50
45
  }
51
46
 
47
+ .nut-address {
48
+ &-title {
49
+ font-size: 14px;
50
+ font-weight: 500;
51
+ padding: 16px 16px 12px 16px;
52
+ }
53
+ &-hotlist {
54
+ padding: 0 16px;
55
+ display: flex;
56
+ flex-wrap: wrap;
57
+ align-items: flex-start;
58
+ &-item {
59
+ display: flex;
60
+ justify-content: center;
61
+ align-items: center;
62
+ width: 63px;
63
+ height: 28px;
64
+ font-size: 12px;
65
+ border-radius: 4px;
66
+ margin-bottom: 7px;
67
+ /* #ifdef harmony*/
68
+ margin-right: 6px;
69
+ /* #endif */
70
+ /* #ifndef harmony*/
71
+ margin-right: 7px;
72
+ /* #endif */
73
+ background-color: $color-background-sunken;
74
+ color: $color-title;
75
+ &:nth-child(5n) {
76
+ margin-right: 0;
77
+ }
78
+ }
79
+
80
+ &.hotlist-more {
81
+ .nut-address-hotlist-item {
82
+ width: auto;
83
+ padding: 0 16px;
84
+ margin-right: 7px;
85
+ }
86
+ }
87
+ }
88
+
89
+ &-selected {
90
+ width: 100%;
91
+ height: 60px;
92
+ padding: 0 16px;
93
+ display: flex;
94
+ align-items: center;
95
+ border-bottom: 1px solid $color-border;
96
+ &-item {
97
+ font-size: 12px;
98
+ display: inline-block;
99
+ height: 28px;
100
+ line-height: 28px;
101
+ padding: 0 12px;
102
+ border-radius: 4px;
103
+ background-color: $color-background-sunken;
104
+
105
+ &.active {
106
+ border: 1px solid $color-primary;
107
+ background-color: $color-primary-light-pressed;
108
+ color: $color-primary;
109
+ }
110
+ }
111
+ &-border {
112
+ margin: 0 2px;
113
+ color: $color-text-disabled;
114
+ }
115
+ }
116
+
117
+ &-elevator {
118
+ margin-top: 0;
119
+ .nut-elevator-list {
120
+ &-item {
121
+ position: relative;
122
+ padding-left: 20px;
123
+ }
124
+ &-item-code {
125
+ display: inline;
126
+ position: absolute;
127
+ left: 0;
128
+ top: 0;
129
+ height: 30px;
130
+ line-height: 30px;
131
+ border-bottom: 0;
132
+ color: $color-text-help;
133
+ font-weight: 500;
134
+ }
135
+ }
136
+ .nut-elevator-bars {
137
+ top: 40%;
138
+ padding: 0;
139
+ background: none;
140
+
141
+ &-inner-item {
142
+ display: flex;
143
+ justify-content: center;
144
+ align-items: center;
145
+ width: 16px;
146
+ height: 16px;
147
+ font-size: 10px;
148
+ border-radius: 16px;
149
+ margin-bottom: 2px;
150
+ color: $color-text-help;
151
+ &-active {
152
+ background-color: $color-primary;
153
+ color: $color-background-overlay;
154
+ font-weight: 400;
155
+ }
156
+ }
157
+ }
158
+ }
159
+ }
160
+
52
161
  [dir='rtl'] .nut-address,
53
162
  .nut-rtl .nut-address {
54
163
  &-exist {