@nutui/nutui-react-taro 1.5.2-beta.1 → 1.5.2

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 (231) hide show
  1. package/dist/esm/ActionSheet.js +90 -14
  2. package/dist/esm/Address.js +620 -21
  3. package/dist/esm/Animate.js +53 -7
  4. package/dist/esm/AnimatingNumbers.js +125 -7
  5. package/dist/esm/Audio.js +264 -19
  6. package/dist/esm/Avatar.js +130 -11
  7. package/dist/esm/{AvatarContext-c96afdcc.js → AvatarContext-15733596.js} +1 -3
  8. package/dist/esm/AvatarGroup.js +41 -11
  9. package/dist/esm/BackTop.js +138 -10
  10. package/dist/esm/Badge.js +71 -9
  11. package/dist/esm/Barrage.js +97 -8
  12. package/dist/esm/Button.js +108 -9
  13. package/dist/esm/Calendar.js +128 -20
  14. package/dist/esm/CalendarItem.js +674 -12
  15. package/dist/esm/Card.js +61 -11
  16. package/dist/esm/Cascader.js +671 -16
  17. package/dist/esm/Cell.js +101 -9
  18. package/dist/esm/CellGroup.js +2 -5
  19. package/dist/esm/Checkbox.js +5 -7
  20. package/dist/esm/CheckboxGroup.js +111 -8
  21. package/dist/esm/CircleProgress.js +114 -8
  22. package/dist/esm/Col.js +57 -7
  23. package/dist/esm/Collapse.js +97 -7
  24. package/dist/esm/CollapseItem.js +146 -8
  25. package/dist/esm/ConfigProvider.js +187 -8
  26. package/dist/esm/CountDown.js +247 -9
  27. package/dist/esm/DatePicker.js +309 -25
  28. package/dist/esm/Dialog.js +296 -17
  29. package/dist/esm/Divider.js +34 -7
  30. package/dist/esm/Drag.js +118 -7
  31. package/dist/esm/Elevator.js +234 -8
  32. package/dist/esm/Ellipsis.js +176 -10
  33. package/dist/esm/Empty.js +79 -8
  34. package/dist/esm/FixedNav.js +103 -14
  35. package/dist/esm/Form.js +215 -10
  36. package/dist/esm/FormItem.js +3 -10
  37. package/dist/esm/Grid.js +81 -11
  38. package/dist/esm/GridItem.js +123 -13
  39. package/dist/esm/Icon.js +2 -5
  40. package/dist/esm/Image.js +169 -11
  41. package/dist/esm/ImagePreview.js +225 -19
  42. package/dist/esm/Indicator.js +50 -7
  43. package/dist/esm/Infiniteloading.js +215 -14
  44. package/dist/esm/Input.js +362 -12
  45. package/dist/esm/InputNumber.js +275 -9
  46. package/dist/esm/Layout.js +13 -5
  47. package/dist/esm/Menu.js +153 -10
  48. package/dist/esm/MenuItem.js +175 -15
  49. package/dist/esm/NavBar.js +114 -9
  50. package/dist/esm/NoticeBar.js +568 -10
  51. package/dist/esm/Notify.js +234 -8
  52. package/dist/esm/NumberKeyboard.js +247 -17
  53. package/dist/esm/Overlay.js +2 -6
  54. package/dist/esm/Pagination.js +168 -9
  55. package/dist/esm/Picker.js +494 -22
  56. package/dist/esm/Popover.js +223 -12
  57. package/dist/esm/Popup.js +193 -13
  58. package/dist/esm/Price.js +84 -6
  59. package/dist/esm/Progress.js +122 -9
  60. package/dist/esm/PullToRefresh.js +276 -13
  61. package/dist/esm/Radio.js +4 -8
  62. package/dist/esm/RadioGroup.js +120 -7
  63. package/dist/esm/Range.js +406 -15
  64. package/dist/esm/Rate.js +121 -9
  65. package/dist/esm/Row.js +49 -7
  66. package/dist/esm/SearchBar.js +235 -12
  67. package/dist/esm/ShortPassword.js +191 -17
  68. package/dist/esm/SideNavBar.js +57 -19
  69. package/dist/esm/SideNavBarItem.js +24 -5
  70. package/dist/esm/Signature.js +153 -13
  71. package/dist/esm/Skeleton.js +98 -12
  72. package/dist/esm/Step.js +87 -10
  73. package/dist/esm/Steps.js +38 -8
  74. package/dist/esm/Sticky.js +190 -11
  75. package/dist/esm/SubSideNavBar.js +78 -6
  76. package/dist/esm/Swipe.js +230 -10
  77. package/dist/esm/Swiper.js +490 -9
  78. package/dist/esm/SwiperItem.js +36 -8
  79. package/dist/esm/Switch.js +71 -6
  80. package/dist/esm/TabPane.js +2 -5
  81. package/dist/esm/Tabbar.js +68 -6
  82. package/dist/esm/TabbarItem.js +78 -9
  83. package/dist/esm/Table.js +140 -12
  84. package/dist/esm/Tabs.js +5 -8
  85. package/dist/esm/Tag.js +110 -10
  86. package/dist/esm/TextArea.js +148 -9
  87. package/dist/esm/TimeDetail.js +67 -9
  88. package/dist/esm/TimePannel.js +29 -9
  89. package/dist/esm/TimeSelect.js +171 -19
  90. package/dist/esm/Toast.js +268 -7
  91. package/dist/esm/TrendArrow.js +99 -7
  92. package/dist/esm/Uploader.js +566 -17
  93. package/dist/esm/{UserContext-0aac9a82.js → UserContext-101ad4a4.js} +1 -3
  94. package/dist/esm/{UserContext-e402e1a6.js → UserContext-2629d479.js} +1 -3
  95. package/dist/esm/{UserContext-e8176108.js → UserContext-b33bcf21.js} +1 -3
  96. package/dist/esm/Video.js +90 -7
  97. package/dist/esm/VirtualList.js +313 -9
  98. package/dist/esm/WaterMark.js +111 -11
  99. package/dist/esm/{bem-350c1702.js → bem-3b438e61.js} +6 -3
  100. package/dist/esm/cellgroup-fcc72767.js +34 -0
  101. package/dist/esm/checkbox-44e13cd0.js +137 -0
  102. package/dist/esm/date-c7aad4c0.js +97 -0
  103. package/dist/esm/formitem-8a73a5fb.js +157 -0
  104. package/dist/esm/get-scroll-parent-5f85dee8.js +24 -0
  105. package/dist/esm/{grid.taro.context-c2bbfb4f.js → grid.context-2ee27d95.js} +2 -4
  106. package/dist/esm/icon-4ef1581c.js +70 -0
  107. package/dist/esm/index-030b7245.js +11 -0
  108. package/dist/esm/nutui-react.es.js +94 -119
  109. package/dist/esm/offsetContext-3ab00d40.js +16 -0
  110. package/dist/esm/overlay-de6c79d5.js +83 -0
  111. package/dist/esm/radio-9f141e6b.js +118 -0
  112. package/dist/esm/render-bbebb760.js +79 -0
  113. package/dist/esm/tabpane-01075e6c.js +29 -0
  114. package/dist/esm/tabs-e1b4e4b1.js +181 -0
  115. package/dist/esm/typings-f27b58f4.js +8 -0
  116. package/dist/esm/useClientRect-56bb675b.js +39 -0
  117. package/dist/esm/useTouch-cf73a407.js +99 -0
  118. package/dist/locales/base.js +1 -1
  119. package/dist/locales/en-US.js +1 -1
  120. package/dist/locales/id-ID.js +1 -1
  121. package/dist/locales/zh-CN.js +1 -1
  122. package/dist/locales/zh-TW.js +1 -1
  123. package/dist/locales/zh-UG.js +1 -1
  124. package/dist/nutui.react.mjs +15025 -13192
  125. package/dist/nutui.react.umd.js +15004 -13169
  126. package/dist/style.mjs +1 -1
  127. package/dist/types/index.d.ts +183 -176
  128. package/package.json +1 -1
  129. package/dist/esm/actionsheet.taro-e6a51446.js +0 -53
  130. package/dist/esm/address.taro-3a9b6396.js +0 -461
  131. package/dist/esm/animate.taro-fb7986d6.js +0 -40
  132. package/dist/esm/animatingnumbers.taro-03e5d61d.js +0 -104
  133. package/dist/esm/audio.taro-87ec8bf2.js +0 -161
  134. package/dist/esm/avatar.taro-3676f38f.js +0 -103
  135. package/dist/esm/avatargroup-f3574510.js +0 -34
  136. package/dist/esm/backtop.taro-66394a36.js +0 -48
  137. package/dist/esm/badge.taro-a4e59c11.js +0 -52
  138. package/dist/esm/barrage.taro-0495a1b2.js +0 -94
  139. package/dist/esm/button.taro-9244d065.js +0 -100
  140. package/dist/esm/calendar.taro-670842ea.js +0 -65
  141. package/dist/esm/calendaritem.taro-2a603571.js +0 -787
  142. package/dist/esm/can-use-dom-3eeb5af4.js +0 -6
  143. package/dist/esm/card.taro-e4c76dad.js +0 -33
  144. package/dist/esm/cascader.taro-eb1fb011.js +0 -438
  145. package/dist/esm/cell.taro-a10a74d3.js +0 -64
  146. package/dist/esm/cellgroup.taro-abe501bc.js +0 -25
  147. package/dist/esm/checkbox.taro-6120e3e3.js +0 -171
  148. package/dist/esm/circleprogress.taro-79854448.js +0 -109
  149. package/dist/esm/col.taro-53eed3cc.js +0 -41
  150. package/dist/esm/collapse.taro-1a9e4ba2.js +0 -83
  151. package/dist/esm/collapseitem-4d0bc55d.js +0 -83
  152. package/dist/esm/configprovider-67d19d3a.js +0 -19
  153. package/dist/esm/configprovider.taro-8d71eb49.js +0 -42
  154. package/dist/esm/countdown.taro-5b17c607.js +0 -226
  155. package/dist/esm/datepicker.taro-6e9b4b8f.js +0 -275
  156. package/dist/esm/dialog.taro-a3267d29.js +0 -118
  157. package/dist/esm/divider.taro-26d1d8b4.js +0 -35
  158. package/dist/esm/drag.taro-79bb8744.js +0 -110
  159. package/dist/esm/elevator.taro-6019669e.js +0 -178
  160. package/dist/esm/ellipsis.taro-f15f26da.js +0 -241
  161. package/dist/esm/empty.taro-04ae4389.js +0 -62
  162. package/dist/esm/fixednav.taro-1f05acaf.js +0 -53
  163. package/dist/esm/form.taro-0c8e7a39.js +0 -179
  164. package/dist/esm/formitem.taro-190a3326.js +0 -89
  165. package/dist/esm/get-scroll-parent-b4a07e65.js +0 -25
  166. package/dist/esm/grid.taro-3503b82c.js +0 -61
  167. package/dist/esm/griditem.taro-cdb3f119.js +0 -98
  168. package/dist/esm/icon-296a1bec.js +0 -63
  169. package/dist/esm/icon.taro-296a1bec.js +0 -63
  170. package/dist/esm/image.taro-142cf512.js +0 -64
  171. package/dist/esm/imagepreview.taro-c50bb0a3.js +0 -167
  172. package/dist/esm/index-5bcb0ff8.js +0 -7
  173. package/dist/esm/indicator.taro-cba8b010.js +0 -37
  174. package/dist/esm/infiniteloading.taro-183bccbf.js +0 -144
  175. package/dist/esm/input.taro-97af6c96.js +0 -240
  176. package/dist/esm/inputnumber.taro-91f65d17.js +0 -130
  177. package/dist/esm/layout.taro-9046d093.js +0 -11
  178. package/dist/esm/menu.taro-7e4038a1.js +0 -99
  179. package/dist/esm/menuitem.taro-96cc4f15.js +0 -130
  180. package/dist/esm/navbar.taro-777c4705.js +0 -79
  181. package/dist/esm/noticebar.taro-4a23cdee.js +0 -448
  182. package/dist/esm/notify.taro-e17c6f82.js +0 -75
  183. package/dist/esm/numberkeyboard.taro-1bc24744.js +0 -159
  184. package/dist/esm/offsetContext-c2a746fa.js +0 -5
  185. package/dist/esm/overlay.taro-21e87fb1.js +0 -69
  186. package/dist/esm/pagination.taro-715a173b.js +0 -124
  187. package/dist/esm/picker.taro-9ad1b7c5.js +0 -473
  188. package/dist/esm/popover.taro-ad5e76ea.js +0 -156
  189. package/dist/esm/popup.taro-01676bff.js +0 -137
  190. package/dist/esm/price.taro-776ed16e.js +0 -83
  191. package/dist/esm/progress.taro-f0ce38e9.js +0 -90
  192. package/dist/esm/pulltorefresh.taro-a294f656.js +0 -181
  193. package/dist/esm/radio.taro-a6eff96c.js +0 -168
  194. package/dist/esm/range.taro-d8fc7656.js +0 -332
  195. package/dist/esm/rate.taro-6cdf03bd.js +0 -75
  196. package/dist/esm/row.taro-f64d4a13.js +0 -46
  197. package/dist/esm/searchbar.taro-0c25927b.js +0 -152
  198. package/dist/esm/shortpassword.taro-9ee034f7.js +0 -111
  199. package/dist/esm/sidenavbar.taro-c307b35e.js +0 -35
  200. package/dist/esm/sidenavbaritem.taro-5a7965d0.js +0 -12
  201. package/dist/esm/signature.taro-ec4e713b.js +0 -143
  202. package/dist/esm/skeleton.taro-76faf63f.js +0 -62
  203. package/dist/esm/step.taro-b7903e8c.js +0 -59
  204. package/dist/esm/steps.taro-c82d2252.js +0 -30
  205. package/dist/esm/sticky.taro-218bda37.js +0 -138
  206. package/dist/esm/subsidenavbar.taro-69cb9752.js +0 -63
  207. package/dist/esm/supports-passive-c85ef996.js +0 -18
  208. package/dist/esm/swipe.taro-ea35f07f.js +0 -177
  209. package/dist/esm/swiper.taro-7a94e211.js +0 -451
  210. package/dist/esm/swiperitem-c9e3d0d5.js +0 -29
  211. package/dist/esm/switch.taro-34ca8228.js +0 -50
  212. package/dist/esm/tabbar.taro-9acfc2fa.js +0 -59
  213. package/dist/esm/tabbaritem.taro-bf517487.js +0 -58
  214. package/dist/esm/table.taro-91fc0c01.js +0 -93
  215. package/dist/esm/tabpane.taro-4ca340ef.js +0 -23
  216. package/dist/esm/tabs.taro-6a7524a4.js +0 -140
  217. package/dist/esm/tag.taro-23ba0834.js +0 -92
  218. package/dist/esm/textarea.taro-442e7350.js +0 -94
  219. package/dist/esm/timedetail.taro-5b2f2269.js +0 -44
  220. package/dist/esm/timepannel.taro-d6e40180.js +0 -22
  221. package/dist/esm/timeselect.taro-a07036f4.js +0 -133
  222. package/dist/esm/toast.taro-d6c14811.js +0 -109
  223. package/dist/esm/trendarrow.taro-b8c5ccd9.js +0 -73
  224. package/dist/esm/typings-b9828dba.js +0 -9
  225. package/dist/esm/uploader.taro-587e6bf3.js +0 -492
  226. package/dist/esm/useClientRect-1f8ed1fe.js +0 -18
  227. package/dist/esm/useTouch-db24bb5c.js +0 -69
  228. package/dist/esm/video-f1be8a91.js +0 -67
  229. package/dist/esm/virtuallist.taro-f0b0270d.js +0 -214
  230. package/dist/esm/watermark.taro-9ce2ae37.js +0 -114
  231. package/dist/esm/zh-CN-c779e6c1.js +0 -131
@@ -1,18 +1,673 @@
1
- import { C as Cascader } from './cascader.taro-eb1fb011.js';
2
- import 'react';
3
- import 'classnames';
4
- import './popup.taro-01676bff.js';
5
- import 'react-dom';
6
- import 'react-transition-group';
7
- import './overlay.taro-21e87fb1.js';
8
- import './bem-350c1702.js';
1
+ import _typeof from "@babel/runtime/helpers/typeof";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
5
+ import _createClass from "@babel/runtime/helpers/createClass";
6
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
7
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
9
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
10
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
11
+ 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; }
12
+ 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; }
13
+ import React__default, { useState, useEffect } from 'react';
14
+ import classNames from 'classnames';
15
+ import Popup from './Popup.js';
16
+ import { T as Tabs } from './tabs-e1b4e4b1.js';
17
+ import { T as TabPane } from './tabpane-01075e6c.js';
18
+ import { I as Icon } from './icon-4ef1581c.js';
19
+ import { c as cn } from './bem-3b438e61.js';
20
+ import './Icon.js';
21
+ import './typings-f27b58f4.js';
22
+ import './TabPane.js';
9
23
  import '@bem-react/classname';
10
- import '@tarojs/components';
11
- import './icon.taro-296a1bec.js';
12
- import './typings-b9828dba.js';
13
- import './tabs.taro-6a7524a4.js';
14
- import './tabpane.taro-4ca340ef.js';
15
-
16
-
17
-
24
+ var defaultProps$1 = {
25
+ data: {
26
+ text: '',
27
+ value: '',
28
+ paneKey: '',
29
+ disabled: false,
30
+ loading: false,
31
+ children: []
32
+ },
33
+ activeColor: '#fa2c19',
34
+ checked: false,
35
+ checkedIcon: 'checklist',
36
+ chooseItem: function chooseItem() {}
37
+ };
38
+ var InternalCascaderItem = function InternalCascaderItem(props, ref) {
39
+ var _defaultProps$1$props = _objectSpread(_objectSpread({}, defaultProps$1), props),
40
+ data = _defaultProps$1$props.data,
41
+ checked = _defaultProps$1$props.checked,
42
+ checkedIcon = _defaultProps$1$props.checkedIcon,
43
+ chooseItem = _defaultProps$1$props.chooseItem,
44
+ activeColor = _defaultProps$1$props.activeColor;
45
+ var b = cn('cascader-item');
46
+ var classes = classNames({
47
+ active: checked,
48
+ disabled: data.disabled
49
+ }, b(''));
50
+ var classesTitle = classNames(_defineProperty({}, "".concat(b(''), "__title"), true));
51
+ return React__default.createElement("div", {
52
+ style: {
53
+ color: checked ? activeColor : ''
54
+ },
55
+ className: classes,
56
+ onClick: function onClick() {
57
+ chooseItem(data);
58
+ }
59
+ }, React__default.createElement("div", {
60
+ className: classesTitle
61
+ }, data.text), data.loading ? React__default.createElement(Icon, {
62
+ color: "#969799",
63
+ className: "nut-cascader-item__icon-loading",
64
+ name: "loading"
65
+ }) : React__default.createElement(Icon, {
66
+ className: "".concat(checked ? b('icon-check') : ''),
67
+ name: checked ? checkedIcon : ''
68
+ }));
69
+ };
70
+ var CascaderItem = React__default.forwardRef(InternalCascaderItem);
71
+ CascaderItem.defaultProps = defaultProps$1;
72
+ CascaderItem.displayName = 'NutCascaderItem';
73
+ var formatTree = function formatTree(tree, parent, config) {
74
+ return tree.map(function (node) {
75
+ var _config$value = config.value,
76
+ valueKey = _config$value === void 0 ? 'value' : _config$value,
77
+ _config$text = config.text,
78
+ textKey = _config$text === void 0 ? 'text' : _config$text,
79
+ _config$children = config.children,
80
+ childrenKey = _config$children === void 0 ? 'children' : _config$children;
81
+ var value = node[valueKey],
82
+ text = node[textKey],
83
+ children = node[childrenKey],
84
+ others = _objectWithoutProperties(node, [valueKey, textKey, childrenKey].map(_toPropertyKey));
85
+ var newNode = _objectSpread(_objectSpread({
86
+ loading: false
87
+ }, others), {}, {
88
+ level: parent ? (parent && parent.level || 0) + 1 : 0,
89
+ value: value,
90
+ text: text,
91
+ children: children,
92
+ _parent: parent
93
+ });
94
+ if (newNode.children && newNode.children.length) {
95
+ newNode.children = formatTree(newNode.children, newNode, config);
96
+ }
97
+ return newNode;
98
+ });
99
+ };
100
+ var eachTree = function eachTree(tree, cb) {
101
+ var i = 0;
102
+ var node;
103
+ while (node = tree[i++]) {
104
+ if (cb(node) === true) {
105
+ break;
106
+ }
107
+ if (node.children && node.children.length) {
108
+ eachTree(node.children, cb);
109
+ }
110
+ }
111
+ };
112
+ var defaultConvertConfig = {
113
+ topId: null,
114
+ idKey: 'id',
115
+ pidKey: 'pid',
116
+ sortKey: ''
117
+ };
118
+ var convertListToOptions = function convertListToOptions(list, options) {
119
+ var mergedOptions = _objectSpread(_objectSpread({}, defaultConvertConfig), options || {});
120
+ var topId = mergedOptions.topId,
121
+ idKey = mergedOptions.idKey,
122
+ pidKey = mergedOptions.pidKey,
123
+ sortKey = mergedOptions.sortKey;
124
+ var result = [];
125
+ var map = {};
126
+ list.forEach(function (node) {
127
+ node = _objectSpread({}, node);
128
+ var _node = node,
129
+ id = _node[idKey],
130
+ pid = _node[pidKey];
131
+ var children = map[pid] = map[pid] || [];
132
+ // const children = map[pid] || []
133
+ if (!result.length && pid === topId) {
134
+ result = children;
135
+ }
136
+ children.push(node);
137
+ node.children = map[id] || (map[id] = []);
138
+ });
139
+ if (sortKey) {
140
+ Object.keys(map).forEach(function (i) {
141
+ if (map[i].length > 1) {
142
+ map[i].sort(function (a, b) {
143
+ return a[sortKey] - b[sortKey];
144
+ });
145
+ }
146
+ });
147
+ }
148
+ map = null;
149
+ return result;
150
+ };
151
+ var Tree = /*#__PURE__*/function () {
152
+ function Tree(nodes, config) {
153
+ var _this = this;
154
+ _classCallCheck(this, Tree);
155
+ _defineProperty(this, "nodes", void 0);
156
+ _defineProperty(this, "config", void 0);
157
+ _defineProperty(this, "isLeaf", function (node, lazy) {
158
+ var leaf = node.leaf,
159
+ children = node.children;
160
+ var hasChildren = Array.isArray(children) && Boolean(children.length);
161
+ return leaf || !hasChildren && !lazy;
162
+ });
163
+ _defineProperty(this, "hasChildren", function (node, lazy) {
164
+ var isLeaf = _this.isLeaf(node, lazy);
165
+ if (isLeaf) {
166
+ return false;
167
+ }
168
+ var children = node.children;
169
+ return Array.isArray(children) && Boolean(children.length);
170
+ });
171
+ this.config = _objectSpread({
172
+ value: 'value',
173
+ text: 'text',
174
+ children: 'children'
175
+ }, config || {});
176
+ this.nodes = formatTree(nodes, null, this.config);
177
+ }
178
+ _createClass(Tree, [{
179
+ key: "updateChildren",
180
+ value: function updateChildren(nodes, parent) {
181
+ if (!parent) {
182
+ this.nodes = formatTree(nodes, null, this.config);
183
+ } else {
184
+ parent.children = formatTree(nodes, parent, this.config);
185
+ }
186
+ }
187
+ // for test
188
+ }, {
189
+ key: "getNodeByValue",
190
+ value: function getNodeByValue(value) {
191
+ var foundNode;
192
+ eachTree(this.nodes, function (node) {
193
+ if (node.value === value) {
194
+ foundNode = node;
195
+ return true;
196
+ }
197
+ return null;
198
+ });
199
+ return foundNode;
200
+ }
201
+ }, {
202
+ key: "getPathNodesByValue",
203
+ value: function getPathNodesByValue(value) {
204
+ if (!value.length) {
205
+ return [];
206
+ }
207
+ var pathNodes = [];
208
+ var currentNodes = this.nodes;
209
+ while (currentNodes && currentNodes.length) {
210
+ var foundNode = currentNodes.find(function (node) {
211
+ return node.value === value[node.level];
212
+ });
213
+ if (!foundNode) {
214
+ break;
215
+ }
216
+ pathNodes.push(foundNode);
217
+ currentNodes = foundNode.children;
218
+ }
219
+ return pathNodes;
220
+ }
221
+ }]);
222
+ return Tree;
223
+ }();
224
+ var defaultProps = _objectSpread({
225
+ className: '',
226
+ style: {},
227
+ activeColor: '#fa2c19',
228
+ checkedIcon: 'checklist',
229
+ tabsColor: '',
230
+ poppable: true,
231
+ visible: false,
232
+ options: [],
233
+ value: [],
234
+ title: '',
235
+ textKey: 'text',
236
+ valueKey: 'value',
237
+ childrenKey: 'children',
238
+ convertConfig: {},
239
+ closeable: false,
240
+ closeIconPosition: 'top-right',
241
+ closeIcon: 'close',
242
+ lazy: false,
243
+ lazyLoad: function lazyLoad() {},
244
+ onClose: function onClose() {},
245
+ onChange: function onChange() {},
246
+ onPathChange: function onPathChange() {}
247
+ }, Popup.defaultProps);
248
+ var InternalCascader = function InternalCascader(props, ref) {
249
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
250
+ className = _defaultProps$props.className,
251
+ style = _defaultProps$props.style,
252
+ tabsColor = _defaultProps$props.tabsColor,
253
+ poppable = _defaultProps$props.poppable,
254
+ visible = _defaultProps$props.visible,
255
+ options = _defaultProps$props.options,
256
+ value = _defaultProps$props.value,
257
+ title = _defaultProps$props.title,
258
+ textKey = _defaultProps$props.textKey,
259
+ valueKey = _defaultProps$props.valueKey,
260
+ childrenKey = _defaultProps$props.childrenKey,
261
+ convertConfig = _defaultProps$props.convertConfig,
262
+ closeable = _defaultProps$props.closeable,
263
+ closeIconPosition = _defaultProps$props.closeIconPosition,
264
+ closeIcon = _defaultProps$props.closeIcon,
265
+ lazy = _defaultProps$props.lazy,
266
+ lazyLoad = _defaultProps$props.lazyLoad,
267
+ onClose = _defaultProps$props.onClose,
268
+ onChange = _defaultProps$props.onChange,
269
+ onPathChange = _defaultProps$props.onPathChange;
270
+ var _useState = useState('c1'),
271
+ _useState2 = _slicedToArray(_useState, 2),
272
+ tabvalue = _useState2[0],
273
+ setTabvalue = _useState2[1];
274
+ var _useState3 = useState([]),
275
+ _useState4 = _slicedToArray(_useState3, 2),
276
+ optionsData = _useState4[0],
277
+ setOptionsData = _useState4[1];
278
+ var isLazy = function isLazy() {
279
+ return state.configs.lazy && Boolean(state.configs.lazyLoad);
280
+ };
281
+ var _useState5 = useState({
282
+ optionsData: [],
283
+ panes: [{
284
+ nodes: [],
285
+ selectedNode: [],
286
+ paneKey: ''
287
+ }],
288
+ innerValue: value,
289
+ tree: new Tree([], {}),
290
+ tabsCursor: 0,
291
+ initLoading: false,
292
+ currentProcessNode: [],
293
+ configs: {
294
+ lazy: lazy,
295
+ lazyLoad: lazyLoad,
296
+ valueKey: valueKey,
297
+ textKey: textKey,
298
+ childrenKey: childrenKey,
299
+ convertConfig: convertConfig
300
+ },
301
+ lazyLoadMap: new Map()
302
+ }),
303
+ _useState6 = _slicedToArray(_useState5, 1),
304
+ state = _useState6[0];
305
+ var b = cn('cascader');
306
+ var classes = classNames(b(''));
307
+ var classesPane = classNames(_defineProperty({}, "".concat(b(''), "-pane"), true));
308
+ useEffect(function () {
309
+ initData();
310
+ }, []);
311
+ useEffect(function () {
312
+ if (value !== state.innerValue) {
313
+ state.innerValue = value;
314
+ }
315
+ }, [value]);
316
+ useEffect(function () {
317
+ initData();
318
+ }, [options]);
319
+ var initData = /*#__PURE__*/function () {
320
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
321
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
322
+ while (1) switch (_context.prev = _context.next) {
323
+ case 0:
324
+ // 初始化开始处理数据
325
+ state.lazyLoadMap.clear();
326
+ if (convertConfig && Object.keys(convertConfig).length > 0) {
327
+ state.optionsData = convertListToOptions(options, convertConfig);
328
+ } else {
329
+ state.optionsData = options;
330
+ }
331
+ state.tree = new Tree(state.optionsData, {
332
+ value: state.configs.valueKey,
333
+ text: state.configs.textKey,
334
+ children: state.configs.childrenKey
335
+ });
336
+ if (!(isLazy() && !state.tree.nodes.length)) {
337
+ _context.next = 6;
338
+ break;
339
+ }
340
+ _context.next = 6;
341
+ return invokeLazyLoad({
342
+ root: true,
343
+ loading: true,
344
+ text: '',
345
+ value: ''
346
+ });
347
+ case 6:
348
+ state.panes = [{
349
+ nodes: state.tree.nodes,
350
+ selectedNode: null,
351
+ paneKey: 'c1'
352
+ }];
353
+ syncValue();
354
+ setOptionsData(state.panes);
355
+ case 9:
356
+ case "end":
357
+ return _context.stop();
358
+ }
359
+ }, _callee);
360
+ }));
361
+ return function initData() {
362
+ return _ref.apply(this, arguments);
363
+ };
364
+ }();
365
+ // 处理有默认值时的数据
366
+ var syncValue = /*#__PURE__*/function () {
367
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
368
+ var currentValue, needToSync, parent, last, pathNodes;
369
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
370
+ while (1) switch (_context3.prev = _context3.next) {
371
+ case 0:
372
+ currentValue = state.innerValue;
373
+ if (!(currentValue === undefined || !state.tree.nodes.length)) {
374
+ _context3.next = 3;
375
+ break;
376
+ }
377
+ return _context3.abrupt("return");
378
+ case 3:
379
+ if (!(currentValue.length === 0)) {
380
+ _context3.next = 6;
381
+ break;
382
+ }
383
+ state.tabsCursor = 0;
384
+ return _context3.abrupt("return");
385
+ case 6:
386
+ needToSync = currentValue;
387
+ if (!(isLazy() && Array.isArray(currentValue) && currentValue.length)) {
388
+ _context3.next = 19;
389
+ break;
390
+ }
391
+ needToSync = [];
392
+ parent = state.tree.nodes.find(function (node) {
393
+ return node.value === currentValue[0];
394
+ });
395
+ if (!parent) {
396
+ _context3.next = 19;
397
+ break;
398
+ }
399
+ needToSync = [parent.value];
400
+ state.initLoading = true;
401
+ _context3.next = 15;
402
+ return currentValue.slice(1).reduce( /*#__PURE__*/function () {
403
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(p, value) {
404
+ var _parent$children;
405
+ var parent, node;
406
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
407
+ while (1) switch (_context2.prev = _context2.next) {
408
+ case 0:
409
+ _context2.next = 2;
410
+ return p;
411
+ case 2:
412
+ parent = _context2.sent;
413
+ _context2.next = 5;
414
+ return invokeLazyLoad(parent);
415
+ case 5:
416
+ node = parent === null || parent === void 0 ? void 0 : (_parent$children = parent.children) === null || _parent$children === void 0 ? void 0 : _parent$children.find(function (item) {
417
+ return item.value === value;
418
+ });
419
+ if (node) {
420
+ needToSync.push(value);
421
+ }
422
+ return _context2.abrupt("return", Promise.resolve(node));
423
+ case 8:
424
+ case "end":
425
+ return _context2.stop();
426
+ }
427
+ }, _callee2);
428
+ }));
429
+ return function (_x, _x2) {
430
+ return _ref3.apply(this, arguments);
431
+ };
432
+ }(), Promise.resolve(parent));
433
+ case 15:
434
+ last = _context3.sent;
435
+ _context3.next = 18;
436
+ return invokeLazyLoad(last);
437
+ case 18:
438
+ state.initLoading = false;
439
+ case 19:
440
+ if (needToSync.length && currentValue === value) {
441
+ pathNodes = state.tree.getPathNodesByValue(needToSync);
442
+ pathNodes.forEach(function (node, index) {
443
+ state.tabsCursor = index;
444
+ // 当有默认值时,不触发 chooseItem 里的 emit 事件
445
+ _chooseItem(node, true);
446
+ });
447
+ }
448
+ case 20:
449
+ case "end":
450
+ return _context3.stop();
451
+ }
452
+ }, _callee3);
453
+ }));
454
+ return function syncValue() {
455
+ return _ref2.apply(this, arguments);
456
+ };
457
+ }();
458
+ var invokeLazyLoad = /*#__PURE__*/function () {
459
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(node) {
460
+ var parent, lazyLoadPromise, nodes;
461
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
462
+ while (1) switch (_context4.prev = _context4.next) {
463
+ case 0:
464
+ if (node) {
465
+ _context4.next = 2;
466
+ break;
467
+ }
468
+ return _context4.abrupt("return");
469
+ case 2:
470
+ if (state.configs.lazyLoad) {
471
+ _context4.next = 5;
472
+ break;
473
+ }
474
+ node.leaf = true;
475
+ return _context4.abrupt("return");
476
+ case 5:
477
+ if (!(state.tree.isLeaf(node, isLazy()) || state.tree.hasChildren(node, isLazy()))) {
478
+ _context4.next = 7;
479
+ break;
480
+ }
481
+ return _context4.abrupt("return");
482
+ case 7:
483
+ node.loading = true;
484
+ parent = node.root ? null : node;
485
+ lazyLoadPromise = state.lazyLoadMap.get(node);
486
+ if (!lazyLoadPromise) {
487
+ lazyLoadPromise = new Promise(function (resolve) {
488
+ var _state$configs$lazyLo, _state$configs;
489
+ // 外部必须resolve
490
+ (_state$configs$lazyLo = (_state$configs = state.configs).lazyLoad) === null || _state$configs$lazyLo === void 0 ? void 0 : _state$configs$lazyLo.call(_state$configs, node, resolve);
491
+ });
492
+ state.lazyLoadMap.set(node, lazyLoadPromise);
493
+ }
494
+ _context4.next = 13;
495
+ return lazyLoadPromise;
496
+ case 13:
497
+ nodes = _context4.sent;
498
+ if (Array.isArray(nodes) && nodes.length > 0) {
499
+ state.tree.updateChildren(nodes, parent);
500
+ } else {
501
+ // 如果加载完成后没有提供子节点,作为叶子节点处理
502
+ node.leaf = true;
503
+ }
504
+ node.loading = false;
505
+ state.lazyLoadMap["delete"](node);
506
+ case 17:
507
+ case "end":
508
+ return _context4.stop();
509
+ }
510
+ }, _callee4);
511
+ }));
512
+ return function invokeLazyLoad(_x3) {
513
+ return _ref4.apply(this, arguments);
514
+ };
515
+ }();
516
+ var close = function close() {
517
+ onClose && onClose();
518
+ };
519
+ var closePopup = function closePopup() {
520
+ close();
521
+ };
522
+ /* type: 是否是静默模式,是的话不触发事件
523
+ tabsCursor: tab的索引 */
524
+ var _chooseItem = /*#__PURE__*/function () {
525
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(node, type) {
526
+ var pathNodes, optionParams, level, _pathNodes, _optionParams;
527
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
528
+ while (1) switch (_context5.prev = _context5.next) {
529
+ case 0:
530
+ if (!(!type && node.disabled || !state.panes[state.tabsCursor])) {
531
+ _context5.next = 2;
532
+ break;
533
+ }
534
+ return _context5.abrupt("return");
535
+ case 2:
536
+ if (!state.tree.isLeaf(node, isLazy())) {
537
+ _context5.next = 10;
538
+ break;
539
+ }
540
+ node.leaf = true;
541
+ state.panes[state.tabsCursor].selectedNode = node;
542
+ state.panes = state.panes.slice(0, node.level + 1);
543
+ if (!type) {
544
+ pathNodes = state.panes.map(function (item) {
545
+ return item.selectedNode;
546
+ });
547
+ optionParams = pathNodes.map(function (item) {
548
+ return item.value;
549
+ });
550
+ onChange(optionParams, pathNodes);
551
+ onPathChange(optionParams, pathNodes);
552
+ }
553
+ setOptionsData(state.panes);
554
+ close();
555
+ return _context5.abrupt("return");
556
+ case 10:
557
+ if (!state.tree.hasChildren(node, isLazy())) {
558
+ _context5.next = 20;
559
+ break;
560
+ }
561
+ level = node.level + 1;
562
+ state.panes[state.tabsCursor].selectedNode = node;
563
+ state.panes = state.panes.slice(0, level);
564
+ state.tabsCursor = level;
565
+ state.panes.push({
566
+ nodes: node.children || [],
567
+ selectedNode: null,
568
+ paneKey: "c".concat(state.tabsCursor + 1)
569
+ });
570
+ setTabvalue("c".concat(state.tabsCursor + 1));
571
+ setOptionsData(state.panes);
572
+ if (!type) {
573
+ _pathNodes = state.panes.map(function (item) {
574
+ return item.selectedNode;
575
+ });
576
+ _optionParams = _pathNodes.map(function (item) {
577
+ return item === null || item === void 0 ? void 0 : item.value;
578
+ });
579
+ onPathChange(_optionParams, _pathNodes);
580
+ }
581
+ return _context5.abrupt("return");
582
+ case 20:
583
+ state.currentProcessNode = node;
584
+ if (!node.loading) {
585
+ _context5.next = 23;
586
+ break;
587
+ }
588
+ return _context5.abrupt("return");
589
+ case 23:
590
+ _context5.next = 25;
591
+ return invokeLazyLoad(node);
592
+ case 25:
593
+ if (state.currentProcessNode === node) {
594
+ state.panes[state.tabsCursor].selectedNode = node;
595
+ _chooseItem(node, type);
596
+ }
597
+ setOptionsData(state.panes);
598
+ case 27:
599
+ case "end":
600
+ return _context5.stop();
601
+ }
602
+ }, _callee5);
603
+ }));
604
+ return function chooseItem(_x4, _x5) {
605
+ return _ref5.apply(this, arguments);
606
+ };
607
+ }();
608
+ var renderItem = function renderItem() {
609
+ return React__default.createElement("div", {
610
+ className: "".concat(classes, " ").concat(className),
611
+ style: style
612
+ }, poppable && React__default.createElement("div", {
613
+ className: b('title')
614
+ }, title), React__default.createElement(Tabs, {
615
+ value: tabvalue,
616
+ titleNode: function titleNode() {
617
+ return optionsData.map(function (pane, index) {
618
+ var _pane$selectedNode, _pane$selectedNode2;
619
+ return React__default.createElement("div", {
620
+ onClick: function onClick() {
621
+ setTabvalue(pane.paneKey);
622
+ state.tabsCursor = index;
623
+ },
624
+ className: "nut-tabs__titles-item ".concat(tabvalue === pane.paneKey ? 'active' : ''),
625
+ key: pane.paneKey
626
+ }, React__default.createElement("span", {
627
+ className: "nut-tabs__titles-item__text"
628
+ }, !state.initLoading && state.panes.length && (pane === null || pane === void 0 ? void 0 : (_pane$selectedNode = pane.selectedNode) === null || _pane$selectedNode === void 0 ? void 0 : _pane$selectedNode.text), !state.initLoading && state.panes.length && !(pane !== null && pane !== void 0 && (_pane$selectedNode2 = pane.selectedNode) !== null && _pane$selectedNode2 !== void 0 && _pane$selectedNode2.text) && '请选择', !(!state.initLoading && state.panes.length) && 'Loading...'), React__default.createElement("span", {
629
+ className: "nut-tabs__titles-item__line",
630
+ style: {
631
+ background: tabsColor
632
+ }
633
+ }));
634
+ });
635
+ }
636
+ }, !state.initLoading && state.panes.length ? optionsData.map(function (pane) {
637
+ return React__default.createElement(TabPane, {
638
+ key: pane.paneKey,
639
+ paneKey: pane.paneKey
640
+ }, React__default.createElement("div", {
641
+ className: classesPane
642
+ }, pane.nodes && pane.nodes.map(function (node, index) {
643
+ var _pane$selectedNode3;
644
+ return React__default.createElement(CascaderItem, _objectSpread(_objectSpread({
645
+ key: index
646
+ }, props), {}, {
647
+ data: node,
648
+ checked: ((_pane$selectedNode3 = pane.selectedNode) === null || _pane$selectedNode3 === void 0 ? void 0 : _pane$selectedNode3.value) === node.value,
649
+ chooseItem: function chooseItem(node) {
650
+ return _chooseItem(node, false);
651
+ }
652
+ }));
653
+ })));
654
+ }) : React__default.createElement(TabPane, null, React__default.createElement("div", {
655
+ className: classesPane
656
+ }))));
657
+ };
658
+ return React__default.createElement(React__default.Fragment, null, poppable ? React__default.createElement(Popup, {
659
+ popClass: "cascadar-popup",
660
+ visible: visible,
661
+ position: "bottom",
662
+ round: true,
663
+ closeable: closeable,
664
+ closeIconPosition: closeIconPosition,
665
+ closeIcon: closeIcon,
666
+ onClickOverlay: closePopup,
667
+ onClickCloseIcon: closePopup
668
+ }, renderItem()) : renderItem());
669
+ };
670
+ var Cascader = React__default.forwardRef(InternalCascader);
671
+ Cascader.defaultProps = defaultProps;
672
+ Cascader.displayName = 'NutCascader';
18
673
  export { Cascader as default };