@nutui/nutui-react 0.1.0-beta.1

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 (240) hide show
  1. package/README.md +151 -0
  2. package/dist/esm/ActionSheet.js +110 -0
  3. package/dist/esm/Address.js +597 -0
  4. package/dist/esm/AnimatingNumbers.js +157 -0
  5. package/dist/esm/Avatar.js +70 -0
  6. package/dist/esm/BackTop.js +152 -0
  7. package/dist/esm/Badge.js +70 -0
  8. package/dist/esm/Barrage.js +101 -0
  9. package/dist/esm/Button.js +4 -0
  10. package/dist/esm/Cell.js +92 -0
  11. package/dist/esm/Checkbox.js +95 -0
  12. package/dist/esm/CheckboxGroup.js +107 -0
  13. package/dist/esm/CircleProgress.js +99 -0
  14. package/dist/esm/Collapse.js +108 -0
  15. package/dist/esm/Divider.js +38 -0
  16. package/dist/esm/Drag.js +192 -0
  17. package/dist/esm/Elevator.js +205 -0
  18. package/dist/esm/FixedNav.js +105 -0
  19. package/dist/esm/Icon.js +5 -0
  20. package/dist/esm/Infiniteloading.js +234 -0
  21. package/dist/esm/Input.js +186 -0
  22. package/dist/esm/InputNumber.js +194 -0
  23. package/dist/esm/Layout.js +20 -0
  24. package/dist/esm/NavBar.js +67 -0
  25. package/dist/esm/NoticeBar.js +340 -0
  26. package/dist/esm/Notify.js +251 -0
  27. package/dist/esm/Overlay.js +6 -0
  28. package/dist/esm/Pagination.js +199 -0
  29. package/dist/esm/Popup.js +195 -0
  30. package/dist/esm/Price.js +95 -0
  31. package/dist/esm/Radio.js +111 -0
  32. package/dist/esm/RadioGroup.js +103 -0
  33. package/dist/esm/Range.js +451 -0
  34. package/dist/esm/Rate.js +122 -0
  35. package/dist/esm/Signature.js +173 -0
  36. package/dist/esm/Step.js +73 -0
  37. package/dist/esm/Steps.js +44 -0
  38. package/dist/esm/Tabbar.js +74 -0
  39. package/dist/esm/TabbarItem.js +70 -0
  40. package/dist/esm/Tag.js +108 -0
  41. package/dist/esm/TextArea.js +126 -0
  42. package/dist/esm/Toast.js +8 -0
  43. package/dist/esm/Uploader.js +482 -0
  44. package/dist/esm/UserContext-68f62e66.js +3 -0
  45. package/dist/esm/bem-893ad28d.js +8 -0
  46. package/dist/esm/button-345fb015.js +110 -0
  47. package/dist/esm/context-aa058329.js +6 -0
  48. package/dist/esm/icon-63c0d58f.js +70 -0
  49. package/dist/esm/nutui-react.es.js +42 -0
  50. package/dist/esm/overlay-418bcf84.js +94 -0
  51. package/dist/esm/toast-420b65b7.js +294 -0
  52. package/dist/esm/types/src/packages/actionsheet/actionsheet.d.ts +20 -0
  53. package/dist/esm/types/src/packages/actionsheet/index.d.ts +2 -0
  54. package/dist/esm/types/src/packages/address/address.d.ts +56 -0
  55. package/dist/esm/types/src/packages/address/customRender.d.ts +18 -0
  56. package/dist/esm/types/src/packages/address/existRender.d.ts +18 -0
  57. package/dist/esm/types/src/packages/address/index.d.ts +2 -0
  58. package/dist/esm/types/src/packages/animatingnumbers/animatingnumbers.d.ts +12 -0
  59. package/dist/esm/types/src/packages/animatingnumbers/countup.d.ts +11 -0
  60. package/dist/esm/types/src/packages/animatingnumbers/index.d.ts +2 -0
  61. package/dist/esm/types/src/packages/avatar/avatar.d.ts +14 -0
  62. package/dist/esm/types/src/packages/avatar/index.d.ts +2 -0
  63. package/dist/esm/types/src/packages/backtop/backtop.d.ts +15 -0
  64. package/dist/esm/types/src/packages/backtop/index.d.ts +2 -0
  65. package/dist/esm/types/src/packages/badge/badge.d.ts +13 -0
  66. package/dist/esm/types/src/packages/badge/index.d.ts +2 -0
  67. package/dist/esm/types/src/packages/barrage/barrage.d.ts +12 -0
  68. package/dist/esm/types/src/packages/barrage/index.d.ts +2 -0
  69. package/dist/esm/types/src/packages/button/button.d.ts +20 -0
  70. package/dist/esm/types/src/packages/button/index.d.ts +2 -0
  71. package/dist/esm/types/src/packages/cell/cell.d.ts +16 -0
  72. package/dist/esm/types/src/packages/cell/index.d.ts +2 -0
  73. package/dist/esm/types/src/packages/cellgroup/cellgroup.d.ts +6 -0
  74. package/dist/esm/types/src/packages/cellgroup/index.d.ts +2 -0
  75. package/dist/esm/types/src/packages/checkbox/checkbox.d.ts +15 -0
  76. package/dist/esm/types/src/packages/checkbox/index.d.ts +2 -0
  77. package/dist/esm/types/src/packages/checkboxgroup/checkboxgroup.d.ts +7 -0
  78. package/dist/esm/types/src/packages/checkboxgroup/index.d.ts +2 -0
  79. package/dist/esm/types/src/packages/circleprogress/circleprogress.d.ts +9 -0
  80. package/dist/esm/types/src/packages/circleprogress/index.d.ts +2 -0
  81. package/dist/esm/types/src/packages/col/col.d.ts +7 -0
  82. package/dist/esm/types/src/packages/col/index.d.ts +2 -0
  83. package/dist/esm/types/src/packages/collapse/collapse.d.ts +11 -0
  84. package/dist/esm/types/src/packages/collapse/index.d.ts +2 -0
  85. package/dist/esm/types/src/packages/collapseitem/collapseitem.d.ts +18 -0
  86. package/dist/esm/types/src/packages/collapseitem/index.d.ts +2 -0
  87. package/dist/esm/types/src/packages/divider/divider.d.ts +9 -0
  88. package/dist/esm/types/src/packages/divider/index.d.ts +2 -0
  89. package/dist/esm/types/src/packages/drag/drag.d.ts +14 -0
  90. package/dist/esm/types/src/packages/drag/index.d.ts +2 -0
  91. package/dist/esm/types/src/packages/elevator/elevator.d.ts +17 -0
  92. package/dist/esm/types/src/packages/elevator/index.d.ts +2 -0
  93. package/dist/esm/types/src/packages/fixednav/fixednav.d.ts +22 -0
  94. package/dist/esm/types/src/packages/fixednav/index.d.ts +2 -0
  95. package/dist/esm/types/src/packages/icon/icon.d.ts +12 -0
  96. package/dist/esm/types/src/packages/icon/index.d.ts +2 -0
  97. package/dist/esm/types/src/packages/infiniteloading/index.d.ts +2 -0
  98. package/dist/esm/types/src/packages/infiniteloading/infiniteloading.d.ts +20 -0
  99. package/dist/esm/types/src/packages/input/index.d.ts +2 -0
  100. package/dist/esm/types/src/packages/input/input.d.ts +20 -0
  101. package/dist/esm/types/src/packages/input/util.d.ts +1 -0
  102. package/dist/esm/types/src/packages/inputnumber/index.d.ts +2 -0
  103. package/dist/esm/types/src/packages/inputnumber/inputnumber.d.ts +22 -0
  104. package/dist/esm/types/src/packages/layout/index.d.ts +2 -0
  105. package/dist/esm/types/src/packages/layout/layout.d.ts +4 -0
  106. package/dist/esm/types/src/packages/navbar/index.d.ts +2 -0
  107. package/dist/esm/types/src/packages/navbar/navbar.d.ts +15 -0
  108. package/dist/esm/types/src/packages/noticebar/index.d.ts +2 -0
  109. package/dist/esm/types/src/packages/noticebar/noticebar.d.ts +23 -0
  110. package/dist/esm/types/src/packages/notify/Notification.d.ts +31 -0
  111. package/dist/esm/types/src/packages/notify/index.d.ts +2 -0
  112. package/dist/esm/types/src/packages/notify/notify.d.ts +10 -0
  113. package/dist/esm/types/src/packages/nutui.react.build.d.ts +43 -0
  114. package/dist/esm/types/src/packages/nutui.react.d.ts +43 -0
  115. package/dist/esm/types/src/packages/overlay/index.d.ts +2 -0
  116. package/dist/esm/types/src/packages/overlay/overlay.d.ts +12 -0
  117. package/dist/esm/types/src/packages/pagination/index.d.ts +2 -0
  118. package/dist/esm/types/src/packages/pagination/pagination.d.ts +19 -0
  119. package/dist/esm/types/src/packages/popup/index.d.ts +2 -0
  120. package/dist/esm/types/src/packages/popup/popup.d.ts +23 -0
  121. package/dist/esm/types/src/packages/price/index.d.ts +2 -0
  122. package/dist/esm/types/src/packages/price/price.d.ts +11 -0
  123. package/dist/esm/types/src/packages/radio/context.d.ts +5 -0
  124. package/dist/esm/types/src/packages/radio/index.d.ts +2 -0
  125. package/dist/esm/types/src/packages/radio/radio.d.ts +21 -0
  126. package/dist/esm/types/src/packages/radiogroup/index.d.ts +2 -0
  127. package/dist/esm/types/src/packages/radiogroup/radiogroup.d.ts +11 -0
  128. package/dist/esm/types/src/packages/range/index.d.ts +2 -0
  129. package/dist/esm/types/src/packages/range/range.d.ts +23 -0
  130. package/dist/esm/types/src/packages/rate/index.d.ts +2 -0
  131. package/dist/esm/types/src/packages/rate/rate.d.ts +16 -0
  132. package/dist/esm/types/src/packages/row/UserContext.d.ts +1 -0
  133. package/dist/esm/types/src/packages/row/index.d.ts +2 -0
  134. package/dist/esm/types/src/packages/row/row.d.ts +9 -0
  135. package/dist/esm/types/src/packages/signature/index.d.ts +2 -0
  136. package/dist/esm/types/src/packages/signature/signature.d.ts +11 -0
  137. package/dist/esm/types/src/packages/step/index.d.ts +2 -0
  138. package/dist/esm/types/src/packages/step/step.d.ts +12 -0
  139. package/dist/esm/types/src/packages/steps/UserContext.d.ts +1 -0
  140. package/dist/esm/types/src/packages/steps/index.d.ts +2 -0
  141. package/dist/esm/types/src/packages/steps/steps.d.ts +9 -0
  142. package/dist/esm/types/src/packages/switch/index.d.ts +2 -0
  143. package/dist/esm/types/src/packages/switch/switch.d.ts +14 -0
  144. package/dist/esm/types/src/packages/tabbar/index.d.ts +2 -0
  145. package/dist/esm/types/src/packages/tabbar/tabbar.d.ts +13 -0
  146. package/dist/esm/types/src/packages/tabbaritem/index.d.ts +2 -0
  147. package/dist/esm/types/src/packages/tabbaritem/tabbarItem.d.ts +13 -0
  148. package/dist/esm/types/src/packages/tag/index.d.ts +2 -0
  149. package/dist/esm/types/src/packages/tag/tag.d.ts +15 -0
  150. package/dist/esm/types/src/packages/textarea/index.d.ts +2 -0
  151. package/dist/esm/types/src/packages/textarea/textarea.d.ts +18 -0
  152. package/dist/esm/types/src/packages/toast/Notification.d.ts +37 -0
  153. package/dist/esm/types/src/packages/toast/index.d.ts +2 -0
  154. package/dist/esm/types/src/packages/toast/toast.d.ts +11 -0
  155. package/dist/esm/types/src/packages/uploader/index.d.ts +2 -0
  156. package/dist/esm/types/src/packages/uploader/upload.d.ts +20 -0
  157. package/dist/esm/types/src/packages/uploader/uploader.d.ts +59 -0
  158. package/dist/esm/types/src/utils/bem.d.ts +2 -0
  159. package/dist/esm/types/src/utils/create/bem.d.ts +2 -0
  160. package/dist/esm/types/src/utils/create/index.d.ts +1 -0
  161. package/dist/esm/types/src/utils/date.d.ts +49 -0
  162. package/dist/esm/types/src/utils/index.d.ts +1 -0
  163. package/dist/esm/types/src/utils/raf.d.ts +2 -0
  164. package/dist/esm/types/src/utils/useRect/index.d.ts +17 -0
  165. package/dist/esm/types/src/utils/useTouch/index.d.ts +16 -0
  166. package/dist/nutui.react.es.js +6647 -0
  167. package/dist/nutui.react.umd.js +28 -0
  168. package/dist/packages/actionsheet/actionsheet.scss +68 -0
  169. package/dist/packages/address/address.scss +145 -0
  170. package/dist/packages/animatingnumbers/animatingnumbers.scss +3 -0
  171. package/dist/packages/animatingnumbers/countup.scss +36 -0
  172. package/dist/packages/avatar/avatar.scss +48 -0
  173. package/dist/packages/backtop/backtop.scss +20 -0
  174. package/dist/packages/badge/badge.scss +39 -0
  175. package/dist/packages/barrage/barrage.scss +48 -0
  176. package/dist/packages/button/button.scss +157 -0
  177. package/dist/packages/cell/cell.scss +79 -0
  178. package/dist/packages/cellgroup/cellgroup.scss +24 -0
  179. package/dist/packages/checkbox/checkbox.scss +20 -0
  180. package/dist/packages/checkboxgroup/checkboxgroup.scss +0 -0
  181. package/dist/packages/circleprogress/circleprogress.scss +65 -0
  182. package/dist/packages/col/col.scss +24 -0
  183. package/dist/packages/collapse/collapse.scss +1 -0
  184. package/dist/packages/collapseitem/collapseitem.scss +82 -0
  185. package/dist/packages/divider/divider.scss +54 -0
  186. package/dist/packages/drag/drag.scss +8 -0
  187. package/dist/packages/elevator/elevator.scss +71 -0
  188. package/dist/packages/fixednav/fixednav.scss +129 -0
  189. package/dist/packages/icon/icon.scss +40 -0
  190. package/dist/packages/infiniteloading/infiniteloading.scss +47 -0
  191. package/dist/packages/input/input.scss +47 -0
  192. package/dist/packages/inputnumber/inputnumber.scss +36 -0
  193. package/dist/packages/layout/layout.scss +2 -0
  194. package/dist/packages/navbar/navbar.scss +38 -0
  195. package/dist/packages/noticebar/noticebar.scss +111 -0
  196. package/dist/packages/notify/notify.scss +80 -0
  197. package/dist/packages/overlay/overlay.scss +50 -0
  198. package/dist/packages/pagination/pagination.scss +50 -0
  199. package/dist/packages/popup/popup.scss +149 -0
  200. package/dist/packages/price/price.scss +22 -0
  201. package/dist/packages/radio/radio.scss +58 -0
  202. package/dist/packages/radiogroup/radiogroup.scss +22 -0
  203. package/dist/packages/range/custom.scss +9 -0
  204. package/dist/packages/range/range.scss +96 -0
  205. package/dist/packages/rate/rate.scss +34 -0
  206. package/dist/packages/row/row.scss +51 -0
  207. package/dist/packages/signature/signature.scss +16 -0
  208. package/dist/packages/step/step.scss +190 -0
  209. package/dist/packages/steps/steps.scss +7 -0
  210. package/dist/packages/switch/switch.scss +60 -0
  211. package/dist/packages/tabbar/tabbar.scss +20 -0
  212. package/dist/packages/tabbaritem/tabbarItem.scss +61 -0
  213. package/dist/packages/tag/tag.scss +52 -0
  214. package/dist/packages/textarea/textarea.scss +39 -0
  215. package/dist/packages/toast/toast.scss +94 -0
  216. package/dist/packages/uploader/uploader.scss +72 -0
  217. package/dist/style.css +1 -0
  218. package/dist/style.es.js +7 -0
  219. package/dist/styles/animation/drop.scss +24 -0
  220. package/dist/styles/animation/ease.scss +23 -0
  221. package/dist/styles/animation/fade.scss +20 -0
  222. package/dist/styles/animation/index.scss +6 -0
  223. package/dist/styles/animation/rotate.scss +10 -0
  224. package/dist/styles/animation/zoom.scss +26 -0
  225. package/dist/styles/font/demo.css +539 -0
  226. package/dist/styles/font/demo_index.html +2718 -0
  227. package/dist/styles/font/iconfont.css +455 -0
  228. package/dist/styles/font/iconfont.eot +0 -0
  229. package/dist/styles/font/iconfont.js +63 -0
  230. package/dist/styles/font/iconfont.json +779 -0
  231. package/dist/styles/font/iconfont.svg +356 -0
  232. package/dist/styles/font/iconfont.ttf +0 -0
  233. package/dist/styles/font/iconfont.woff +0 -0
  234. package/dist/styles/font/iconfont.woff2 +0 -0
  235. package/dist/styles/mixins/index.scss +2 -0
  236. package/dist/styles/mixins/make-animation.scss +24 -0
  237. package/dist/styles/mixins/text-ellipsis.scss +20 -0
  238. package/dist/styles/themes/default.scss +46 -0
  239. package/dist/styles/variables.scss +326 -0
  240. package/package.json +120 -0
@@ -0,0 +1,597 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ var _excluded = ["children", "type", "existAddress", "selectedIcon", "defaultIcon", "isShowCustomAddress", "customAndExistTitle", "onSelected", "onClose", "onSwitchModule"],
5
+ _excluded2 = ["children", "type", "height", "province", "city", "country", "town", "onNextArea", "onClose"],
6
+ _excluded3 = ["modelValue", "children", "type", "height", "customAddressTitle", "existAddress", "existAddressTitle", "province", "city", "country", "town", "isShowCustomAddress", "customAndExistTitle", "selectedIcon", "defaultIcon", "closeBtnIcon", "backBtnIcon", "onChange", "onSelected", "onClose", "closeMask", "switchModule", "style", "className"];
7
+
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
+
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
+
12
+ import React__default, { useEffect, useState, useRef } from 'react';
13
+ import Icon from './Icon.js';
14
+ import Popup from './Popup.js';
15
+ import { c as cn } from './bem-893ad28d.js';
16
+ import Elevator from './Elevator.js';
17
+ import '@bem-react/classname';
18
+ var defaultProps$2 = {
19
+ type: 'custom',
20
+ existAddress: [],
21
+ defaultIcon: 'location2',
22
+ selectedIcon: 'Check',
23
+ isShowCustomAddress: true,
24
+ customAndExistTitle: '选择其他地址'
25
+ };
26
+
27
+ var ExistRender = function ExistRender(props) {
28
+ var _defaultProps$2$props = _objectSpread(_objectSpread({}, defaultProps$2), props),
29
+ children = _defaultProps$2$props.children,
30
+ type = _defaultProps$2$props.type,
31
+ existAddress = _defaultProps$2$props.existAddress,
32
+ selectedIcon = _defaultProps$2$props.selectedIcon,
33
+ defaultIcon = _defaultProps$2$props.defaultIcon,
34
+ isShowCustomAddress = _defaultProps$2$props.isShowCustomAddress,
35
+ customAndExistTitle = _defaultProps$2$props.customAndExistTitle,
36
+ onSelected = _defaultProps$2$props.onSelected,
37
+ onClose = _defaultProps$2$props.onClose,
38
+ onSwitchModule = _defaultProps$2$props.onSwitchModule,
39
+ rest = _objectWithoutProperties(_defaultProps$2$props, _excluded);
40
+
41
+ var b = cn('address'); // 选择现有地址
42
+
43
+ var selectedExist = function selectedExist(item) {
44
+ var copyExistAdd = existAddress;
45
+ var prevExistAdd = {
46
+ provinceName: '',
47
+ cityName: '',
48
+ countyName: '',
49
+ townName: '',
50
+ addressDetail: '',
51
+ selectedAddress: false
52
+ };
53
+ copyExistAdd.forEach(function (list, index) {
54
+ if (list && list.selectedAddress) {
55
+ prevExistAdd = list;
56
+ }
57
+
58
+ list.selectedAddress = false;
59
+ });
60
+ item.selectedAddress = true;
61
+ onSelected && onSelected(prevExistAdd, item, copyExistAdd);
62
+ }; // 选择其他地址
63
+
64
+
65
+ var switchModule = function switchModule() {
66
+ onSwitchModule && onSwitchModule({
67
+ type: type === 'exist' ? 'custom' : 'exist'
68
+ });
69
+ };
70
+
71
+ useEffect(function () {}, [existAddress]);
72
+ return React__default.createElement("div", {
73
+ className: b('exist')
74
+ }, React__default.createElement("div", {
75
+ className: b('exist-group')
76
+ }, React__default.createElement("ul", {
77
+ className: b('exist-ul')
78
+ }, existAddress.map(function (item, index) {
79
+ return React__default.createElement("li", {
80
+ className: b('exist-item'),
81
+ key: index,
82
+ onClick: function onClick() {
83
+ return selectedExist(item);
84
+ }
85
+ }, React__default.createElement(Icon, {
86
+ className: b('exist-item-icon'),
87
+ name: item.selectedAddress ? selectedIcon : defaultIcon,
88
+ color: item.selectedAddress ? '#FA2C19' : '',
89
+ size: "13px"
90
+ }), React__default.createElement("div", {
91
+ className: b('exist-item-info')
92
+ }, item.name && item.phone && React__default.createElement("div", {
93
+ className: "exist-item-info-top"
94
+ }, React__default.createElement("div", {
95
+ className: "exist-item-info-name"
96
+ }, item.name), React__default.createElement("div", {
97
+ className: "exist-item-info-phone"
98
+ }, item.phone)), React__default.createElement("div", {
99
+ className: "exist-item-info-bottom"
100
+ }, React__default.createElement("div", null, item.provinceName + item.cityName + item.countyName + item.townName + item.addressDetail))));
101
+ }))), isShowCustomAddress && React__default.createElement("div", {
102
+ className: b('choose-other'),
103
+ onClick: switchModule
104
+ }, React__default.createElement("div", {
105
+ className: b('choose-other-btn')
106
+ }, customAndExistTitle)));
107
+ };
108
+
109
+ var defaultProps$1 = {
110
+ type: 'custom',
111
+ province: [],
112
+ city: [],
113
+ country: [],
114
+ town: [],
115
+ height: '200px'
116
+ };
117
+
118
+ var CustomRender = function CustomRender(props) {
119
+ var _defaultProps$1$props = _objectSpread(_objectSpread({}, defaultProps$1), props),
120
+ children = _defaultProps$1$props.children,
121
+ type = _defaultProps$1$props.type,
122
+ height = _defaultProps$1$props.height,
123
+ province = _defaultProps$1$props.province,
124
+ city = _defaultProps$1$props.city,
125
+ country = _defaultProps$1$props.country,
126
+ town = _defaultProps$1$props.town,
127
+ onNextArea = _defaultProps$1$props.onNextArea,
128
+ onClose = _defaultProps$1$props.onClose,
129
+ rest = _objectWithoutProperties(_defaultProps$1$props, _excluded2);
130
+
131
+ var b = cn('address');
132
+
133
+ var _useState = useState(type),
134
+ _useState2 = _slicedToArray(_useState, 2),
135
+ privateType = _useState2[0],
136
+ setPrivateType = _useState2[1];
137
+
138
+ var _useState3 = useState(0),
139
+ _useState4 = _slicedToArray(_useState3, 2),
140
+ tabIndex = _useState4[0],
141
+ setTabIndex = _useState4[1];
142
+
143
+ var _useState5 = useState(['province', 'city', 'country', 'town']),
144
+ _useState6 = _slicedToArray(_useState5, 2),
145
+ tabName = _useState6[0],
146
+ setTabName = _useState6[1];
147
+
148
+ var provinceRef = useRef(null);
149
+ var cityRef = useRef(null);
150
+ var countryRef = useRef(null);
151
+ var townRef = useRef(null);
152
+ var regionLine = useRef(null);
153
+
154
+ var isCustom2 = function isCustom2() {
155
+ return type === 'custom2';
156
+ };
157
+
158
+ var transformData = function transformData(data) {
159
+ if (!Array.isArray(data)) throw new TypeError('params muse be array.');
160
+ if (!data.length) return [];
161
+ data.forEach(function (item) {
162
+ if (!item.title) {
163
+ console.error('[NutUI] <Address> 请检查数组选项的 title 值是否有设置 ,title 为必填项 .');
164
+ return;
165
+ }
166
+ });
167
+ var newData = [];
168
+ data = data.sort(function (a, b) {
169
+ return a.title.localeCompare(b.title);
170
+ });
171
+ data.forEach(function (item) {
172
+ var index = newData.findIndex(function (value) {
173
+ return value.title === item.title;
174
+ });
175
+
176
+ if (index <= -1) {
177
+ newData.push({
178
+ title: item.title,
179
+ list: [].concat(item)
180
+ });
181
+ } else {
182
+ newData[index] = {
183
+ title: item.title,
184
+ list: newData[index].list.concat(item)
185
+ };
186
+ }
187
+ });
188
+ return newData;
189
+ };
190
+
191
+ var _useState7 = useState({
192
+ province: isCustom2() ? transformData(province) : province,
193
+ city: isCustom2() ? transformData(city) : city,
194
+ country: isCustom2() ? transformData(country) : country,
195
+ town: isCustom2() ? transformData(town) : town
196
+ }),
197
+ _useState8 = _slicedToArray(_useState7, 2),
198
+ regionList = _useState8[0],
199
+ setRegionList = _useState8[1]; //已选择的 省、市、县、镇
200
+
201
+
202
+ var _useState9 = useState({
203
+ province: {
204
+ name: ''
205
+ },
206
+ city: {
207
+ name: ''
208
+ },
209
+ country: {
210
+ name: ''
211
+ },
212
+ town: {
213
+ name: ''
214
+ }
215
+ }),
216
+ _useState10 = _slicedToArray(_useState9, 2),
217
+ selectedRegion = _useState10[0],
218
+ setSelectedRegion = _useState10[1];
219
+
220
+ var _useState11 = useState(20),
221
+ _useState12 = _slicedToArray(_useState11, 2),
222
+ lineDistance = _useState12[0],
223
+ setLineDistance = _useState12[1]; //获取已选地区列表名称
224
+
225
+
226
+ var getTabName = function getTabName(item, index) {
227
+ if (item.name) return item.name;
228
+
229
+ if (tabIndex < index) {
230
+ return item.name;
231
+ } else {
232
+ return '请选择';
233
+ }
234
+ };
235
+
236
+ var mapRef = {
237
+ province: provinceRef,
238
+ city: cityRef,
239
+ country: countryRef,
240
+ town: townRef
241
+ }; // 移动下面的红线
242
+
243
+ var lineAnimation = function lineAnimation(index) {
244
+ setTimeout(function () {
245
+ var name = tabName[index];
246
+ var refD = mapRef;
247
+
248
+ if (name && refD[name] && refD[name].current) {
249
+ var distance = refD[name].current.offsetLeft;
250
+ setLineDistance(distance ? distance : 20);
251
+ }
252
+ }, 0);
253
+ }; // 切换下一级列表
254
+
255
+
256
+ var nextAreaList = function nextAreaList(item) {
257
+ // onchange 接收的参数
258
+ var calBack = {
259
+ next: '',
260
+ value: '',
261
+ custom: tabName[tabIndex],
262
+ selectedRegion: {}
263
+ };
264
+ setSelectedRegion(_objectSpread(_objectSpread({}, selectedRegion), {}, _defineProperty({}, tabName[tabIndex], item)));
265
+ calBack.selectedRegion = _objectSpread(_objectSpread({}, selectedRegion), {}, _defineProperty({}, tabName[tabIndex], item));
266
+
267
+ var _loop = function _loop(i) {
268
+ setSelectedRegion(function () {
269
+ return _objectSpread(_objectSpread({}, selectedRegion), {}, _defineProperty({}, tabName[i + 1], {}));
270
+ });
271
+ calBack.selectedRegion = _objectSpread(_objectSpread({}, selectedRegion), {}, _defineProperty({}, tabName[i + 1], {}));
272
+ };
273
+
274
+ for (var i = tabIndex; i < tabIndex - 1; i++) {
275
+ _loop(i);
276
+ }
277
+
278
+ if (tabIndex < 3) {
279
+ setTabIndex(function () {
280
+ return tabIndex + 1;
281
+ });
282
+ lineAnimation(tabIndex + 1); // 切换下一个
283
+
284
+ calBack.next = tabName[tabIndex + 1];
285
+ calBack.value = item;
286
+ onNextArea && onNextArea(calBack);
287
+ } else {
288
+ onClose && onClose();
289
+ }
290
+ }; //切换地区Tab
291
+
292
+
293
+ var changeRegionTab = function changeRegionTab(item, index) {
294
+ if (getTabName(item, index)) {
295
+ setTabIndex(index);
296
+ lineAnimation(index);
297
+ }
298
+ };
299
+
300
+ var handleElevatorItem = function handleElevatorItem(key, item) {
301
+ nextAreaList(item);
302
+ };
303
+
304
+ return React__default.createElement("div", {
305
+ className: b('custom')
306
+ }, React__default.createElement("div", {
307
+ className: b('region-tab')
308
+ }, Object.keys(selectedRegion).map(function (key, index) {
309
+ return React__default.createElement("div", {
310
+ className: "".concat(b('tab-item'), " ").concat(index === tabIndex ? 'active' : ''),
311
+ key: index,
312
+ ref: mapRef[key],
313
+ onClick: function onClick() {
314
+ return changeRegionTab(selectedRegion[key], index);
315
+ }
316
+ }, React__default.createElement("div", null, getTabName(selectedRegion[key], index)));
317
+ }), React__default.createElement("div", {
318
+ className: b('tab-line'),
319
+ ref: regionLine,
320
+ style: {
321
+ left: lineDistance + 'px'
322
+ }
323
+ })), privateType === 'custom' && React__default.createElement("div", {
324
+ className: b('region-con')
325
+ }, React__default.createElement("ul", {
326
+ className: b('region-group')
327
+ }, regionList[tabName[tabIndex]].map(function (item, index) {
328
+ return React__default.createElement("li", {
329
+ key: index,
330
+ className: b('region-item'),
331
+ onClick: function onClick(e) {
332
+ return nextAreaList(item);
333
+ }
334
+ }, selectedRegion[tabName[tabIndex]].id === item.id && React__default.createElement(Icon, {
335
+ className: b('region-item--icon'),
336
+ name: "Check",
337
+ color: "#FA2C19",
338
+ size: "13px"
339
+ }), item.name);
340
+ }))), privateType === 'custom2' && React__default.createElement("div", {
341
+ className: b('elevator-group')
342
+ }, React__default.createElement(Elevator, {
343
+ height: height,
344
+ indexList: regionList[tabName[tabIndex]],
345
+ clickItem: handleElevatorItem
346
+ })));
347
+ };
348
+
349
+ var defaultProps = {
350
+ modelValue: false,
351
+ type: 'custom',
352
+ customAddressTitle: '请选择所在地区',
353
+ province: [],
354
+ city: [],
355
+ country: [],
356
+ town: [],
357
+ isShowCustomAddress: true,
358
+ existAddress: [],
359
+ existAddressTitle: '配送至',
360
+ customAndExistTitle: '选择其他地址',
361
+ height: '200px',
362
+ defaultIcon: 'location2',
363
+ selectedIcon: 'Check',
364
+ closeBtnIcon: 'circle-close',
365
+ backBtnIcon: 'left'
366
+ };
367
+
368
+ var Address = function Address(props) {
369
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
370
+ modelValue = _defaultProps$props.modelValue,
371
+ children = _defaultProps$props.children,
372
+ type = _defaultProps$props.type,
373
+ height = _defaultProps$props.height,
374
+ customAddressTitle = _defaultProps$props.customAddressTitle,
375
+ existAddress = _defaultProps$props.existAddress,
376
+ existAddressTitle = _defaultProps$props.existAddressTitle,
377
+ province = _defaultProps$props.province,
378
+ city = _defaultProps$props.city,
379
+ country = _defaultProps$props.country,
380
+ town = _defaultProps$props.town,
381
+ isShowCustomAddress = _defaultProps$props.isShowCustomAddress,
382
+ customAndExistTitle = _defaultProps$props.customAndExistTitle,
383
+ selectedIcon = _defaultProps$props.selectedIcon,
384
+ defaultIcon = _defaultProps$props.defaultIcon,
385
+ closeBtnIcon = _defaultProps$props.closeBtnIcon,
386
+ backBtnIcon = _defaultProps$props.backBtnIcon,
387
+ onChange = _defaultProps$props.onChange,
388
+ onSelected = _defaultProps$props.onSelected,
389
+ onClose = _defaultProps$props.onClose,
390
+ closeMask = _defaultProps$props.closeMask,
391
+ switchModule = _defaultProps$props.switchModule,
392
+ style = _defaultProps$props.style,
393
+ className = _defaultProps$props.className,
394
+ rest = _objectWithoutProperties(_defaultProps$props, _excluded3);
395
+
396
+ var b = cn('address');
397
+
398
+ var _useState13 = useState(type),
399
+ _useState14 = _slicedToArray(_useState13, 2),
400
+ privateType = _useState14[0],
401
+ setPrivateType = _useState14[1];
402
+
403
+ var _useState15 = useState(['province', 'city', 'country', 'town']),
404
+ _useState16 = _slicedToArray(_useState15, 2),
405
+ tabName = _useState16[0],
406
+ setTabName = _useState16[1];
407
+
408
+ var _useState17 = useState(modelValue),
409
+ _useState18 = _slicedToArray(_useState17, 2),
410
+ showPopup = _useState18[0],
411
+ setShowPopup = _useState18[1];
412
+
413
+ var _useState19 = useState({
414
+ province: {
415
+ name: ''
416
+ },
417
+ city: {
418
+ name: ''
419
+ },
420
+ country: {
421
+ name: ''
422
+ },
423
+ town: {
424
+ name: ''
425
+ }
426
+ }),
427
+ _useState20 = _slicedToArray(_useState19, 2),
428
+ selectedRegion = _useState20[0],
429
+ setSelectedRegion = _useState20[1]; //已选择的 省、市、县、镇
430
+
431
+
432
+ var _useState21 = useState({}),
433
+ _useState22 = _slicedToArray(_useState21, 2),
434
+ selectedExistAddress = _useState22[0],
435
+ setSelectedExistAddress = _useState22[1]; // 当前选择的地址
436
+
437
+
438
+ var _useState23 = useState('self'),
439
+ _useState24 = _slicedToArray(_useState23, 2),
440
+ closeWay = _useState24[0],
441
+ setCloseWay = _useState24[1]; // 手动关闭 点击叉号(cross),或者蒙层(mask)
442
+
443
+
444
+ var handClose = function handClose() {
445
+ var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'self';
446
+ setCloseWay(function () {
447
+ return type === 'cross' ? 'cross' : 'self';
448
+ });
449
+ setShowPopup(false);
450
+ }; // 点击遮罩层关闭
451
+
452
+
453
+ var clickOverlay = function clickOverlay() {
454
+ setCloseWay('mask');
455
+ closeMask && closeMask({
456
+ closeWay: 'mask'
457
+ });
458
+ }; // 切换下一级列表
459
+
460
+
461
+ var nextAreaList = function nextAreaList(item) {
462
+ // onchange 接收的参数
463
+ var callbackParams = {
464
+ next: item.next,
465
+ value: item.value,
466
+ custom: item.custom,
467
+ selectedRegion: {}
468
+ };
469
+ setSelectedRegion(_objectSpread({}, item.selectedRegion));
470
+ onChange && onChange(callbackParams);
471
+ }; // 选择现有地址
472
+
473
+
474
+ var selectedExist = function selectedExist(prevExistAdd, item, copyExistAdd) {
475
+ console.log(prevExistAdd, item, copyExistAdd);
476
+ setSelectedExistAddress(item);
477
+ onSelected && onSelected(prevExistAdd, item, copyExistAdd);
478
+ handClose();
479
+ }; // 初始化
480
+
481
+
482
+ var initAddress = function initAddress() {
483
+ for (var i = 0; i < tabName.length; i++) {
484
+ setSelectedRegion(_objectSpread(_objectSpread({}, selectedRegion), {}, _defineProperty({}, tabName[i], {})));
485
+ }
486
+ }; // 关闭
487
+
488
+
489
+ var closeFun = function closeFun() {
490
+ var resCopy = Object.assign({
491
+ addressIdStr: '',
492
+ addressStr: ''
493
+ }, selectedRegion);
494
+ var res = {
495
+ data: {},
496
+ type: privateType
497
+ };
498
+
499
+ if (privateType === 'custom' || privateType === 'custom2') {
500
+ var _province = resCopy.province,
501
+ _city = resCopy.city,
502
+ _country = resCopy.country,
503
+ _town = resCopy.town;
504
+ resCopy.addressIdStr = [_province.id || 0, _city.id || 0, _country.id || 0, _town.id || 0].join('_');
505
+ resCopy.addressStr = [_province.name, _city.name, _country.name, _town.name].join('');
506
+ res.data = resCopy;
507
+ } else {
508
+ res.data = selectedExistAddress;
509
+ }
510
+
511
+ initAddress();
512
+ onClose && onClose(res);
513
+ }; // 选择其他地址
514
+
515
+
516
+ var onSwitchModule = function onSwitchModule() {
517
+ if (privateType === 'exist') {
518
+ setPrivateType('custom');
519
+ } else {
520
+ setPrivateType('exist');
521
+ }
522
+
523
+ initAddress();
524
+ switchModule && switchModule({
525
+ type: privateType
526
+ });
527
+ };
528
+
529
+ var headerRender = function headerRender() {
530
+ return React__default.createElement("div", {
531
+ className: b('header')
532
+ }, React__default.createElement("div", {
533
+ className: "arrow-back",
534
+ onClick: onSwitchModule
535
+ }, privateType === 'custom' && backBtnIcon && React__default.createElement(Icon, {
536
+ name: backBtnIcon,
537
+ color: "#cccccc"
538
+ })), React__default.createElement("div", {
539
+ className: b('header__title')
540
+ }, privateType === 'custom' ? customAddressTitle : existAddressTitle), React__default.createElement("div", {
541
+ onClick: function onClick() {
542
+ return handClose('cross');
543
+ }
544
+ }, closeBtnIcon && React__default.createElement(Icon, {
545
+ name: closeBtnIcon,
546
+ color: "#cccccc",
547
+ size: "18px"
548
+ })));
549
+ };
550
+
551
+ useEffect(function () {
552
+ setShowPopup(modelValue);
553
+ }, [modelValue]);
554
+ useEffect(function () {
555
+ if (!showPopup) {
556
+ closeFun();
557
+ }
558
+ }, [showPopup]);
559
+ return React__default.createElement(React__default.Fragment, null, showPopup && React__default.createElement(Popup, {
560
+ visible: showPopup,
561
+ position: "bottom",
562
+ onClickOverlay: clickOverlay,
563
+ onOpen: function onOpen() {
564
+ setCloseWay('self');
565
+ },
566
+ onClose: function onClose() {
567
+ closeFun();
568
+ }
569
+ }, React__default.createElement("div", _objectSpread({
570
+ className: "".concat(b(), " ").concat(className ? className : ''),
571
+ style: _objectSpread({}, style)
572
+ }, rest), headerRender(), (privateType === 'custom' || privateType === 'custom2') && React__default.createElement(CustomRender, {
573
+ type: privateType,
574
+ province: province,
575
+ city: city,
576
+ country: country,
577
+ town: town,
578
+ height: height,
579
+ onNextArea: function onNextArea(cal) {
580
+ nextAreaList && nextAreaList(cal);
581
+ },
582
+ onClose: handClose
583
+ }), privateType === 'exist' && React__default.createElement(ExistRender, {
584
+ type: privateType,
585
+ existAddress: existAddress,
586
+ selectedIcon: selectedIcon,
587
+ defaultIcon: defaultIcon,
588
+ isShowCustomAddress: isShowCustomAddress,
589
+ customAndExistTitle: customAndExistTitle,
590
+ onSelected: selectedExist,
591
+ onSwitchModule: onSwitchModule
592
+ }))));
593
+ };
594
+
595
+ Address.defaultProps = defaultProps;
596
+ Address.displayName = 'NutAddress';
597
+ export { Address as default };