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