@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
@@ -1,147 +1,83 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- var _excluded = ["children", "title", "isOpen", "onToggle", "name", "disabled", "icon", "rotate", "subTitle", "titleIcon", "titleIconColor", "titleIconPosition", "titleIconSize", "iconSize", "iconColor", "childnull", "iconClassPrefix", "iconFontClassName"];
5
- 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; }
6
- 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; }
7
1
  import React__default, { useState, useCallback, useEffect } from 'react';
8
2
  import { c as cn } from './bem-893ad28d.js';
9
3
  import { I as Icon } from './icon-8dc4de10.js';
10
4
  import { C as ComponentDefaults } from './typings-1c5f2628.js';
11
- var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
12
- title: '',
13
- name: '',
14
- isOpen: false,
15
- icon: '',
16
- iconSize: '',
17
- iconColor: '',
18
- disabled: false,
19
- rotate: 180,
20
- subTitle: '',
21
- titleIcon: '',
22
- titleIconColor: '',
23
- titleIconPosition: '',
24
- titleIconSize: '',
25
- childnull: true
26
- });
27
- var CollapseItem = function CollapseItem(props) {
28
- var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
29
- children = _defaultProps$props.children,
30
- title = _defaultProps$props.title,
31
- isOpen = _defaultProps$props.isOpen,
32
- onToggle = _defaultProps$props.onToggle,
33
- name = _defaultProps$props.name,
34
- disabled = _defaultProps$props.disabled,
35
- icon = _defaultProps$props.icon,
36
- rotate = _defaultProps$props.rotate,
37
- subTitle = _defaultProps$props.subTitle,
38
- titleIcon = _defaultProps$props.titleIcon,
39
- titleIconColor = _defaultProps$props.titleIconColor,
40
- titleIconPosition = _defaultProps$props.titleIconPosition,
41
- titleIconSize = _defaultProps$props.titleIconSize,
42
- iconSize = _defaultProps$props.iconSize,
43
- iconColor = _defaultProps$props.iconColor,
44
- childnull = _defaultProps$props.childnull,
45
- iconClassPrefix = _defaultProps$props.iconClassPrefix,
46
- iconFontClassName = _defaultProps$props.iconFontClassName,
47
- rest = _objectWithoutProperties(_defaultProps$props, _excluded);
48
- var _useState = useState(-1),
49
- _useState2 = _slicedToArray(_useState, 2),
50
- domHeight = _useState2[0],
51
- setDomHeight = _useState2[1]; // 保存content的高度
52
- var _useState3 = useState('auto'),
53
- _useState4 = _slicedToArray(_useState3, 2),
54
- currHeight = _useState4[0],
55
- setCurrHeight = _useState4[1]; // 设置content的高度
56
- var _useState5 = useState(false),
57
- _useState6 = _slicedToArray(_useState5, 2),
58
- update = _useState6[0],
59
- setUpdate = _useState6[1];
60
- var _useState7 = useState({
61
- transform: 'translateY(-50%)'
62
- }),
63
- _useState8 = _slicedToArray(_useState7, 2),
64
- iconStyle = _useState8[0],
65
- setIconStyle = _useState8[1];
66
- var colBem = cn('collapse-item');
67
- var measuredRef = useCallback(function (node) {
68
- if (node !== null) {
69
- setDomHeight(node.getBoundingClientRect().height);
70
- }
71
- }, [update]);
72
- useEffect(function () {
73
- // 一开始content都有高度,在这里根据isOpen,改变其高度
74
- setTimeout(function () {
75
- if (domHeight !== -1) {
76
- isOpen ? setCurrHeight("".concat(domHeight, "px")) : setCurrHeight('0px');
77
- }
78
- var newIconStyle = isOpen ? {
79
- transform: "translateY(-50%) rotate(".concat(rotate, "deg)")
80
- } : {
81
- transform: 'translateY(-50%)'
82
- };
83
- setIconStyle(newIconStyle);
84
- }, 10);
85
- }, [isOpen, domHeight, rotate]);
86
- useEffect(function () {
87
- if (!isOpen) {
88
- setCurrHeight('0px');
89
- } else {
90
- setCurrHeight('auto');
91
- }
92
- setUpdate(!update);
93
- }, [children, isOpen]);
94
- return React__default.createElement("div", _objectSpread({
95
- className: colBem()
96
- }, rest), React__default.createElement("div", {
97
- className: colBem('header', {
98
- disabled: disabled
99
- }),
100
- onClick: function onClick() {
101
- if (disabled) return;
102
- onToggle && onToggle(isOpen, name);
103
- }
104
- }, React__default.createElement("div", {
105
- className: colBem('title')
106
- }, titleIcon && titleIconPosition === 'left' && React__default.createElement("b", {
107
- className: colBem('title-icon-left')
108
- }, React__default.createElement(Icon, {
109
- classPrefix: iconClassPrefix,
110
- fontClassName: iconFontClassName,
111
- name: titleIcon,
112
- size: titleIconSize,
113
- color: disabled ? '#C2C2C2' : titleIconColor
114
- })), title, titleIcon && titleIconPosition === 'right' && React__default.createElement("b", {
115
- className: colBem('title-icon-right')
116
- }, React__default.createElement(Icon, {
117
- classPrefix: iconClassPrefix,
118
- fontClassName: iconFontClassName,
119
- name: titleIcon,
120
- size: titleIconSize,
121
- color: disabled ? '#C2C2C2' : titleIconColor
122
- }))), React__default.createElement("div", {
123
- className: colBem('sub-title')
124
- }, subTitle), React__default.createElement("div", {
125
- className: colBem('icon-box')
126
- }, React__default.createElement("div", {
127
- className: colBem('icon'),
128
- style: iconStyle
129
- }, React__default.createElement(Icon, {
130
- classPrefix: iconClassPrefix,
131
- fontClassName: iconFontClassName,
132
- name: icon,
133
- size: iconSize,
134
- color: disabled ? '#C2C2C2' : iconColor
135
- })))), childnull && React__default.createElement("div", {
136
- className: colBem('content'),
137
- style: {
138
- height: currHeight
139
- },
140
- ref: measuredRef
141
- }, React__default.createElement("div", {
142
- className: colBem('content-text')
143
- }, children)));
5
+
6
+ const defaultProps = {
7
+ ...ComponentDefaults,
8
+ title: '',
9
+ name: '',
10
+ isOpen: false,
11
+ icon: '',
12
+ iconSize: '',
13
+ iconColor: '',
14
+ disabled: false,
15
+ rotate: 180,
16
+ subTitle: '',
17
+ titleIcon: '',
18
+ titleIconColor: '',
19
+ titleIconPosition: '',
20
+ titleIconSize: '',
21
+ childnull: true,
22
+ };
23
+ const CollapseItem = (props) => {
24
+ const { children, title, isOpen, onToggle, name, disabled, icon, rotate, subTitle, titleIcon, titleIconColor, titleIconPosition, titleIconSize, iconSize, iconColor, childnull, iconClassPrefix, iconFontClassName, ...rest } = {
25
+ ...defaultProps,
26
+ ...props,
27
+ };
28
+ const [domHeight, setDomHeight] = useState(-1); // 保存content的高度
29
+ const [currHeight, setCurrHeight] = useState('auto'); // 设置content的高度
30
+ const [update, setUpdate] = useState(false);
31
+ const [iconStyle, setIconStyle] = useState({
32
+ transform: 'translateY(-50%)',
33
+ });
34
+ const colBem = cn('collapse-item');
35
+ const measuredRef = useCallback((node) => {
36
+ if (node !== null) {
37
+ setDomHeight(node.getBoundingClientRect().height);
38
+ }
39
+ }, [update]);
40
+ useEffect(() => {
41
+ // 一开始content都有高度,在这里根据isOpen,改变其高度
42
+ setTimeout(() => {
43
+ if (domHeight !== -1) {
44
+ isOpen ? setCurrHeight(`${domHeight}px`) : setCurrHeight('0px');
45
+ }
46
+ const newIconStyle = isOpen
47
+ ? { transform: `translateY(-50%) rotate(${rotate}deg)` }
48
+ : { transform: 'translateY(-50%)' };
49
+ setIconStyle(newIconStyle);
50
+ }, 10);
51
+ }, [isOpen, domHeight, rotate]);
52
+ useEffect(() => {
53
+ if (!isOpen) {
54
+ setCurrHeight('0px');
55
+ }
56
+ else {
57
+ setCurrHeight('auto');
58
+ }
59
+ setUpdate(!update);
60
+ }, [children, isOpen]);
61
+ return (React__default.createElement("div", { className: colBem(), ...rest },
62
+ React__default.createElement("div", { className: colBem('header', { disabled }), onClick: () => {
63
+ if (disabled)
64
+ return;
65
+ onToggle && onToggle(isOpen, name);
66
+ } },
67
+ React__default.createElement("div", { className: colBem('title') },
68
+ titleIcon && titleIconPosition === 'left' && (React__default.createElement("b", { className: colBem('title-icon-left') },
69
+ React__default.createElement(Icon, { classPrefix: iconClassPrefix, fontClassName: iconFontClassName, name: titleIcon, size: titleIconSize, color: disabled ? '#C2C2C2' : titleIconColor }))),
70
+ title,
71
+ titleIcon && titleIconPosition === 'right' && (React__default.createElement("b", { className: colBem('title-icon-right') },
72
+ React__default.createElement(Icon, { classPrefix: iconClassPrefix, fontClassName: iconFontClassName, name: titleIcon, size: titleIconSize, color: disabled ? '#C2C2C2' : titleIconColor })))),
73
+ React__default.createElement("div", { className: colBem('sub-title') }, subTitle),
74
+ React__default.createElement("div", { className: colBem('icon-box') },
75
+ React__default.createElement("div", { className: colBem('icon'), style: iconStyle },
76
+ React__default.createElement(Icon, { classPrefix: iconClassPrefix, fontClassName: iconFontClassName, name: icon, size: iconSize, color: disabled ? '#C2C2C2' : iconColor })))),
77
+ childnull && (React__default.createElement("div", { className: colBem('content'), style: { height: currHeight }, ref: measuredRef },
78
+ React__default.createElement("div", { className: colBem('content-text') }, children)))));
144
79
  };
145
80
  CollapseItem.defaultProps = defaultProps;
146
81
  CollapseItem.displayName = 'NutCollapseItem';
82
+
147
83
  export { CollapseItem as C };
@@ -0,0 +1,19 @@
1
+ import { createContext, useContext } from 'react';
2
+ import 'lodash.kebabcase';
3
+ import { z as zhCN } from './zh-CN-dfc384d0.js';
4
+
5
+ const defaultConfigRef = {
6
+ current: {
7
+ locale: zhCN,
8
+ },
9
+ };
10
+ const getDefaultConfig = () => {
11
+ return defaultConfigRef.current;
12
+ };
13
+ // 创建一个 Context 对象
14
+ const ConfigContext = createContext(null);
15
+ const useConfig = () => {
16
+ return useContext(ConfigContext) ?? getDefaultConfig();
17
+ };
18
+
19
+ export { useConfig as u };
@@ -0,0 +1,42 @@
1
+ import React__default, { createContext, useContext, useMemo } from 'react';
2
+ import kebabCase from 'lodash.kebabcase';
3
+ import { z as zhCN } from './zh-CN-dfc384d0.js';
4
+
5
+ const defaultProps = {
6
+ locale: zhCN,
7
+ };
8
+ const defaultConfigRef = {
9
+ current: {
10
+ locale: zhCN,
11
+ },
12
+ };
13
+ const getDefaultConfig = () => {
14
+ return defaultConfigRef.current;
15
+ };
16
+ // 创建一个 Context 对象
17
+ const ConfigContext = createContext(null);
18
+ const useConfig = () => {
19
+ return useContext(ConfigContext) ?? getDefaultConfig();
20
+ };
21
+ function convertThemeVarsToCSSVars(themeVars) {
22
+ const cssVars = {};
23
+ Object.keys(themeVars).forEach((key) => {
24
+ cssVars[`--${kebabCase(key)}`] = themeVars[key];
25
+ });
26
+ return cssVars;
27
+ }
28
+ const ConfigProvider = (props) => {
29
+ const { children, ...config } = { ...defaultProps, ...props };
30
+ const parentConfig = useConfig();
31
+ const theme = config.theme || {};
32
+ const style = useMemo(() => convertThemeVarsToCSSVars(theme), [theme]);
33
+ return (React__default.createElement(ConfigContext.Provider, { value: {
34
+ ...parentConfig,
35
+ ...config,
36
+ } },
37
+ React__default.createElement("div", { style: style }, children)));
38
+ };
39
+ ConfigProvider.defaultProps = defaultProps;
40
+ ConfigProvider.displayName = 'NutConfigProvider';
41
+
42
+ export { ConfigProvider as C, useConfig as u };
@@ -0,0 +1,225 @@
1
+ import React__default, { useState, useRef, useImperativeHandle, useEffect } from 'react';
2
+ import { c as cn } from './bem-893ad28d.js';
3
+ import { u as useConfig } from './configprovider.taro-26882dd2.js';
4
+
5
+ const defaultProps = {
6
+ paused: false,
7
+ startTime: Date.now(),
8
+ endTime: Date.now(),
9
+ millisecond: false,
10
+ format: 'HH:mm:ss',
11
+ autoStart: true,
12
+ time: 0,
13
+ };
14
+ const InternalCountDown = (props, ref) => {
15
+ useConfig();
16
+ const { paused, startTime, endTime, millisecond, format, autoStart, time, className, style, onEnd, onPaused, onRestart, onUpdate, children, ...rest } = { ...defaultProps, ...props };
17
+ const b = cn('countdown');
18
+ const [restTimeStamp, setRestTime] = useState(0);
19
+ const stateRef = useRef({
20
+ pauseTime: 0,
21
+ curr: 0,
22
+ isPaused: paused,
23
+ isIninted: false,
24
+ timer: 0,
25
+ restTime: 0,
26
+ counting: !paused && autoStart,
27
+ handleEndTime: Date.now(),
28
+ diffTime: 0, // 设置了 startTime 时,与 date.now() 的差异
29
+ });
30
+ // 时间戳转换 或 获取当前时间的时间戳
31
+ const getTimeStamp = (timeStr) => {
32
+ if (!timeStr)
33
+ return Date.now();
34
+ let t = timeStr;
35
+ t = t > 0 ? +t : t.toString().replace(/-/g, '/');
36
+ return new Date(t).getTime();
37
+ };
38
+ // 倒计时 interval
39
+ const initTime = () => {
40
+ stateRef.current.handleEndTime = endTime;
41
+ stateRef.current.diffTime = Date.now() - getTimeStamp(startTime); // 时间差
42
+ if (!stateRef.current.counting)
43
+ stateRef.current.counting = true;
44
+ tick();
45
+ };
46
+ const tick = () => {
47
+ stateRef.current.timer = requestAnimationFrame(() => {
48
+ if (stateRef.current.counting) {
49
+ const currentTime = Date.now() - stateRef.current.diffTime;
50
+ const remainTime = Math.max(stateRef.current.handleEndTime - currentTime, 0);
51
+ stateRef.current.restTime = remainTime;
52
+ setRestTime(remainTime);
53
+ if (!remainTime) {
54
+ stateRef.current.counting = false;
55
+ pause();
56
+ onEnd && onEnd();
57
+ }
58
+ if (remainTime > 0) {
59
+ tick();
60
+ }
61
+ }
62
+ });
63
+ };
64
+ // 将倒计时剩余时间格式化 参数: t 时间戳 type custom 自定义类型
65
+ const formatRemainTime = (t, type) => {
66
+ const ts = t;
67
+ const rest = {
68
+ d: 0,
69
+ h: 0,
70
+ m: 0,
71
+ s: 0,
72
+ ms: 0,
73
+ };
74
+ const SECOND = 1000;
75
+ const MINUTE = 60 * SECOND;
76
+ const HOUR = 60 * MINUTE;
77
+ const DAY = 24 * HOUR;
78
+ if (ts > 0) {
79
+ rest.d = ts >= SECOND ? Math.floor(ts / DAY) : 0;
80
+ rest.h = Math.floor((ts % DAY) / HOUR);
81
+ rest.m = Math.floor((ts % HOUR) / MINUTE);
82
+ rest.s = Math.floor((ts % MINUTE) / SECOND);
83
+ rest.ms = Math.floor(ts % SECOND);
84
+ }
85
+ return type === 'custom' ? rest : parseFormat({ ...rest });
86
+ };
87
+ const parseFormat = (time) => {
88
+ const { d } = time;
89
+ let { h, m, s, ms } = time;
90
+ let formatCache = format;
91
+ if (formatCache.includes('DD')) {
92
+ formatCache = formatCache.replace('DD', padZero(d));
93
+ }
94
+ else {
95
+ h += Number(d) * 24;
96
+ }
97
+ if (formatCache.includes('HH')) {
98
+ formatCache = formatCache.replace('HH', padZero(h));
99
+ }
100
+ else {
101
+ m += Number(h) * 60;
102
+ }
103
+ if (formatCache.includes('mm')) {
104
+ formatCache = formatCache.replace('mm', padZero(m));
105
+ }
106
+ else {
107
+ s += Number(m) * 60;
108
+ }
109
+ if (formatCache.includes('ss')) {
110
+ formatCache = formatCache.replace('ss', padZero(s));
111
+ }
112
+ else {
113
+ ms += Number(s) * 1000;
114
+ }
115
+ if (formatCache.includes('S')) {
116
+ const msC = padZero(ms, 3).toString();
117
+ if (formatCache.includes('SSS')) {
118
+ formatCache = formatCache.replace('SSS', msC);
119
+ }
120
+ else if (formatCache.includes('SS')) {
121
+ formatCache = formatCache.replace('SS', msC.slice(0, 2));
122
+ }
123
+ else if (formatCache.includes('S')) {
124
+ formatCache = formatCache.replace('SS', msC.slice(0, 1));
125
+ }
126
+ }
127
+ return formatCache;
128
+ };
129
+ const padZero = (num, length = 2) => {
130
+ num += '';
131
+ while (num.length < length) {
132
+ num = `0${num}`;
133
+ }
134
+ return num.toString();
135
+ };
136
+ // 暂定
137
+ const pause = () => {
138
+ cancelAnimationFrame(stateRef.current.timer);
139
+ stateRef.current.counting = false;
140
+ onPaused && onPaused(stateRef.current.restTime);
141
+ };
142
+ useImperativeHandle(ref, () => ({
143
+ start: () => {
144
+ if (!stateRef.current.counting && !autoStart) {
145
+ stateRef.current.counting = true;
146
+ stateRef.current.handleEndTime =
147
+ Date.now() + Number(stateRef.current.restTime);
148
+ tick();
149
+ onRestart && onRestart(stateRef.current.restTime);
150
+ }
151
+ },
152
+ pause: () => {
153
+ cancelAnimationFrame(stateRef.current.timer);
154
+ stateRef.current.counting = false;
155
+ onPaused && onPaused(stateRef.current.restTime);
156
+ },
157
+ reset: () => {
158
+ if (!autoStart) {
159
+ pause();
160
+ stateRef.current.restTime = time;
161
+ setRestTime(time);
162
+ }
163
+ },
164
+ }));
165
+ // 监听值变更
166
+ useEffect(() => {
167
+ const tranTime = formatRemainTime(stateRef.current.restTime, 'custom');
168
+ onUpdate && onUpdate(tranTime);
169
+ }, [restTimeStamp]);
170
+ // 监听暂停
171
+ useEffect(() => {
172
+ if (stateRef.current.isIninted) {
173
+ if (paused) {
174
+ if (stateRef.current.counting) {
175
+ pause();
176
+ }
177
+ }
178
+ else {
179
+ if (!stateRef.current.counting) {
180
+ stateRef.current.counting = true;
181
+ stateRef.current.handleEndTime =
182
+ Date.now() + Number(stateRef.current.restTime);
183
+ tick();
184
+ }
185
+ onRestart && onRestart(stateRef.current.restTime);
186
+ }
187
+ }
188
+ }, [paused]);
189
+ // 监听开始结束时间变更
190
+ useEffect(() => {
191
+ if (stateRef.current.isIninted) {
192
+ initTime();
193
+ }
194
+ }, [endTime, startTime]);
195
+ // 初始化
196
+ useEffect(() => {
197
+ if (autoStart) {
198
+ initTime();
199
+ }
200
+ else {
201
+ stateRef.current.restTime = time;
202
+ setRestTime(time);
203
+ }
204
+ if (!stateRef.current.isIninted) {
205
+ stateRef.current.isIninted = true;
206
+ }
207
+ return componentWillUnmount;
208
+ }, []);
209
+ const componentWillUnmount = () => {
210
+ clearInterval(stateRef.current.timer);
211
+ };
212
+ const renderTime = (() => {
213
+ return formatRemainTime(stateRef.current.restTime);
214
+ })();
215
+ return (React__default.createElement("div", { className: `${b()} ${className || ''}`, style: { ...style }, ...rest }, children || (React__default.createElement("div", { className: b('block'),
216
+ // eslint-disable-next-line react/no-danger
217
+ dangerouslySetInnerHTML: {
218
+ __html: `${renderTime}`,
219
+ } }))));
220
+ };
221
+ const CountDown = React__default.forwardRef(InternalCountDown);
222
+ CountDown.defaultProps = defaultProps;
223
+ CountDown.displayName = 'NutCountDown';
224
+
225
+ export { CountDown as C };