@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,14 +1,676 @@
1
- import { C as CalendarItem } from './calendaritem.taro-2a603571.js';
2
- import 'react';
3
- import 'classnames';
4
- import '@tarojs/components';
5
- import './bem-350c1702.js';
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ 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; }
5
+ 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; }
6
+ import React__default, { useState, useRef, useEffect } from 'react';
7
+ import classNames from 'classnames';
8
+ import { c as cn } from './bem-3b438e61.js';
9
+ import { U as Utils } from './date-c7aad4c0.js';
10
+ import { useConfig } from './ConfigProvider.js';
6
11
  import '@bem-react/classname';
7
- import './configprovider.taro-8d71eb49.js';
8
- import 'lodash.kebabcase';
9
- import './zh-CN-c779e6c1.js';
10
- import '@tarojs/taro';
11
-
12
-
13
-
12
+ function requestAniFrame() {
13
+ if (typeof window !== 'undefined') {
14
+ return window.requestAnimationFrame || function (callback) {
15
+ window.setTimeout(callback, 1000 / 60);
16
+ };
17
+ }
18
+ return function (callback) {
19
+ setTimeout(callback, 1000 / 60);
20
+ };
21
+ }
22
+ var requestAniFrame$1 = requestAniFrame();
23
+ var defaultProps = {
24
+ type: 'one',
25
+ isAutoBackFill: false,
26
+ poppable: true,
27
+ visible: false,
28
+ title: '日历选择',
29
+ defaultValue: '',
30
+ startDate: Utils.getDay(0),
31
+ endDate: Utils.getDay(365),
32
+ showToday: true,
33
+ startText: '开始',
34
+ endText: '结束',
35
+ confirmText: '确认',
36
+ showTitle: true,
37
+ showSubTitle: true,
38
+ toDateAnimation: true,
39
+ onBtn: undefined,
40
+ onDay: undefined,
41
+ onTopInfo: undefined,
42
+ onBottomInfo: undefined,
43
+ onChoose: function onChoose(data) {},
44
+ onUpdate: function onUpdate() {},
45
+ onSelected: function onSelected(data) {},
46
+ onYearMonthChange: function onYearMonthChange(data) {}
47
+ };
48
+ var CalendarItem = React__default.forwardRef(function (props, ref) {
49
+ var _classNames, _classNames2;
50
+ var _useConfig = useConfig(),
51
+ locale = _useConfig.locale;
52
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
53
+ type = _defaultProps$props.type,
54
+ isAutoBackFill = _defaultProps$props.isAutoBackFill,
55
+ poppable = _defaultProps$props.poppable,
56
+ title = _defaultProps$props.title,
57
+ defaultValue = _defaultProps$props.defaultValue,
58
+ showToday = _defaultProps$props.showToday,
59
+ startText = _defaultProps$props.startText,
60
+ endText = _defaultProps$props.endText,
61
+ confirmText = _defaultProps$props.confirmText,
62
+ showTitle = _defaultProps$props.showTitle,
63
+ showSubTitle = _defaultProps$props.showSubTitle,
64
+ toDateAnimation = _defaultProps$props.toDateAnimation,
65
+ onBtn = _defaultProps$props.onBtn,
66
+ onDay = _defaultProps$props.onDay,
67
+ onTopInfo = _defaultProps$props.onTopInfo,
68
+ onBottomInfo = _defaultProps$props.onBottomInfo,
69
+ onChoose = _defaultProps$props.onChoose,
70
+ onUpdate = _defaultProps$props.onUpdate,
71
+ onSelected = _defaultProps$props.onSelected,
72
+ onYearMonthChange = _defaultProps$props.onYearMonthChange;
73
+ var weeks = locale.calendaritem.weekdays;
74
+ var _useState = useState(''),
75
+ _useState2 = _slicedToArray(_useState, 2),
76
+ yearMonthTitle = _useState2[0],
77
+ setYearMonthTitle = _useState2[1];
78
+ var _useState3 = useState([]),
79
+ _useState4 = _slicedToArray(_useState3, 2),
80
+ monthsData = _useState4[0],
81
+ setMonthsData = _useState4[1];
82
+ var _useState5 = useState(0),
83
+ _useState6 = _slicedToArray(_useState5, 2),
84
+ translateY = _useState6[0],
85
+ setTranslateY = _useState6[1];
86
+ var _useState7 = useState([]),
87
+ _useState8 = _slicedToArray(_useState7, 2),
88
+ monthDefaultRange = _useState8[0],
89
+ setMonthDefaultRange = _useState8[1];
90
+ var _useState9 = useState({
91
+ currDate: '',
92
+ propStartDate: '',
93
+ propEndDate: '',
94
+ unLoadPrev: false,
95
+ touchParams: {
96
+ startY: 0,
97
+ endY: 0,
98
+ startTime: 0,
99
+ endTime: 0,
100
+ lastY: 0,
101
+ lastTime: 0
102
+ },
103
+ transformY: 0,
104
+ scrollDistance: 0,
105
+ defaultData: [],
106
+ chooseData: [],
107
+ monthsData: [],
108
+ dayPrefix: 'calendar-month-day',
109
+ startData: '',
110
+ endData: '',
111
+ isRange: props.type === 'range',
112
+ timer: 0,
113
+ currentIndex: 0,
114
+ avgHeight: 0,
115
+ monthsNum: 0
116
+ }),
117
+ _useState10 = _slicedToArray(_useState9, 1),
118
+ state = _useState10[0];
119
+ var weeksPanel = useRef(null);
120
+ var months = useRef(null);
121
+ var monthsPanel = useRef(null);
122
+ var viewArea = useRef(null);
123
+ var viewHeight = 0;
124
+ var b = cn('calendar');
125
+ var classes = classNames((_classNames = {}, _defineProperty(_classNames, "".concat(b(''), "-tile"), !poppable), _defineProperty(_classNames, "".concat(b(''), "-nofooter"), !!isAutoBackFill), _classNames), b(''));
126
+ var headerClasses = classNames((_classNames2 = {}, _defineProperty(_classNames2, "".concat(b(''), "-header"), true), _defineProperty(_classNames2, "".concat(b(''), "-header-tile"), !poppable), _classNames2));
127
+ var monthitemclasses = classNames(_defineProperty({
128
+ 'calendar-month-item': true
129
+ }, "".concat(type === 'range' ? 'month-item-range' : ''), true));
130
+ var splitDate = function splitDate(date) {
131
+ return date.split('-');
132
+ };
133
+ var isStart = function isStart(currDate) {
134
+ return Utils.isEqual(state.currDate[0], currDate);
135
+ };
136
+ var isEnd = function isEnd(currDate) {
137
+ return Utils.isEqual(state.currDate[1], currDate);
138
+ };
139
+ var isMultiple = function isMultiple(currDate) {
140
+ if (state.currDate.length > 0) {
141
+ return state.currDate.some(function (item) {
142
+ return Utils.isEqual(item, currDate);
143
+ });
144
+ }
145
+ return false;
146
+ };
147
+ var getCurrDate = function getCurrDate(day, month) {
148
+ return "".concat(month.curData[0], "-").concat(month.curData[1], "-").concat(Utils.getNumTwoBit(+day.day));
149
+ };
150
+ var getClass = function getClass(day, month) {
151
+ var currDate = getCurrDate(day, month);
152
+ if (day.type === 'curr') {
153
+ if (Utils.isEqual(state.currDate, currDate) || type === 'range' && (isStart(currDate) || isEnd(currDate)) || type === 'multiple' && isMultiple(currDate)) {
154
+ return "".concat(state.dayPrefix, "-active");
155
+ }
156
+ if (state.propStartDate && Utils.compareDate(currDate, state.propStartDate) || state.propEndDate && Utils.compareDate(state.propEndDate, currDate)) {
157
+ return "".concat(state.dayPrefix, "-disabled");
158
+ }
159
+ if (type === 'range' && Array.isArray(state.currDate) && Object.values(state.currDate).length === 2 && Utils.compareDate(state.currDate[0], currDate) && Utils.compareDate(currDate, state.currDate[1])) {
160
+ return "".concat(state.dayPrefix, "-choose");
161
+ }
162
+ return null;
163
+ }
164
+ return "".concat(state.dayPrefix, "-disabled");
165
+ };
166
+ var isActive = function isActive(day, month) {
167
+ return state.isRange && day.type === 'curr' && getClass(day, month) === 'calendar-month-day-active';
168
+ };
169
+ var isCurrDay = function isCurrDay(month, day) {
170
+ var date = "".concat(month.curData[0], "-").concat(month.curData[1], "-").concat(day);
171
+ return Utils.isEqual(date, Utils.date2Str(new Date()));
172
+ };
173
+ var confirm = function confirm() {
174
+ var type = props.type;
175
+ if (type === 'range' && state.chooseData.length === 2 || type !== 'range') {
176
+ var chooseData = state.chooseData.slice(0);
177
+ onChoose && onChoose(chooseData);
178
+ if (poppable) {
179
+ onUpdate && onUpdate();
180
+ }
181
+ }
182
+ };
183
+ var chooseDay = function chooseDay(day, month, isFirst) {
184
+ if (getClass(day, month) !== "".concat(state.dayPrefix, "-disabled")) {
185
+ var _type = props.type;
186
+ var days = _toConsumableArray(month.curData);
187
+ days[2] = typeof day.day === 'number' ? Utils.getNumTwoBit(day.day) : day.day;
188
+ days[3] = "".concat(days[0], "-").concat(days[1], "-").concat(days[2]);
189
+ days[4] = Utils.getWhatDay(+days[0], +days[1], +days[2]);
190
+ if (_type === 'multiple') {
191
+ if (state.currDate.length > 0) {
192
+ var hasIndex = '';
193
+ state.currDate.forEach(function (item, index) {
194
+ if (item === days[3]) {
195
+ hasIndex = index;
196
+ }
197
+ });
198
+ if (isFirst) {
199
+ state.chooseData.push(_toConsumableArray(days));
200
+ } else if (hasIndex !== '') {
201
+ state.currDate.splice(hasIndex, 1);
202
+ state.chooseData.splice(hasIndex, 1);
203
+ } else {
204
+ state.currDate.push(days[3]);
205
+ state.chooseData.push(_toConsumableArray(days));
206
+ }
207
+ } else {
208
+ state.currDate = [days[3]];
209
+ state.chooseData = [_toConsumableArray(days)];
210
+ }
211
+ } else if (_type === 'range') {
212
+ var curDataLength = Object.values(state.currDate).length;
213
+ if (curDataLength === 2 || curDataLength === 0) {
214
+ state.currDate = [days[3]];
215
+ } else if (Utils.compareDate(state.currDate[0], days[3])) {
216
+ Array.isArray(state.currDate) && state.currDate.push(days[3]);
217
+ } else {
218
+ Array.isArray(state.currDate) && state.currDate.unshift(days[3]);
219
+ }
220
+ if (state.chooseData.length === 2 || !state.chooseData.length) {
221
+ state.chooseData = [_toConsumableArray(days)];
222
+ } else if (Utils.compareDate(state.chooseData[0][3], days[3])) {
223
+ state.chooseData = [].concat(_toConsumableArray(state.chooseData), [_toConsumableArray(days)]);
224
+ } else {
225
+ state.chooseData = [_toConsumableArray(days)].concat(_toConsumableArray(state.chooseData));
226
+ }
227
+ } else {
228
+ state.currDate = days[3];
229
+ state.chooseData = _toConsumableArray(days);
230
+ }
231
+ if (!isFirst) {
232
+ // 点击日期 触发
233
+ onSelected && onSelected(state.chooseData);
234
+ if (isAutoBackFill || !poppable) {
235
+ confirm();
236
+ }
237
+ }
238
+ setMonthsData(state.monthsData.slice());
239
+ }
240
+ };
241
+ var isStartTip = function isStartTip(day, month) {
242
+ return isActive(day, month) && isStart(getCurrDate(day, month));
243
+ };
244
+ // 是否有结束提示
245
+ var isEndTip = function isEndTip(day, month) {
246
+ if (state.currDate.length >= 2 && isEnd(getCurrDate(day, month))) {
247
+ return isActive(day, month);
248
+ }
249
+ return false;
250
+ };
251
+ // 开始结束时间是否相等
252
+ var rangeTip = function rangeTip() {
253
+ if (state.currDate.length >= 2) {
254
+ return Utils.isEqual(state.currDate[0], state.currDate[1]);
255
+ }
256
+ return false;
257
+ };
258
+ // 获取当前月数据
259
+ var getCurrData = function getCurrData(type) {
260
+ var monthData = type === 'prev' ? state.monthsData[0] : state.monthsData[state.monthsData.length - 1];
261
+ var year = parseInt(monthData.curData[0]);
262
+ var month = parseInt(monthData.curData[1].toString().replace(/^0/, ''));
263
+ switch (type) {
264
+ case 'prev':
265
+ month === 1 && (year -= 1);
266
+ month = month === 1 ? 12 : --month;
267
+ break;
268
+ case 'next':
269
+ month === 12 && (year += 1);
270
+ month = month === 12 ? 1 : ++month;
271
+ break;
272
+ }
273
+ return [year, Utils.getNumTwoBit(month), Utils.getMonthDays(String(year), String(month))];
274
+ };
275
+ // 获取日期状态
276
+ var getDaysStatus = function getDaysStatus(days, type, dateInfo) {
277
+ // 修复:当某个月的1号是周日时,月份下方会空出来一行
278
+ var year = dateInfo.year,
279
+ month = dateInfo.month;
280
+ if (type === 'prev' && days >= 7) {
281
+ days -= 7;
282
+ }
283
+ return Array.from(Array(days), function (v, k) {
284
+ return {
285
+ day: k + 1,
286
+ type: type,
287
+ year: year,
288
+ month: month
289
+ };
290
+ });
291
+ };
292
+ // 获取上一个月的最后一周天数,填充当月空白
293
+ var getPreDaysStatus = function getPreDaysStatus(days, type, dateInfo, preCurrMonthDays) {
294
+ // 修复:当某个月的1号是周日时,月份下方会空出来一行
295
+ var year = dateInfo.year,
296
+ month = dateInfo.month;
297
+ if (type === 'prev' && days >= 7) {
298
+ days -= 7;
299
+ }
300
+ var months = Array.from(Array(preCurrMonthDays), function (v, k) {
301
+ return {
302
+ day: k + 1,
303
+ type: type,
304
+ year: year,
305
+ month: month
306
+ };
307
+ });
308
+ return months.slice(preCurrMonthDays - days);
309
+ };
310
+ // 获取月数据
311
+ var getMonth = function getMonth(curData, type) {
312
+ var preMonthDays = Utils.getMonthPreDay(+curData[0], +curData[1]);
313
+ var preMonth = +curData[1] - 1;
314
+ var preYear = curData[0];
315
+ if (preMonth <= 0) {
316
+ preMonth = 12;
317
+ preYear += 1;
318
+ }
319
+ var currMonthDays = Utils.getMonthDays(curData[0], curData[1]);
320
+ var preCurrMonthDays = Utils.getMonthDays("".concat(preYear), "".concat(preMonth));
321
+ var title = {
322
+ year: curData[0],
323
+ month: curData[1]
324
+ };
325
+ var monthInfo = {
326
+ curData: curData,
327
+ title: locale.calendaritem.monthTitle(title.year, title.month),
328
+ monthData: [].concat(_toConsumableArray(getPreDaysStatus(preMonthDays, 'prev', {
329
+ month: preMonth,
330
+ year: preYear
331
+ }, preCurrMonthDays)), _toConsumableArray(getDaysStatus(currMonthDays, 'curr', title)))
332
+ };
333
+ monthInfo.cssHeight = 39 + (monthInfo.monthData.length > 35 ? 384 : 320);
334
+ var cssScrollHeight = 0;
335
+ if (state.monthsData.length > 0) {
336
+ cssScrollHeight = state.monthsData[state.monthsData.length - 1].cssScrollHeight + state.monthsData[state.monthsData.length - 1].cssHeight;
337
+ }
338
+ monthInfo.cssScrollHeight = cssScrollHeight;
339
+ if (type === 'next') {
340
+ if (!state.endData || !Utils.compareDate("".concat(state.endData[0], "-").concat(state.endData[1], "-").concat(Utils.getMonthDays(state.endData[0], state.endData[1])), "".concat(curData[0], "-").concat(curData[1], "-").concat(curData[2]))) {
341
+ state.monthsData.push(monthInfo);
342
+ }
343
+ } else if (!state.startData || !Utils.compareDate("".concat(curData[0], "-").concat(curData[1], "-").concat(curData[2]), "".concat(state.startData[0], "-").concat(state.startData[1], "-01"))) {
344
+ state.monthsData.unshift(monthInfo);
345
+ }
346
+ setMonthsData(state.monthsData);
347
+ };
348
+ var setReachedYearMonthInfo = function setReachedYearMonthInfo() {
349
+ var currentMonthsData = state.monthsData[state.currentIndex];
350
+ var _currentMonthsData$cu = _slicedToArray(currentMonthsData.curData, 2),
351
+ year = _currentMonthsData$cu[0],
352
+ month = _currentMonthsData$cu[1];
353
+ if (currentMonthsData.title === yearMonthTitle) return;
354
+ onYearMonthChange && onYearMonthChange([year, month, "".concat(year, "-").concat(month)]);
355
+ setYearMonthTitle(currentMonthsData.title);
356
+ };
357
+ var setDefaultRange = function setDefaultRange(monthsNum, current) {
358
+ var start = 0;
359
+ var end = 0;
360
+ if (monthsNum >= 3) {
361
+ if (current > 0 && current < monthsNum) {
362
+ start = current - 1;
363
+ end = current + 3;
364
+ } else if (current === 0) {
365
+ start = current;
366
+ end = current + 4;
367
+ } else if (current === monthsNum) {
368
+ start = current - 2;
369
+ end = current + 2;
370
+ }
371
+ } else {
372
+ start = 0;
373
+ end = monthsNum + 2;
374
+ }
375
+ setMonthDefaultRange([start, end]);
376
+ setTranslateY(state.monthsData[start].cssScrollHeight);
377
+ };
378
+ var monthsViewScroll = function monthsViewScroll(e) {
379
+ if (state.monthsData.length <= 1) {
380
+ return;
381
+ }
382
+ var target = e.target;
383
+ var currentScrollTop = target.scrollTop;
384
+ var current = Math.floor(currentScrollTop / state.avgHeight);
385
+ if (current === 0) {
386
+ if (currentScrollTop >= state.monthsData[current + 1].cssScrollHeight) {
387
+ current += 1;
388
+ }
389
+ } else if (current > 0 && current < state.monthsNum - 1) {
390
+ if (currentScrollTop >= state.monthsData[current + 1].cssScrollHeight) {
391
+ current += 1;
392
+ }
393
+ if (currentScrollTop < state.monthsData[current].cssScrollHeight) {
394
+ current -= 1;
395
+ }
396
+ } else {
397
+ var viewPosition = Math.round(currentScrollTop + viewHeight);
398
+ if (viewPosition < state.monthsData[current].cssScrollHeight + state.monthsData[current].cssHeight && currentScrollTop > state.monthsData[current - 1].cssScrollHeight) {
399
+ current -= 1;
400
+ }
401
+ if (current + 1 <= state.monthsNum && viewPosition >= state.monthsData[current + 1].cssScrollHeight + state.monthsData[current + 1].cssHeight) {
402
+ current += 1;
403
+ }
404
+ if (current >= 1 && currentScrollTop < state.monthsData[current - 1].cssScrollHeight) {
405
+ current -= 1;
406
+ }
407
+ }
408
+ if (state.currentIndex !== current) {
409
+ state.currentIndex = current;
410
+ setDefaultRange(state.monthsNum, current);
411
+ }
412
+ setReachedYearMonthInfo();
413
+ };
414
+ var initData = function initData() {
415
+ // 初始化开始结束数据
416
+ var propStartDate = props.startDate ? props.startDate : Utils.getDay(0);
417
+ var propEndDate = props.endDate ? props.endDate : Utils.getDay(365);
418
+ state.propStartDate = propStartDate;
419
+ state.propEndDate = propEndDate;
420
+ state.startData = splitDate(propStartDate);
421
+ state.endData = splitDate(propEndDate);
422
+ // 根据是否存在默认时间,初始化当前日期
423
+ if (defaultValue || Array.isArray(defaultValue) && defaultValue.length > 0) {
424
+ state.currDate = props.type !== 'one' ? _toConsumableArray(props.defaultValue) : props.defaultValue;
425
+ }
426
+ // 判断时间范围内存在多少个月
427
+ var startDate = {
428
+ year: Number(state.startData[0]),
429
+ month: Number(state.startData[1])
430
+ };
431
+ var endDate = {
432
+ year: Number(state.endData[0]),
433
+ month: Number(state.endData[1])
434
+ };
435
+ var monthsNum = endDate.month - startDate.month;
436
+ if (endDate.year - startDate.year > 0) {
437
+ monthsNum += 12 * (endDate.year - startDate.year);
438
+ }
439
+ if (monthsNum <= 0) {
440
+ monthsNum = 1;
441
+ }
442
+ // 设置月份数据
443
+ getMonth(state.startData, 'next');
444
+ var i = 1;
445
+ do {
446
+ getMonth(getCurrData('next'), 'next');
447
+ } while (i++ < monthsNum);
448
+ state.monthsNum = monthsNum;
449
+ // 日期转化为数组,限制初始日期。判断时间范围
450
+ if (type === 'range' && Array.isArray(state.currDate)) {
451
+ if (state.currDate.length > 0) {
452
+ if (propStartDate && Utils.compareDate(state.currDate[0], propStartDate)) {
453
+ state.currDate.splice(0, 1, propStartDate);
454
+ }
455
+ if (propEndDate && Utils.compareDate(propEndDate, state.currDate[1])) {
456
+ state.currDate.splice(1, 1, propEndDate);
457
+ }
458
+ state.defaultData = [].concat(_toConsumableArray(splitDate(state.currDate[0])), _toConsumableArray(splitDate(state.currDate[1])));
459
+ }
460
+ } else if (props.type === 'multiple' && Array.isArray(state.currDate)) {
461
+ if (state.currDate.length > 0) {
462
+ var defaultArr = [];
463
+ var obj = {};
464
+ state.currDate.forEach(function (item) {
465
+ if (propStartDate && !Utils.compareDate(item, propStartDate) && propEndDate && !Utils.compareDate(propEndDate, item)) {
466
+ if (!Object.hasOwnProperty.call(obj, item)) {
467
+ defaultArr.push(item);
468
+ obj[item] = item;
469
+ }
470
+ }
471
+ });
472
+ state.currDate = [].concat(defaultArr);
473
+ state.defaultData = _toConsumableArray(splitDate(defaultArr[0]));
474
+ }
475
+ } else if (state.currDate) {
476
+ if (propStartDate && Utils.compareDate(state.currDate, propStartDate)) {
477
+ state.currDate = propStartDate;
478
+ } else if (propEndDate && !Utils.compareDate(state.currDate, propEndDate)) {
479
+ state.currDate = propEndDate;
480
+ }
481
+ state.defaultData = _toConsumableArray(splitDate(state.currDate));
482
+ }
483
+ // 设置默认可见区域
484
+ var current = 0;
485
+ var lastCurrent = 0;
486
+ if (state.defaultData.length > 0) {
487
+ state.monthsData.forEach(function (item, index) {
488
+ if (item.title === locale.calendaritem.monthTitle(state.defaultData[0], state.defaultData[1])) {
489
+ current = index;
490
+ }
491
+ if (props.type === 'range') {
492
+ if (item.title === locale.calendaritem.monthTitle(state.defaultData[3], state.defaultData[4])) {
493
+ lastCurrent = index;
494
+ }
495
+ }
496
+ });
497
+ } else {
498
+ // 当 defaultValue 为空时,如果月份列表包含当月,则默认定位到当月
499
+ var currentYear = new Date().getFullYear();
500
+ var currentMonth = new Date().getMonth() + 1;
501
+ var currentYearMonthIndex = state.monthsData.findIndex(function (item) {
502
+ return +item.curData[0] === currentYear && +item.curData[1] === currentMonth;
503
+ });
504
+ if (currentYearMonthIndex > -1) {
505
+ current = currentYearMonthIndex;
506
+ }
507
+ }
508
+ setDefaultRange(monthsNum, current);
509
+ state.currentIndex = current;
510
+ setReachedYearMonthInfo();
511
+ if (state.defaultData.length > 0) {
512
+ // 设置当前选中日期
513
+ if (type === 'range') {
514
+ chooseDay({
515
+ day: state.defaultData[2],
516
+ type: 'curr'
517
+ }, state.monthsData[state.currentIndex], true);
518
+ chooseDay({
519
+ day: state.defaultData[5],
520
+ type: 'curr'
521
+ }, state.monthsData[lastCurrent], true);
522
+ } else if (type === 'multiple') {
523
+ _toConsumableArray(state.currDate).forEach(function (item) {
524
+ var dateArr = splitDate(item);
525
+ var current = state.currentIndex;
526
+ state.monthsData.forEach(function (item, index) {
527
+ if (item.title === locale.calendaritem.monthTitle(dateArr[0], dateArr[1])) {
528
+ current = index;
529
+ }
530
+ });
531
+ chooseDay({
532
+ day: dateArr[2],
533
+ type: 'curr'
534
+ }, state.monthsData[current], true);
535
+ });
536
+ } else {
537
+ chooseDay({
538
+ day: state.defaultData[2],
539
+ type: 'curr'
540
+ }, state.monthsData[state.currentIndex], true);
541
+ }
542
+ }
543
+ var lastItem = state.monthsData[state.monthsData.length - 1];
544
+ var containerHeight = lastItem.cssHeight + lastItem.cssScrollHeight;
545
+ requestAniFrame$1(function () {
546
+ // 初始化 日历位置
547
+ if (months && monthsPanel && viewArea) {
548
+ viewHeight = months.current.clientHeight;
549
+ monthsPanel.current.style.height = "".concat(containerHeight, "px");
550
+ months.current.scrollTop = state.monthsData[state.currentIndex].cssScrollHeight;
551
+ }
552
+ });
553
+ state.avgHeight = Math.floor(containerHeight / (monthsNum + 1));
554
+ };
555
+ var resetRender = function resetRender() {
556
+ state.chooseData.splice(0);
557
+ state.monthsData.splice(0);
558
+ initData();
559
+ };
560
+ // 暴露出的API
561
+ var scrollToDate = function scrollToDate(date) {
562
+ if (Utils.compareDate(date, state.propStartDate)) {
563
+ date = state.propStartDate;
564
+ } else if (!Utils.compareDate(date, state.propEndDate)) {
565
+ date = state.propEndDate;
566
+ }
567
+ var dateArr = splitDate(date);
568
+ state.monthsData.forEach(function (item, index) {
569
+ if (item.title === locale.calendaritem.monthTitle(dateArr[0], dateArr[1])) {
570
+ if (months.current) {
571
+ var distance = state.monthsData[index].cssScrollHeight - months.current.scrollTop;
572
+ if (toDateAnimation) {
573
+ var flag = 0;
574
+ var interval = setInterval(function () {
575
+ flag++;
576
+ if (months.current) {
577
+ var offset = distance / 10;
578
+ months.current.scrollTop += offset;
579
+ }
580
+ if (flag >= 10) {
581
+ clearInterval(interval);
582
+ if (months.current) {
583
+ months.current.scrollTop = state.monthsData[index].cssScrollHeight;
584
+ }
585
+ }
586
+ }, 40);
587
+ } else {
588
+ months.current.scrollTop = state.monthsData[index].cssScrollHeight;
589
+ }
590
+ }
591
+ }
592
+ });
593
+ };
594
+ useEffect(function () {
595
+ initData();
596
+ }, []);
597
+ useEffect(function () {
598
+ poppable && resetRender();
599
+ }, [defaultValue]);
600
+ React__default.useImperativeHandle(ref, function () {
601
+ return {
602
+ scrollToDate: scrollToDate
603
+ };
604
+ });
605
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
606
+ className: classes
607
+ }, React__default.createElement("div", {
608
+ className: headerClasses
609
+ }, showTitle && React__default.createElement("div", {
610
+ className: "calendar-title"
611
+ }, title || locale.calendaritem.title), onBtn && React__default.createElement("div", {
612
+ className: "calendar-top-slot"
613
+ }, onBtn()), showSubTitle && React__default.createElement("div", {
614
+ className: "calendar-curr-month"
615
+ }, yearMonthTitle), React__default.createElement("div", {
616
+ className: "calendar-weeks",
617
+ ref: weeksPanel
618
+ }, weeks.map(function (item) {
619
+ return React__default.createElement("div", {
620
+ className: "calendar-week-item",
621
+ key: item
622
+ }, item);
623
+ }))), React__default.createElement("div", {
624
+ className: "nut-calendar-content",
625
+ onScroll: monthsViewScroll,
626
+ ref: months
627
+ }, React__default.createElement("div", {
628
+ className: "calendar-months-panel",
629
+ ref: monthsPanel
630
+ }, React__default.createElement("div", {
631
+ className: "viewArea",
632
+ ref: viewArea,
633
+ style: {
634
+ transform: "translateY(".concat(translateY, "px)")
635
+ }
636
+ }, state.monthsData.slice(monthDefaultRange[0], monthDefaultRange[1]).map(function (month, key) {
637
+ return React__default.createElement("div", {
638
+ className: "calendar-month",
639
+ key: key
640
+ }, React__default.createElement("div", {
641
+ className: "calendar-month-title"
642
+ }, month.title), React__default.createElement("div", {
643
+ className: "calendar-month-con"
644
+ }, React__default.createElement("div", {
645
+ className: monthitemclasses
646
+ }, month.monthData.map(function (day, i) {
647
+ return React__default.createElement("div", {
648
+ className: ['calendar-month-day', getClass(day, month)].join(' '),
649
+ onClick: function onClick() {
650
+ chooseDay(day, month);
651
+ },
652
+ key: i
653
+ }, React__default.createElement("div", {
654
+ className: "calendar-day"
655
+ }, onDay ? onDay(day) : day.day), onTopInfo && React__default.createElement("div", {
656
+ className: "calendar-curr-tips calendar-curr-tips-top"
657
+ }, onTopInfo(day)), onBottomInfo && React__default.createElement("div", {
658
+ className: "calendar-curr-tips calendar-curr-tips-bottom"
659
+ }, onBottomInfo(day)), !onBottomInfo && showToday && isCurrDay(month, day.day) && React__default.createElement("div", {
660
+ className: "calendar-curr-tip-curr"
661
+ }, locale.calendaritem.today), isStartTip(day, month) && React__default.createElement("div", {
662
+ className: "calendar-day-tip ".concat(rangeTip() ? 'calendar-curr-tips-top' : '')
663
+ }, startText || locale.calendaritem.start), isEndTip(day, month) && React__default.createElement("div", {
664
+ className: "calendar-day-tip"
665
+ }, endText || locale.calendaritem.end));
666
+ }))));
667
+ })))), poppable && !isAutoBackFill ? React__default.createElement("div", {
668
+ className: "nut-calendar-footer"
669
+ }, React__default.createElement("div", {
670
+ className: "calendar-confirm-btn",
671
+ onClick: confirm
672
+ }, confirmText || locale.confirm)) : ''));
673
+ });
674
+ CalendarItem.defaultProps = defaultProps;
675
+ CalendarItem.displayName = 'NutCalendarItem';
14
676
  export { CalendarItem as default };