@nutui/nutui-react-taro 1.4.4 → 1.4.5

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 (219) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/esm/Address.js +5 -5
  3. package/dist/esm/Audio.js +5 -5
  4. package/dist/esm/AvatarContext-7153ad2b.js +3 -1
  5. package/dist/esm/AvatarGroup.js +4 -4
  6. package/dist/esm/Calendar.js +5 -5
  7. package/dist/esm/CalendarItem.js +4 -4
  8. package/dist/esm/Card.js +4 -3
  9. package/dist/esm/Cell.js +2 -2
  10. package/dist/esm/ConfigProvider.js +3 -3
  11. package/dist/esm/CountDown.js +4 -4
  12. package/dist/esm/DatePicker.js +5 -5
  13. package/dist/esm/Dialog.js +4 -4
  14. package/dist/esm/Ellipsis.js +4 -4
  15. package/dist/esm/Empty.js +4 -4
  16. package/dist/esm/FixedNav.js +4 -4
  17. package/dist/esm/Form.js +4 -4
  18. package/dist/esm/FormItem.js +3 -3
  19. package/dist/esm/Grid.js +4 -4
  20. package/dist/esm/GridItem.js +4 -4
  21. package/dist/esm/Image.js +4 -4
  22. package/dist/esm/Infiniteloading.js +4 -4
  23. package/dist/esm/Input.js +4 -4
  24. package/dist/esm/MenuItem.js +4 -4
  25. package/dist/esm/NoticeBar.js +2 -2
  26. package/dist/esm/NumberKeyboard.js +4 -4
  27. package/dist/esm/Pagination.js +4 -4
  28. package/dist/esm/Picker.js +4 -4
  29. package/dist/esm/PullToRefresh.js +4 -4
  30. package/dist/esm/Range.js +4 -4
  31. package/dist/esm/SearchBar.js +4 -4
  32. package/dist/esm/ShortPassword.js +4 -4
  33. package/dist/esm/SideNavBar.js +4 -4
  34. package/dist/esm/Signature.js +4 -4
  35. package/dist/esm/Sticky.js +4 -4
  36. package/dist/esm/Table.js +4 -4
  37. package/dist/esm/Tag.js +3 -2
  38. package/dist/esm/TextArea.js +4 -4
  39. package/dist/esm/TimeDetail.js +4 -4
  40. package/dist/esm/TimePannel.js +4 -4
  41. package/dist/esm/TimeSelect.js +6 -6
  42. package/dist/esm/Uploader.js +4 -4
  43. package/dist/esm/UserContext-68f62e66.js +3 -1
  44. package/dist/esm/UserContext-b4181162.js +3 -1
  45. package/dist/esm/UserContext-be8097d2.js +3 -1
  46. package/dist/esm/VirtualList.js +6 -4
  47. package/dist/esm/WaterMark.js +4 -4
  48. package/dist/esm/actionsheet.taro-a58d3d12.js +45 -83
  49. package/dist/esm/address.taro-79cc7c96.js +461 -0
  50. package/dist/esm/animate.taro-b0e83dd5.js +32 -46
  51. package/dist/esm/animatingnumbers.taro-6f40a2e9.js +93 -134
  52. package/dist/esm/audio.taro-4fadc583.js +161 -0
  53. package/dist/esm/avatar.taro-85ced995.js +93 -119
  54. package/dist/esm/avatargroup-1d900174.js +34 -0
  55. package/dist/esm/backtop.taro-99107c30.js +39 -62
  56. package/dist/esm/badge.taro-fe9171ec.js +40 -58
  57. package/dist/esm/barrage.taro-0e157b5e.js +61 -91
  58. package/dist/esm/bem-893ad28d.js +3 -6
  59. package/dist/esm/button.taro-4ce133b9.js +87 -98
  60. package/dist/esm/calendar.taro-4ed72058.js +38 -0
  61. package/dist/esm/calendaritem.taro-1ebe428d.js +571 -0
  62. package/dist/esm/card.taro-39055e82.js +32 -0
  63. package/dist/esm/cascader.taro-d8cb1c3e.js +397 -636
  64. package/dist/esm/cell.taro-9a04a92e.js +64 -0
  65. package/dist/esm/cellgroup.taro-e094471c.js +18 -27
  66. package/dist/esm/checkbox.taro-0bda9796.js +160 -232
  67. package/dist/esm/circleprogress.taro-47db537c.js +99 -120
  68. package/dist/esm/col.taro-b61c7cba.js +33 -50
  69. package/dist/esm/collapse.taro-af58206c.js +73 -86
  70. package/dist/esm/collapseitem-ce1849d2.js +75 -139
  71. package/dist/esm/configprovider-5eea4f5d.js +19 -0
  72. package/dist/esm/configprovider.taro-26882dd2.js +42 -0
  73. package/dist/esm/countdown.taro-9e40de9c.js +225 -0
  74. package/dist/esm/datepicker.taro-7220e495.js +270 -0
  75. package/dist/esm/dialog.taro-1c03960e.js +123 -0
  76. package/dist/esm/divider.taro-5236fe6a.js +27 -27
  77. package/dist/esm/drag.taro-82b6b27a.js +99 -138
  78. package/dist/esm/elevator.taro-d7d65470.js +185 -259
  79. package/dist/esm/ellipsis.taro-49b6db0c.js +232 -0
  80. package/dist/esm/empty.taro-7bd813f9.js +62 -0
  81. package/dist/esm/fixednav.taro-5ad15202.js +53 -0
  82. package/dist/esm/form.taro-71d32671.js +179 -0
  83. package/dist/esm/formitem.taro-3089489b.js +89 -0
  84. package/dist/esm/grid.taro-e6decfce.js +58 -0
  85. package/dist/esm/grid.taro.context-39636af9.js +4 -2
  86. package/dist/esm/griditem.taro-4cade72e.js +90 -0
  87. package/dist/esm/icon-8dc4de10.js +43 -51
  88. package/dist/esm/icon.taro-1d0d4fb7.js +43 -51
  89. package/dist/esm/image.taro-e6dc5867.js +64 -0
  90. package/dist/esm/imagepreview.taro-3400ea03.js +158 -205
  91. package/dist/esm/index.taro-a36f96fb.js +149 -210
  92. package/dist/esm/indicator.taro-183ea169.js +29 -43
  93. package/dist/esm/infiniteloading.taro-6c2a2e95.js +142 -0
  94. package/dist/esm/input.taro-fd566407.js +243 -0
  95. package/dist/esm/inputnumber.taro-dc39b853.js +129 -177
  96. package/dist/esm/layout.taro-358f014f.js +6 -9
  97. package/dist/esm/menu.taro-4abed328.js +89 -132
  98. package/dist/esm/menuitem.taro-6e8b27c3.js +130 -0
  99. package/dist/esm/navbar.taro-c931c078.js +69 -105
  100. package/dist/esm/noticebar.taro-69ea7673.js +450 -0
  101. package/dist/esm/notify.taro-308e5892.js +66 -97
  102. package/dist/esm/numberkeyboard.taro-194519e4.js +158 -0
  103. package/dist/esm/nutui-react.es.js +44 -44
  104. package/dist/esm/offsetContext-bfb02c25.js +3 -1
  105. package/dist/esm/overlay.taro-98367bc1.js +59 -74
  106. package/dist/esm/pagination.taro-bb490de9.js +124 -0
  107. package/dist/esm/picker.taro-2a8ded7c.js +420 -0
  108. package/dist/esm/popover.taro-46d813e8.js +132 -222
  109. package/dist/esm/popup.taro-cb777e09.js +125 -178
  110. package/dist/esm/price.taro-8801462e.js +75 -86
  111. package/dist/esm/progress.taro-623bc807.js +84 -118
  112. package/dist/esm/pulltorefresh.taro-cab7b51c.js +221 -0
  113. package/dist/esm/range.taro-5d6ff217.js +332 -0
  114. package/dist/esm/rate.taro-10197384.js +64 -111
  115. package/dist/esm/row.taro-37a895de.js +38 -42
  116. package/dist/esm/searchbar.taro-839dd622.js +148 -0
  117. package/dist/esm/shortpassword.taro-182d46f7.js +111 -0
  118. package/dist/esm/sidenavbar.taro-006cf38b.js +35 -0
  119. package/dist/esm/sidenavbaritem.taro-fee11d26.js +9 -22
  120. package/dist/esm/signature.taro-33632585.js +143 -0
  121. package/dist/esm/skeleton.taro-853ce460.js +51 -88
  122. package/dist/esm/step.taro-1c94e067.js +49 -78
  123. package/dist/esm/steps.taro-acf205a0.js +21 -30
  124. package/dist/esm/sticky.taro-d0553f48.js +13 -0
  125. package/dist/esm/subsidenavbar.taro-f46b4c73.js +58 -75
  126. package/dist/esm/swipe.taro-83bc248f.js +164 -254
  127. package/dist/esm/swiper.taro-852f6615.js +424 -505
  128. package/dist/esm/swiperitem-86a3578a.js +20 -28
  129. package/dist/esm/switch.taro-bae2dca0.js +43 -64
  130. package/dist/esm/tabbar.taro-86cece39.js +47 -57
  131. package/dist/esm/tabbaritem.taro-8dfb8055.js +51 -79
  132. package/dist/esm/table.taro-cb4dd2c3.js +92 -0
  133. package/dist/esm/tabpane.taro-91cd6cf4.js +17 -22
  134. package/dist/esm/tabs.taro-e71875fa.js +121 -165
  135. package/dist/esm/tag.taro-00fe554d.js +89 -0
  136. package/dist/esm/textarea.taro-42600f8c.js +74 -0
  137. package/dist/esm/timedetail.taro-c5f564fd.js +44 -0
  138. package/dist/esm/timepannel.taro-29f9dd86.js +22 -0
  139. package/dist/esm/timeselect.taro-3ecce65d.js +133 -0
  140. package/dist/esm/toast.taro-0804b6b4.js +99 -137
  141. package/dist/esm/trendarrow.taro-5a7153e4.js +63 -90
  142. package/dist/esm/types/src/packages/cell/cell.taro.d.ts +0 -1
  143. package/dist/esm/types/src/packages/noticebar/noticebar.d.ts +5 -4
  144. package/dist/esm/types/src/packages/noticebar/noticebar.taro.d.ts +5 -4
  145. package/dist/esm/types/src/packages/uploader/uploader.d.ts +1 -1
  146. package/dist/esm/types/src/packages/virtuallist/virtuallist.taro.d.ts +13 -2
  147. package/dist/esm/typings-1c5f2628.js +7 -6
  148. package/dist/esm/uploader.taro-f80d76d9.js +392 -0
  149. package/dist/esm/useClientRect-bf69d7b3.js +5 -25
  150. package/dist/esm/useTouch-a2ea68c6.js +63 -93
  151. package/dist/esm/video-8a3518c5.js +59 -83
  152. package/dist/esm/virtuallist.taro-e3345ced.js +215 -0
  153. package/dist/esm/watermark.taro-cd9db98a.js +114 -0
  154. package/dist/esm/zh-CN-dfc384d0.js +128 -133
  155. package/dist/locales/base.js +1 -1
  156. package/dist/locales/en-US.js +1 -1
  157. package/dist/locales/id-ID.js +1 -1
  158. package/dist/locales/zh-CN.js +1 -1
  159. package/dist/locales/zh-TW.js +1 -1
  160. package/dist/locales/zh-UG.js +1 -1
  161. package/dist/nutui.react.es.js +634 -5664
  162. package/dist/nutui.react.umd.js +634 -5664
  163. package/dist/packages/noticebar/noticebar.scss +17 -0
  164. package/dist/packages/radio/radio.scss +3 -1
  165. package/dist/packages/row/row.scss +2 -0
  166. package/dist/packages/searchbar/searchbar.scss +1 -1
  167. package/dist/packages/tag/tag.scss +13 -5
  168. package/dist/packages/virtuallist/virtuallist.scss +24 -0
  169. package/dist/style.css +1 -1
  170. package/dist/style.es.js +1 -1
  171. package/dist/styles/temp.scss +2340 -0
  172. package/dist/styles/theme-dark.scss +7 -0
  173. package/dist/styles/theme-default.scss +11 -0
  174. package/dist/styles/variables.scss +1945 -710
  175. package/dist/types/index.d.ts +16 -23
  176. package/package.json +9 -4
  177. package/dist/esm/address.taro-1e2aea24.js +0 -615
  178. package/dist/esm/audio.taro-fddcdfc0.js +0 -228
  179. package/dist/esm/avatargroup-f7f600ff.js +0 -42
  180. package/dist/esm/calendar.taro-72974415.js +0 -83
  181. package/dist/esm/calendaritem.taro-84e889eb.js +0 -580
  182. package/dist/esm/card.taro-a530dfb3.js +0 -61
  183. package/dist/esm/cell.taro-cf50c4f2.js +0 -109
  184. package/dist/esm/configprovider-c7d60e20.js +0 -18
  185. package/dist/esm/configprovider.taro-8bdb3a28.js +0 -50
  186. package/dist/esm/countdown.taro-d7dc8681.js +0 -246
  187. package/dist/esm/datepicker.taro-7199f521.js +0 -304
  188. package/dist/esm/dialog.taro-f54cfbf0.js +0 -187
  189. package/dist/esm/ellipsis.taro-c0de6ff4.js +0 -309
  190. package/dist/esm/empty.taro-dbc66496.js +0 -81
  191. package/dist/esm/fixednav.taro-9e759320.js +0 -97
  192. package/dist/esm/form.taro-880014b1.js +0 -181
  193. package/dist/esm/formitem.taro-3695f4a7.js +0 -136
  194. package/dist/esm/grid.taro-c2cc12d6.js +0 -81
  195. package/dist/esm/griditem.taro-892153cd.js +0 -122
  196. package/dist/esm/image.taro-c30973d5.js +0 -105
  197. package/dist/esm/infiniteloading.taro-b5ddf3cc.js +0 -188
  198. package/dist/esm/input.taro-104130c1.js +0 -361
  199. package/dist/esm/menuitem.taro-216e9f7d.js +0 -193
  200. package/dist/esm/noticebar.taro-94002898.js +0 -368
  201. package/dist/esm/numberkeyboard.taro-5e8f0ddf.js +0 -245
  202. package/dist/esm/pagination.taro-9925ffab.js +0 -169
  203. package/dist/esm/picker.taro-3b5cc054.js +0 -540
  204. package/dist/esm/pulltorefresh.taro-f26a20dd.js +0 -302
  205. package/dist/esm/range.taro-c41e9b90.js +0 -469
  206. package/dist/esm/searchbar.taro-01ed4ea4.js +0 -236
  207. package/dist/esm/shortpassword.taro-3a3bf412.js +0 -190
  208. package/dist/esm/sidenavbar.taro-06026f31.js +0 -66
  209. package/dist/esm/signature.taro-17648cac.js +0 -192
  210. package/dist/esm/sticky.taro-36013e97.js +0 -16
  211. package/dist/esm/table.taro-adda6622.js +0 -139
  212. package/dist/esm/tag.taro-bd900990.js +0 -104
  213. package/dist/esm/textarea.taro-83d5fe73.js +0 -102
  214. package/dist/esm/timedetail.taro-105f5380.js +0 -68
  215. package/dist/esm/timepannel.taro-c66c63dd.js +0 -30
  216. package/dist/esm/timeselect.taro-fc7ec6ee.js +0 -172
  217. package/dist/esm/uploader.taro-a1edf38f.js +0 -529
  218. package/dist/esm/virtuallist.taro-4add61c3.js +0 -315
  219. package/dist/esm/watermark.taro-323d1cf3.js +0 -132
@@ -0,0 +1,38 @@
1
+ import React__default from 'react';
2
+ import { P as Popup } from './popup.taro-cb777e09.js';
3
+ import { U as Utils, C as CalendarItem } from './calendaritem.taro-1ebe428d.js';
4
+ import { u as useConfig } from './configprovider.taro-26882dd2.js';
5
+
6
+ const defaultProps = {
7
+ type: 'one',
8
+ isAutoBackFill: false,
9
+ poppable: true,
10
+ visible: false,
11
+ title: '日历选择',
12
+ defaultValue: '',
13
+ startDate: Utils.getDay(0),
14
+ endDate: Utils.getDay(365),
15
+ onClose: () => { },
16
+ onChoose: (param) => { },
17
+ };
18
+ const Calendar = (props) => {
19
+ const { locale } = useConfig();
20
+ const { children, poppable, visible, type, isAutoBackFill, title, defaultValue, startDate, endDate, onClose, onChoose, } = { ...defaultProps, ...props };
21
+ const close = () => {
22
+ onClose && onClose();
23
+ };
24
+ const update = () => { };
25
+ const choose = (param) => {
26
+ close();
27
+ onChoose && onChoose(param);
28
+ };
29
+ const closePopup = () => {
30
+ close();
31
+ };
32
+ return (React__default.createElement(React__default.Fragment, null, poppable ? (React__default.createElement(Popup, { visible: visible, position: "bottom", round: true, duration: 0.5, closeable: true, destroyOnClose: true, onClickOverlay: closePopup, onClickCloseIcon: closePopup, style: { height: '85vh' } },
33
+ React__default.createElement(CalendarItem, { type: type, isAutoBackFill: isAutoBackFill, poppable: poppable, title: locale.calendaritem.title || title, defaultValue: defaultValue, startDate: startDate, endDate: endDate, onUpdate: update, onClose: close, onChoose: choose }))) : (React__default.createElement(CalendarItem, { type: type, isAutoBackFill: isAutoBackFill, poppable: poppable, title: locale.calendaritem.title, defaultValue: defaultValue, startDate: startDate, endDate: endDate, onClose: close, onChoose: choose }))));
34
+ };
35
+ Calendar.defaultProps = defaultProps;
36
+ Calendar.displayName = 'NutCalendar';
37
+
38
+ export { Calendar as C };
@@ -0,0 +1,571 @@
1
+ import React__default, { useState, useRef, useEffect } from 'react';
2
+ import classNames from 'classnames';
3
+ import { c as cn } from './bem-893ad28d.js';
4
+ import { u as useConfig } from './configprovider.taro-26882dd2.js';
5
+ import { g as getRectByTaro } from './useClientRect-bf69d7b3.js';
6
+
7
+ const Utils = {
8
+ /**
9
+ * 是否为闫年
10
+ * @return {Boolse} true|false
11
+ */
12
+ isLeapYear(y) {
13
+ return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
14
+ },
15
+ /**
16
+ * 返回星期数
17
+ * @return {String}
18
+ */
19
+ getWhatDay(year, month, day) {
20
+ const date = new Date(`${year}/${month}/${day}`);
21
+ const index = date.getDay();
22
+ const dayNames = [
23
+ '星期日',
24
+ '星期一',
25
+ '星期二',
26
+ '星期三',
27
+ '星期四',
28
+ '星期五',
29
+ '星期六',
30
+ ];
31
+ return dayNames[index];
32
+ },
33
+ /**
34
+ * 返回星期数
35
+ * @return {Number}
36
+ */
37
+ getMonthPreDay(year, month) {
38
+ const date = new Date(`${year}/${month}/01`);
39
+ let day = date.getDay();
40
+ if (day == 0) {
41
+ day = 7;
42
+ }
43
+ return day;
44
+ },
45
+ /**
46
+ * 返回月份天数
47
+ * @return {Number}
48
+ */
49
+ getMonthDays(year, month) {
50
+ if (/^0/.test(month)) {
51
+ month = month.split('')[1];
52
+ }
53
+ return [
54
+ 0,
55
+ 31,
56
+ this.isLeapYear(Number(year)) ? 29 : 28,
57
+ 31,
58
+ 30,
59
+ 31,
60
+ 30,
61
+ 31,
62
+ 31,
63
+ 30,
64
+ 31,
65
+ 30,
66
+ 31,
67
+ ][month];
68
+ },
69
+ /**
70
+ * 补齐数字位数
71
+ * @return {string}
72
+ */
73
+ getNumTwoBit(n) {
74
+ n = Number(n);
75
+ return (n > 9 ? '' : '0') + n;
76
+ },
77
+ /**
78
+ * 日期对象转成字符串
79
+ * @return {string}
80
+ */
81
+ date2Str(date, split) {
82
+ split = split || '-';
83
+ const y = date.getFullYear();
84
+ const m = this.getNumTwoBit(date.getMonth() + 1);
85
+ const d = this.getNumTwoBit(date.getDate());
86
+ return [y, m, d].join(split);
87
+ },
88
+ /**
89
+ * 返回日期格式字符串
90
+ * @param {Number} 0返回今天的日期、1返回明天的日期,2返回后天得日期,依次类推
91
+ * @return {string} '2014-12-31'
92
+ */
93
+ getDay(i) {
94
+ i = i || 0;
95
+ let date = new Date();
96
+ const diff = i * (1000 * 60 * 60 * 24);
97
+ date = new Date(date.getTime() + diff);
98
+ return this.date2Str(date);
99
+ },
100
+ /**
101
+ * 时间比较
102
+ * @return {Boolean}
103
+ */
104
+ compareDate(date1, date2) {
105
+ const startTime = new Date(date1.replace('-', '/').replace('-', '/'));
106
+ const endTime = new Date(date2.replace('-', '/').replace('-', '/'));
107
+ if (startTime >= endTime) {
108
+ return false;
109
+ }
110
+ return true;
111
+ },
112
+ /**
113
+ * 时间是否相等
114
+ * @return {Boolean}
115
+ */
116
+ isEqual(date1, date2) {
117
+ const startTime = new Date(date1).getTime();
118
+ const endTime = new Date(date2).getTime();
119
+ if (startTime == endTime) {
120
+ return true;
121
+ }
122
+ return false;
123
+ },
124
+ };
125
+
126
+ function requestAniFrame() {
127
+ if (typeof window !== 'undefined') {
128
+ return (window.requestAnimationFrame ||
129
+ function (callback) {
130
+ window.setTimeout(callback, 1000 / 60);
131
+ });
132
+ }
133
+ return function (callback) {
134
+ setTimeout(callback, 1000 / 60);
135
+ };
136
+ }
137
+ var requestAniFrame$1 = requestAniFrame();
138
+
139
+ const defaultProps = {
140
+ type: 'one',
141
+ isAutoBackFill: false,
142
+ poppable: true,
143
+ visible: false,
144
+ title: '日历选择',
145
+ defaultValue: '',
146
+ startDate: Utils.getDay(0),
147
+ endDate: Utils.getDay(365),
148
+ onChoose: (data) => { },
149
+ onUpdate: () => { },
150
+ onClose: () => { },
151
+ };
152
+ const CalendarItem = (props) => {
153
+ const { locale } = useConfig();
154
+ const { type, isAutoBackFill, poppable, title, defaultValue, startDate, endDate, onChoose, onUpdate, onClose, } = { ...defaultProps, ...props };
155
+ const weeks = locale.calendaritem.weekdays;
156
+ const [yearMonthTitle, setYearMonthTitle] = useState('');
157
+ const [unLoadPrev, setUnLoadPrev] = useState(false);
158
+ const [monthsData, setMonthsData] = useState([]);
159
+ const [state] = useState({
160
+ currDate: '',
161
+ touchParams: {
162
+ startY: 0,
163
+ endY: 0,
164
+ startTime: 0,
165
+ endTime: 0,
166
+ lastY: 0,
167
+ lastTime: 0,
168
+ },
169
+ transformY: 0,
170
+ translateY: 0,
171
+ scrollDistance: 0,
172
+ defaultData: [],
173
+ chooseData: [],
174
+ monthsData: [],
175
+ dayPrefix: 'calendar-month-day',
176
+ startData: '',
177
+ endData: '',
178
+ isRange: type === 'range',
179
+ timer: 0,
180
+ });
181
+ const weeksPanel = useRef(null);
182
+ const months = useRef(null);
183
+ const monthsPanel = useRef(null);
184
+ const b = cn('calendar');
185
+ const classes = classNames({
186
+ [`${b('')}-tile`]: !poppable,
187
+ [`${b('')}-nofooter`]: !!isAutoBackFill,
188
+ }, b(''));
189
+ const headerClasses = classNames({
190
+ [`${b('')}-header`]: true,
191
+ [`${b('')}-header-tile`]: !poppable,
192
+ });
193
+ const monthitemclasses = classNames({
194
+ 'calendar-month-item': true,
195
+ [`${type === 'range' ? 'month-item-range' : ''}`]: true,
196
+ });
197
+ const splitDate = (date) => {
198
+ return date.split('-');
199
+ };
200
+ const isStart = (currDate) => {
201
+ return Utils.isEqual(state.currDate[0], currDate);
202
+ };
203
+ const isEnd = (currDate) => {
204
+ return Utils.isEqual(state.currDate[1], currDate);
205
+ };
206
+ const getCurrDate = (day, month, isRange) => {
207
+ return isRange
208
+ ? `${month.curData[3]}-${month.curData[4]}-${Utils.getNumTwoBit(+day.day)}`
209
+ : `${month.curData[0]}-${month.curData[1]}-${Utils.getNumTwoBit(+day.day)}`;
210
+ };
211
+ const getClass = (day, month, isRange) => {
212
+ const currDate = getCurrDate(day, month, isRange);
213
+ if (day.type === 'curr') {
214
+ if ((!state.isRange && Utils.isEqual(state.currDate, currDate)) ||
215
+ (state.isRange && (isStart(currDate) || isEnd(currDate)))) {
216
+ return `${state.dayPrefix}-active`;
217
+ }
218
+ if ((startDate && Utils.compareDate(currDate, startDate)) ||
219
+ (endDate && Utils.compareDate(endDate, currDate))) {
220
+ return `${state.dayPrefix}-disabled`;
221
+ }
222
+ if (state.isRange &&
223
+ Array.isArray(state.currDate) &&
224
+ Object.values(state.currDate).length === 2 &&
225
+ Utils.compareDate(state.currDate[0], currDate) &&
226
+ Utils.compareDate(currDate, state.currDate[1])) {
227
+ return `${state.dayPrefix}-choose`;
228
+ }
229
+ return null;
230
+ }
231
+ return `${state.dayPrefix}-disabled`;
232
+ };
233
+ const isActive = (day, month) => {
234
+ return (state.isRange &&
235
+ day.type === 'curr' &&
236
+ getClass(day, month) === 'calendar-month-day-active');
237
+ };
238
+ const isCurrDay = (month, day) => {
239
+ const date = `${month.curData[0]}-${month.curData[1]}-${day}`;
240
+ return Utils.isEqual(date, Utils.date2Str(new Date()));
241
+ };
242
+ const confirm = () => {
243
+ if ((state.isRange && state.chooseData.length === 2) || !state.isRange) {
244
+ onChoose && onChoose(state.chooseData);
245
+ if (poppable) {
246
+ onUpdate && onUpdate();
247
+ }
248
+ }
249
+ };
250
+ const chooseDay = (day, month, isFirst, isRange) => {
251
+ if (getClass(day, month, isRange) !== `${state.dayPrefix}-disabled`) {
252
+ let days = [...month.curData];
253
+ days = isRange ? days.splice(3) : days.splice(0, 3);
254
+ days[2] =
255
+ typeof day.day === 'number' ? Utils.getNumTwoBit(day.day) : day.day;
256
+ days[3] = `${days[0]}-${days[1]}-${days[2]}`;
257
+ days[4] = Utils.getWhatDay(+days[0], +days[1], +days[2]);
258
+ if (!state.isRange) {
259
+ state.currDate = days[3];
260
+ state.chooseData = [...days];
261
+ }
262
+ else {
263
+ if (Object.values(state.currDate).length === 2) {
264
+ state.currDate = [days[3]];
265
+ }
266
+ else if (Utils.compareDate(state.currDate[0], days[3])) {
267
+ Array.isArray(state.currDate) && state.currDate.push(days[3]);
268
+ }
269
+ else {
270
+ Array.isArray(state.currDate) && state.currDate.unshift(days[3]);
271
+ }
272
+ if (state.chooseData.length === 2 || !state.chooseData.length) {
273
+ state.chooseData = [...days];
274
+ }
275
+ else if (Utils.compareDate(state.chooseData[3], days[3])) {
276
+ state.chooseData = [[...state.chooseData], [...days]];
277
+ }
278
+ else {
279
+ state.chooseData = [[...days], [...state.chooseData]];
280
+ }
281
+ }
282
+ if (isAutoBackFill && !isFirst) {
283
+ confirm();
284
+ }
285
+ setMonthsData(state.monthsData.slice());
286
+ }
287
+ };
288
+ const isStartTip = (day, month) => {
289
+ if (isActive(day, month)) {
290
+ return isStart(getCurrDate(day, month));
291
+ }
292
+ return false;
293
+ };
294
+ // 是否有结束提示
295
+ const isEndTip = (day, month) => {
296
+ if (isStartTip(day, month)) {
297
+ return false;
298
+ }
299
+ return isActive(day, month);
300
+ };
301
+ // 获取当前月数据
302
+ const getCurrData = (type) => {
303
+ const monthData = type === 'prev'
304
+ ? state.monthsData[0]
305
+ : state.monthsData[state.monthsData.length - 1];
306
+ let year = parseInt(monthData.curData[0]);
307
+ let month = parseInt(monthData.curData[1].toString().replace(/^0/, ''));
308
+ switch (type) {
309
+ case 'prev':
310
+ month === 1 && (year -= 1);
311
+ month = month === 1 ? 12 : --month;
312
+ break;
313
+ case 'next':
314
+ month === 12 && (year += 1);
315
+ month = month === 12 ? 1 : ++month;
316
+ break;
317
+ }
318
+ return [
319
+ year,
320
+ Utils.getNumTwoBit(month),
321
+ Utils.getMonthDays(String(year), String(month)),
322
+ ];
323
+ };
324
+ // 获取日期状态
325
+ const getDaysStatus = (days, type) => {
326
+ // 修复:当某个月的1号是周日时,月份下方会空出来一行
327
+ if (type === 'prev' && days >= 7) {
328
+ days -= 7;
329
+ }
330
+ return Array.from(Array(days), (v, k) => {
331
+ return {
332
+ day: k + 1,
333
+ type,
334
+ };
335
+ });
336
+ };
337
+ // 获取月数据
338
+ const getMonth = (curData, type) => {
339
+ const preMonthDays = Utils.getMonthPreDay(+curData[0], +curData[1]);
340
+ const currMonthDays = Utils.getMonthDays(curData[0], curData[1]);
341
+ const title = {
342
+ year: curData[0],
343
+ month: curData[1],
344
+ };
345
+ const monthInfo = {
346
+ curData,
347
+ title: locale.calendaritem.monthTitle(title.year, title.month),
348
+ monthData: [
349
+ ...getDaysStatus(preMonthDays, 'prev'),
350
+ ...getDaysStatus(currMonthDays, 'curr'),
351
+ ],
352
+ };
353
+ if (type === 'next') {
354
+ if (!state.endData ||
355
+ !Utils.compareDate(`${state.endData[0]}-${state.endData[1]}-${Utils.getMonthDays(state.endData[0], state.endData[1])}`, `${curData[0]}-${curData[1]}-${curData[2]}`)) {
356
+ state.monthsData.push(monthInfo);
357
+ }
358
+ }
359
+ else if (!state.startData ||
360
+ !Utils.compareDate(`${curData[0]}-${curData[1]}-${curData[2]}`, `${state.startData[0]}-${state.startData[1]}-01`)) {
361
+ state.monthsData.unshift(monthInfo);
362
+ }
363
+ else {
364
+ setUnLoadPrev(true);
365
+ }
366
+ setMonthsData(state.monthsData);
367
+ };
368
+ // 监听月份滚动,改变月份标题
369
+ const loadScroll = () => {
370
+ if (!props.poppable) {
371
+ return false;
372
+ }
373
+ requestAniFrame$1(async () => {
374
+ if (weeksPanel?.current && monthsPanel?.current) {
375
+ const weeksPanelRes = await getRectByTaro(weeksPanel?.current);
376
+ weeksPanelRes?.bottom;
377
+ const monthsDoms = monthsPanel.current.getElementsByClassName('calendar-month');
378
+ for (let i = 0; i < monthsDoms.length; i++) {
379
+ }
380
+ }
381
+ });
382
+ };
383
+ // 设置月份滚动距离和速度
384
+ const setTransform = (translateY = 0, type, time = 1000) => {
385
+ if (monthsPanel?.current) {
386
+ if (type === 'end') {
387
+ monthsPanel.current.style.webkitTransition = `transform ${time}ms cubic-bezier(0.19, 1, 0.22, 1)`;
388
+ clearTimeout(state.timer);
389
+ state.timer = window.setTimeout(() => {
390
+ loadScroll();
391
+ }, time);
392
+ }
393
+ else {
394
+ monthsPanel.current.style.webkitTransition = '';
395
+ loadScroll();
396
+ }
397
+ monthsPanel.current.style.webkitTransform = `translateY(${translateY}px)`;
398
+ state.scrollDistance = translateY;
399
+ }
400
+ };
401
+ // 计算滚动方向和距离
402
+ const setMove = (move, type, time) => {
403
+ let updateMove = move + state.transformY;
404
+ const h = months.current?.offsetHeight || 0;
405
+ const offsetHeight = monthsPanel.current?.offsetHeight || 0;
406
+ if (type === 'end') {
407
+ // 限定滚动距离
408
+ if (updateMove > 0) {
409
+ updateMove = 0;
410
+ }
411
+ if (updateMove < 0 && updateMove < -offsetHeight + h) {
412
+ updateMove = -offsetHeight + h;
413
+ }
414
+ if (offsetHeight <= h && state.monthsData.length === 1) {
415
+ updateMove = 0;
416
+ }
417
+ setTransform(updateMove, type, time);
418
+ }
419
+ else {
420
+ if (updateMove > 0 && updateMove > 100) {
421
+ updateMove = 100;
422
+ }
423
+ if (updateMove < -offsetHeight + h - 100 && state.monthsData.length > 1) {
424
+ updateMove = -offsetHeight + h - 100;
425
+ }
426
+ if (updateMove < 0 &&
427
+ updateMove < -100 &&
428
+ state.monthsData.length === 1) {
429
+ updateMove = -100;
430
+ }
431
+ setTransform(updateMove);
432
+ }
433
+ };
434
+ const onTouchStart = (event) => {
435
+ event.stopPropagation();
436
+ const changedTouches = event.changedTouches[0];
437
+ state.touchParams.startY = changedTouches.pageY;
438
+ state.touchParams.startTime = event.timeStamp || Date.now();
439
+ state.transformY = state.scrollDistance;
440
+ };
441
+ const onTouchMove = (event) => {
442
+ event.stopPropagation();
443
+ const changedTouches = event.changedTouches[0];
444
+ state.touchParams.lastY = changedTouches.pageY;
445
+ state.touchParams.lastTime = event.timeStamp || Date.now();
446
+ const move = state.touchParams.lastY - state.touchParams.startY;
447
+ if (Math.abs(move) < 5) {
448
+ return false;
449
+ }
450
+ setMove(move);
451
+ };
452
+ const onTouchEnd = (event) => {
453
+ event.stopPropagation();
454
+ const changedTouches = event.changedTouches[0];
455
+ state.touchParams.lastY = changedTouches.pageY;
456
+ state.touchParams.lastTime = event.timeStamp || Date.now();
457
+ let move = state.touchParams.lastY - state.touchParams.startY;
458
+ if (Math.abs(move) < 5) {
459
+ return false;
460
+ }
461
+ const updateMove = move + state.transformY;
462
+ const h = months.current?.offsetHeight || 0;
463
+ const offsetHeight = monthsPanel.current?.offsetHeight || 0;
464
+ if (updateMove > 0) {
465
+ getMonth(getCurrData('prev'), 'prev');
466
+ }
467
+ else if (updateMove < 0 &&
468
+ updateMove < -offsetHeight + (Math.abs(move) > h ? Math.abs(move) : h) * 5) {
469
+ getMonth(getCurrData('next'), 'next');
470
+ if (Math.abs(move) >= 300) {
471
+ getMonth(getCurrData('next'), 'next');
472
+ }
473
+ }
474
+ let moveTime = state.touchParams.lastTime - state.touchParams.startTime;
475
+ if (moveTime <= 300) {
476
+ move *= 2;
477
+ moveTime += 1000;
478
+ setMove(move, 'end', moveTime);
479
+ }
480
+ else {
481
+ setMove(move, 'end');
482
+ }
483
+ };
484
+ const initData = () => {
485
+ // 初始化开始结束数据
486
+ state.startData = startDate ? splitDate(startDate) : '';
487
+ state.endData = endDate ? splitDate(endDate) : '';
488
+ // 初始化当前日期
489
+ if (!defaultValue) {
490
+ state.currDate = state.isRange
491
+ ? [Utils.date2Str(new Date()), Utils.getDay(1)]
492
+ : Utils.date2Str(new Date());
493
+ }
494
+ else {
495
+ state.currDate = state.isRange ? [...defaultValue] : defaultValue;
496
+ }
497
+ // 日期转化为数组
498
+ if (state.isRange && Array.isArray(state.currDate)) {
499
+ if (startDate &&
500
+ Utils.compareDate(state.currDate[0], startDate)) {
501
+ state.currDate.splice(0, 1, startDate);
502
+ }
503
+ if (endDate && Utils.compareDate(endDate, state.currDate[1])) {
504
+ state.currDate.splice(1, 1, endDate);
505
+ }
506
+ state.defaultData = [
507
+ ...splitDate(state.currDate[0]),
508
+ ...splitDate(state.currDate[1]),
509
+ ];
510
+ }
511
+ else {
512
+ if (startDate &&
513
+ Utils.compareDate(state.currDate, startDate)) {
514
+ state.currDate = startDate;
515
+ }
516
+ else if (endDate &&
517
+ !Utils.compareDate(state.currDate, endDate)) {
518
+ state.currDate = endDate;
519
+ }
520
+ state.defaultData = [...splitDate(state.currDate)];
521
+ }
522
+ getMonth(state.defaultData, 'next');
523
+ setYearMonthTitle(state.monthsData[0].title);
524
+ let i = 1;
525
+ do {
526
+ getMonth(getCurrData('next'), 'next');
527
+ } while (i++ < 4);
528
+ if (state.isRange) {
529
+ chooseDay({ day: state.defaultData[2], type: 'curr' }, state.monthsData[0], true);
530
+ chooseDay({ day: state.defaultData[5], type: 'curr' }, state.monthsData[0], true, true);
531
+ }
532
+ else {
533
+ chooseDay({ day: state.defaultData[2], type: 'curr' }, state.monthsData[0], true);
534
+ }
535
+ };
536
+ useEffect(() => {
537
+ initData();
538
+ }, []);
539
+ return (React__default.createElement(React__default.Fragment, null,
540
+ React__default.createElement("div", { className: classes },
541
+ React__default.createElement("div", { className: headerClasses },
542
+ poppable ? (React__default.createElement(React__default.Fragment, null,
543
+ React__default.createElement("div", { className: "calendar-title" }, locale.calendaritem.title),
544
+ React__default.createElement("div", { className: "calendar-curr-month" }, yearMonthTitle))) : (''),
545
+ React__default.createElement("div", { className: "calendar-weeks", ref: weeksPanel }, weeks.map((item) => (React__default.createElement("div", { className: "calendar-week-item", key: item }, item))))),
546
+ React__default.createElement("div", { className: "nut-calendar-content", onTouchStart: onTouchStart, onTouchMove: onTouchMove, onTouchEnd: onTouchEnd, ref: months },
547
+ React__default.createElement("div", { className: "calendar-months-panel", ref: monthsPanel },
548
+ React__default.createElement("div", { className: "calendar-loading-tip" }, !unLoadPrev
549
+ ? locale.calendaritem.loadPreviousMonth
550
+ : locale.calendaritem.noEarlierMonth),
551
+ monthsData.map((month, key) => (React__default.createElement("div", { className: "calendar-month", key: key },
552
+ React__default.createElement("div", { className: "calendar-month-title" }, month.title),
553
+ React__default.createElement("div", { className: "calendar-month-con" },
554
+ React__default.createElement("div", { className: monthitemclasses }, month.monthData &&
555
+ month.monthData.map((day, index) => (React__default.createElement("div", { className: [
556
+ 'calendar-month-day',
557
+ getClass(day, month),
558
+ ].join(' '), key: index, onClick: () => {
559
+ chooseDay(day, month);
560
+ } },
561
+ React__default.createElement("div", { className: "calendar-day" }, day.type === 'curr' ? day.day : ''),
562
+ isCurrDay(month, day.day) ? (React__default.createElement("div", { className: "calendar-curr-tip-curr" }, locale.calendaritem.today)) : (''),
563
+ isStartTip(day, month) ? (React__default.createElement("div", { className: "calendar-day-tip" }, locale.calendaritem.start)) : (''),
564
+ isEndTip(day, month) ? (React__default.createElement("div", { className: "calendar-day-tip" }, locale.calendaritem.end)) : (''))))))))))),
565
+ poppable && !isAutoBackFill ? (React__default.createElement("div", { className: "nut-calendar-footer" },
566
+ React__default.createElement("div", { className: "calendar-confirm-btn", onClick: confirm }, locale.confirm))) : (''))));
567
+ };
568
+ CalendarItem.defaultProps = defaultProps;
569
+ CalendarItem.displayName = 'NutCalendarItem';
570
+
571
+ export { CalendarItem as C, Utils as U };
@@ -0,0 +1,32 @@
1
+ import React__default from 'react';
2
+ import { P as Price } from './price.taro-8801462e.js';
3
+ import { T as Tag } from './tag.taro-00fe554d.js';
4
+ import { c as cn } from './bem-893ad28d.js';
5
+
6
+ const defaultProps = {};
7
+ const Card = (props) => {
8
+ const { className, style, imgUrl, title, price, vipPrice, shopDesc, delivery, shopName, shopTagTpl, originTpl, prolistTpl, footerTpl, ...rest } = {
9
+ ...defaultProps,
10
+ ...props,
11
+ };
12
+ const b = cn('card');
13
+ return (React__default.createElement("div", { className: `${b()} ${className}`, style: style, ...rest },
14
+ React__default.createElement("div", { className: b('left') },
15
+ React__default.createElement("img", { src: imgUrl, alt: "" })),
16
+ React__default.createElement("div", { className: b('right') },
17
+ React__default.createElement("div", { className: b('right__title') }, title),
18
+ prolistTpl,
19
+ React__default.createElement("div", { className: b('right__price') },
20
+ React__default.createElement(Price, { price: price }),
21
+ originTpl || (React__default.createElement(Price, { className: b('right__price__origin'), price: vipPrice }))),
22
+ React__default.createElement("div", { className: b('right__other') }, shopTagTpl || (React__default.createElement(React__default.Fragment, null,
23
+ React__default.createElement(Tag, { type: "danger" }, shopDesc),
24
+ React__default.createElement(Tag, { plain: true }, delivery)))),
25
+ React__default.createElement("div", { className: b('right__shop') },
26
+ React__default.createElement("div", { className: b('right__shop__name') }, shopName),
27
+ footerTpl))));
28
+ };
29
+ Card.defaultProps = defaultProps;
30
+ Card.displayName = 'NutCard';
31
+
32
+ export { Card as C };