@nutui/nutui-react 1.3.0 → 1.3.1-beta.0

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 (158) hide show
  1. package/dist/esm/Audio/style/index.js +4 -0
  2. package/dist/esm/Audio.js +293 -0
  3. package/dist/esm/Calendar/style/index.js +1 -2
  4. package/dist/esm/Calendar.js +80 -33
  5. package/dist/esm/CalendarItem.js +429 -231
  6. package/dist/esm/Cascader/style/index.js +2 -0
  7. package/dist/esm/Cascader.js +788 -0
  8. package/dist/esm/ConfigProvider.js +16 -0
  9. package/dist/esm/DatePicker.js +37 -6
  10. package/dist/esm/Dialog.js +9 -16
  11. package/dist/esm/Elevator.js +16 -5
  12. package/dist/esm/Grid/style/index.js +2 -0
  13. package/dist/esm/Grid.js +91 -0
  14. package/dist/esm/GridItem/style/index.js +2 -0
  15. package/dist/esm/GridItem.js +99 -0
  16. package/dist/esm/ImagePreview/style/index.js +2 -0
  17. package/dist/esm/ImagePreview.js +257 -0
  18. package/dist/esm/Menu/style/index.js +3 -0
  19. package/dist/esm/Menu.js +153 -0
  20. package/dist/esm/MenuItem/style/index.js +3 -0
  21. package/dist/esm/MenuItem.js +197 -0
  22. package/dist/esm/NoticeBar.js +3 -2
  23. package/dist/esm/Notify.js +2 -1
  24. package/dist/esm/Popover.js +4 -11
  25. package/dist/esm/Range.js +2 -45
  26. package/dist/esm/Swipe/style/index.js +2 -0
  27. package/dist/esm/Swipe.js +265 -0
  28. package/dist/esm/Swiper.js +2 -1
  29. package/dist/esm/TabPane.js +5 -33
  30. package/dist/esm/Tabs.js +6 -196
  31. package/dist/esm/TextArea.js +45 -4
  32. package/dist/esm/Toast.js +2 -1
  33. package/dist/esm/nutui-react.es.js +8 -0
  34. package/dist/esm/render-4a3856cb.js +32 -0
  35. package/dist/esm/tabpane-c957ab14.js +33 -0
  36. package/dist/esm/tabs-a48583e9.js +196 -0
  37. package/dist/esm/useClientRect-839d18c5.js +44 -0
  38. package/dist/locales/base.d.ts +16 -0
  39. package/dist/locales/base.js +1 -1
  40. package/dist/locales/en-US.js +17 -1
  41. package/dist/locales/id-ID.js +17 -1
  42. package/dist/locales/zh-CN.js +17 -1
  43. package/dist/locales/zh-TW.js +17 -1
  44. package/dist/nutui.react.es.js +2338 -530
  45. package/dist/nutui.react.umd.js +2345 -529
  46. package/dist/packages/audio/audio.scss +80 -0
  47. package/dist/packages/calendar/calendar.scss +57 -36
  48. package/dist/packages/calendaritem/calendaritem.scss +0 -191
  49. package/dist/packages/cascader/cascader.scss +69 -0
  50. package/dist/packages/grid/grid.scss +10 -0
  51. package/dist/packages/griditem/griditem.scss +103 -0
  52. package/dist/packages/imagepreview/imagepreview.scss +51 -0
  53. package/dist/packages/menu/menu.scss +72 -0
  54. package/dist/packages/menuitem/menuitem.scss +90 -0
  55. package/dist/packages/popup/popup.scss +1 -1
  56. package/dist/packages/searchbar/searchbar.scss +1 -0
  57. package/dist/packages/shortpassword/shortpassword.scss +6 -1
  58. package/dist/packages/swipe/swipe.scss +33 -0
  59. package/dist/packages/textarea/textarea.scss +16 -1
  60. package/dist/style.css +1 -1
  61. package/dist/style.es.js +1 -1
  62. package/dist/styles/font/iconfont.js +20 -18
  63. package/dist/styles/themes/default.scss +8 -0
  64. package/dist/styles/variables.scss +59 -8
  65. package/dist/types/audio/__test__/audio.spec.d.ts +1 -0
  66. package/dist/types/audio/audio.d.ts +18 -0
  67. package/dist/types/audio/audio.taro.d.ts +18 -0
  68. package/dist/types/audio/demo.d.ts +4 -0
  69. package/dist/types/audio/index.d.ts +2 -0
  70. package/dist/types/audio/index.taro.d.ts +2 -0
  71. package/dist/types/backtop/__test__/backtop.spec.d.ts +1 -0
  72. package/dist/types/calendar/__tests__/calendar.spec.d.ts +1 -0
  73. package/dist/types/calendar/calendar.d.ts +22 -2
  74. package/dist/types/calendar/demo.d.ts +1 -0
  75. package/dist/types/calendaritem/calendaritem.d.ts +21 -3
  76. package/dist/types/cascader/__tests__/cascader.spec.d.ts +1 -0
  77. package/dist/types/cascader/cascader.d.ts +25 -0
  78. package/dist/types/cascader/cascader.taro.d.ts +25 -0
  79. package/dist/types/cascader/cascaderItem.d.ts +25 -0
  80. package/dist/types/cascader/cascaderItem.taro.d.ts +25 -0
  81. package/dist/types/cascader/demo.d.ts +3 -0
  82. package/dist/types/cascader/helper.d.ts +4 -0
  83. package/dist/types/cascader/index.d.ts +2 -0
  84. package/dist/types/cascader/index.taro.d.ts +2 -0
  85. package/dist/types/cascader/tree.d.ts +12 -0
  86. package/dist/types/cascader/types.d.ts +28 -0
  87. package/dist/types/checkbox/checkbox.d.ts +2 -2
  88. package/dist/types/checkbox/checkbox.taro.d.ts +2 -2
  89. package/dist/types/checkboxgroup/checkboxgroup.d.ts +2 -2
  90. package/dist/types/checkboxgroup/checkboxgroup.taro.d.ts +2 -2
  91. package/dist/types/dialog/__test__/dialog.spec.d.ts +1 -0
  92. package/dist/types/dialog/config.d.ts +3 -3
  93. package/dist/types/dialog/dialog.d.ts +2 -1
  94. package/dist/types/dialog/dialog.taro.d.ts +2 -1
  95. package/dist/types/fixednav/fixednav.d.ts +2 -2
  96. package/dist/types/grid/__test__/grid.spec.d.ts +1 -0
  97. package/dist/types/grid/demo.d.ts +3 -0
  98. package/dist/types/grid/grid.d.ts +16 -0
  99. package/dist/types/grid/grid.taro.d.ts +16 -0
  100. package/dist/types/grid/index.d.ts +2 -0
  101. package/dist/types/grid/index.taro.d.ts +2 -0
  102. package/dist/types/griditem/griditem.d.ts +20 -0
  103. package/dist/types/griditem/griditem.taro.d.ts +20 -0
  104. package/dist/types/griditem/index.d.ts +2 -0
  105. package/dist/types/griditem/index.taro.d.ts +2 -0
  106. package/dist/types/icon/icon.d.ts +1 -2
  107. package/dist/types/icon/icon.taro.d.ts +1 -2
  108. package/dist/types/imagepreview/__test__/imagepreview.spec.d.ts +1 -0
  109. package/dist/types/imagepreview/demo.d.ts +3 -0
  110. package/dist/types/imagepreview/imagepreview.d.ts +26 -0
  111. package/dist/types/imagepreview/imagepreview.taro.d.ts +26 -0
  112. package/dist/types/imagepreview/index.d.ts +2 -0
  113. package/dist/types/imagepreview/index.taro.d.ts +2 -0
  114. package/dist/types/input/__test__/input.spec.d.ts +1 -0
  115. package/dist/types/menu/__test__/menu.spec.d.ts +1 -0
  116. package/dist/types/menu/demo.d.ts +4 -0
  117. package/dist/types/menu/index.d.ts +2 -0
  118. package/dist/types/menu/index.taro.d.ts +2 -0
  119. package/dist/types/menu/menu.d.ts +12 -0
  120. package/dist/types/menu/menu.taro.d.ts +12 -0
  121. package/dist/types/menuitem/index.d.ts +2 -0
  122. package/dist/types/menuitem/index.taro.d.ts +2 -0
  123. package/dist/types/menuitem/menuitem.d.ts +23 -0
  124. package/dist/types/menuitem/menuitem.taro.d.ts +23 -0
  125. package/dist/types/notify/__test__/notify.spec.d.ts +1 -0
  126. package/dist/types/notify/notify.d.ts +13 -0
  127. package/dist/types/notify/notify.taro.d.ts +13 -0
  128. package/dist/types/nutui.react.d.ts +95 -1
  129. package/dist/types/picker/doc.en.d.ts +142 -0
  130. package/dist/types/picker/picker.d.ts +2 -2
  131. package/dist/types/picker/picker.taro.d.ts +2 -2
  132. package/dist/types/popup/popup.d.ts +1 -1
  133. package/dist/types/popup/popup.taro.d.ts +1 -1
  134. package/dist/types/shortpassword/shortpassword.taro.d.ts +3 -3
  135. package/dist/types/sidenavbar/sidenavbar.d.ts +14 -2
  136. package/dist/types/sidenavbar/sidenavbar.taro.d.ts +14 -2
  137. package/dist/types/sidenavbaritem/sidenavbaritem.d.ts +10 -2
  138. package/dist/types/sidenavbaritem/sidenavbaritem.taro.d.ts +10 -2
  139. package/dist/types/subsidenavbar/subsidenavbar.d.ts +13 -3
  140. package/dist/types/subsidenavbar/subsidenavbar.taro.d.ts +13 -3
  141. package/dist/types/swipe/__tests__/swipe.spec.d.ts +1 -0
  142. package/dist/types/swipe/demo.d.ts +3 -0
  143. package/dist/types/swipe/index.d.ts +2 -0
  144. package/dist/types/swipe/index.taro.d.ts +2 -0
  145. package/dist/types/swipe/swipe.d.ts +41 -0
  146. package/dist/types/swipe/swipe.taro.d.ts +41 -0
  147. package/dist/types/swiper/swiper.d.ts +1 -2
  148. package/dist/types/swiperitem/swiperitem.d.ts +1 -2
  149. package/dist/types/table/table.d.ts +2 -1
  150. package/dist/types/table/table.taro.d.ts +2 -1
  151. package/dist/types/table/types.d.ts +1 -1
  152. package/dist/types/textarea/__test__/textarea.spec.d.ts +1 -0
  153. package/dist/types/toast/toast.d.ts +21 -0
  154. package/dist/types/toast/toast.taro.d.ts +18 -0
  155. package/dist/types/virtuallist/type.d.ts +1 -1
  156. package/dist/types/virtuallist/virtuallist.d.ts +2 -1
  157. package/dist/types/virtuallist/virtuallist.taro.d.ts +2 -1
  158. package/package.json +4 -4
@@ -0,0 +1,4 @@
1
+ require('../../Icon/style')
2
+ require('../../Button/style')
3
+ require('../../Range/style')
4
+ require('../../../packages/audio/audio.scss')
@@ -0,0 +1,293 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
+ var _excluded = ["className", "url", "style", "muted", "autoplay", "loop", "preload", "type", "onFastBack", "onForward", "onPause", "onPlayEnd", "onMute", "onCanPlay", "children"];
5
+
6
+ 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; }
7
+
8
+ 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; }
9
+
10
+ import React__default, { useState, useRef, useEffect } from 'react';
11
+ import Icon from './Icon.js';
12
+ import Range from './Range.js';
13
+ import { c as cn } from './bem-893ad28d.js';
14
+ import Button from './Button.js';
15
+ import { useConfig } from './ConfigProvider.js';
16
+ import '@bem-react/classname';
17
+ var defaultProps = {
18
+ className: '',
19
+ url: '',
20
+ style: {},
21
+ muted: false,
22
+ autoplay: false,
23
+ loop: false,
24
+ preload: 'auto',
25
+ type: 'progress',
26
+ onFastBack: function onFastBack(e) {},
27
+ onForward: function onForward(e) {},
28
+ onPause: function onPause(e) {},
29
+ onPlayEnd: function onPlayEnd(e) {},
30
+ onMute: function onMute(e) {},
31
+ onCanPlay: function onCanPlay(e) {}
32
+ };
33
+
34
+ var Audio = function Audio(props) {
35
+ var _useConfig = useConfig(),
36
+ locale = _useConfig.locale;
37
+
38
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
39
+ className = _defaultProps$props.className,
40
+ url = _defaultProps$props.url,
41
+ style = _defaultProps$props.style,
42
+ muted = _defaultProps$props.muted,
43
+ autoplay = _defaultProps$props.autoplay,
44
+ loop = _defaultProps$props.loop,
45
+ preload = _defaultProps$props.preload,
46
+ type = _defaultProps$props.type,
47
+ onFastBack = _defaultProps$props.onFastBack,
48
+ onForward = _defaultProps$props.onForward,
49
+ onPause = _defaultProps$props.onPause,
50
+ onPlayEnd = _defaultProps$props.onPlayEnd,
51
+ onMute = _defaultProps$props.onMute,
52
+ onCanPlay = _defaultProps$props.onCanPlay,
53
+ children = _defaultProps$props.children,
54
+ rest = _objectWithoutProperties(_defaultProps$props, _excluded);
55
+
56
+ var _useState = useState(false),
57
+ _useState2 = _slicedToArray(_useState, 2),
58
+ playing = _useState2[0],
59
+ setPlaying = _useState2[1];
60
+
61
+ var _useState3 = useState(0),
62
+ _useState4 = _slicedToArray(_useState3, 2),
63
+ percent = _useState4[0],
64
+ setPercent = _useState4[1];
65
+
66
+ var _useState5 = useState(false),
67
+ _useState6 = _slicedToArray(_useState5, 2),
68
+ isCanPlay = _useState6[0],
69
+ setIsCanPlay = _useState6[1];
70
+
71
+ var _useState7 = useState('00:00:00'),
72
+ _useState8 = _slicedToArray(_useState7, 2),
73
+ currentDuration = _useState8[0],
74
+ setCurrentDuration = _useState8[1];
75
+
76
+ var AudioRef = useRef(null);
77
+ var statusRef = useRef({
78
+ currentTime: 0,
79
+ currentDuration: '00:00:00',
80
+ percent: 0,
81
+ duration: '00:00:00',
82
+ second: 0,
83
+ hanMuted: props.muted,
84
+ playing: props.autoplay,
85
+ handPlaying: false
86
+ });
87
+ var b = cn('audio');
88
+ var warn = console.warn;
89
+
90
+ var handleEnded = function handleEnded(e) {
91
+ if (props.loop) {
92
+ warn(locale.audio.tips || 'onPlayEnd事件在loop=false时才会触发');
93
+ } else {
94
+ props.onPlayEnd && props.onPlayEnd(e);
95
+ }
96
+ };
97
+
98
+ function watch() {
99
+ if (AudioRef && AudioRef.current) {
100
+ var current = AudioRef.current;
101
+ current.addEventListener('play', function () {
102
+ setPlaying(true);
103
+ });
104
+ }
105
+ }
106
+
107
+ useEffect(function () {
108
+ watch();
109
+ }, []);
110
+ useEffect(function () {}, [currentDuration]);
111
+
112
+ var handleStatusChange = function handleStatusChange() {
113
+ setPlaying(!playing);
114
+
115
+ if (playing) {
116
+ AudioRef && AudioRef.current && AudioRef.current.pause();
117
+ } else {
118
+ AudioRef && AudioRef.current && AudioRef.current.play();
119
+ }
120
+ };
121
+
122
+ var renderIcon = function renderIcon() {
123
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
124
+ className: b('icon')
125
+ }, React__default.createElement("div", {
126
+ className: "".concat(b('icon-box'), " ").concat(playing ? b('icon-play') : b('icon-stop')),
127
+ onClick: handleStatusChange
128
+ }, playing ? React__default.createElement(Icon, {
129
+ name: "service",
130
+ className: "nut-icon-loading"
131
+ }) : React__default.createElement(Icon, {
132
+ name: "service"
133
+ }))));
134
+ };
135
+
136
+ var handleBack = function handleBack() {
137
+ if (statusRef.current.currentTime > 0 && AudioRef.current) {
138
+ statusRef.current.currentTime--;
139
+ AudioRef.current.currentTime = statusRef.current.currentTime;
140
+ props.onFastBack && props.onFastBack(AudioRef.current);
141
+ }
142
+ };
143
+
144
+ var handleForward = function handleForward() {
145
+ if (AudioRef.current) {
146
+ statusRef.current.currentTime++;
147
+ AudioRef.current.currentTime = statusRef.current.currentTime;
148
+ props.onForward && props.onForward(AudioRef.current);
149
+ }
150
+ };
151
+
152
+ var handleMute = function handleMute() {
153
+ if (AudioRef.current) {
154
+ AudioRef.current.muted = !AudioRef.current.muted;
155
+ props.onMute && props.onMute(AudioRef.current);
156
+ }
157
+ };
158
+
159
+ var handlePause = function handlePause(e) {
160
+ setPlaying(false);
161
+ props.onPause && props.onPause(e);
162
+ };
163
+
164
+ var formatSeconds = function formatSeconds(value) {
165
+ if (!value) {
166
+ return '00:00:00';
167
+ }
168
+
169
+ var time = parseInt(value);
170
+ var hours = Math.floor(time / 3600);
171
+ var minutes = Math.floor((time - hours * 3600) / 60);
172
+ var seconds = time - hours * 3600 - minutes * 60;
173
+ var result = '';
174
+ result += "".concat("0".concat(hours.toString()).slice(-2), ":");
175
+ result += "".concat("0".concat(minutes.toString()).slice(-2), ":");
176
+ result += "0".concat(seconds.toString()).slice(-2);
177
+ return result;
178
+ };
179
+
180
+ var renderProgerss = function renderProgerss() {
181
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
182
+ className: b('progress')
183
+ }, React__default.createElement("div", {
184
+ className: "time"
185
+ }, currentDuration), React__default.createElement("div", {
186
+ className: b('progress-bar-wrapper')
187
+ }, React__default.createElement(Range, {
188
+ modelValue: percent,
189
+ hiddenTag: true,
190
+ hiddenRange: true,
191
+ "inactive-color": "#cccccc",
192
+ "active-color": "#fa2c19"
193
+ })), React__default.createElement("div", {
194
+ className: "time"
195
+ }, AudioRef.current ? formatSeconds("".concat(statusRef.current.second)) : '00:00:00')), React__default.createElement("div", {
196
+ className: isCanPlay ? 'custom-button-group' : 'custom-button-group-disable'
197
+ }, React__default.createElement(Button, {
198
+ type: "primary",
199
+ size: "small",
200
+ className: "back",
201
+ onClick: handleBack
202
+ }, locale.audio.back || '快退'), React__default.createElement(Button, {
203
+ type: "primary",
204
+ size: "small",
205
+ className: "start",
206
+ onClick: handleStatusChange
207
+ }, playing ? "".concat(locale.audio.pause || '暂停') : "".concat(locale.audio.start || '开始')), React__default.createElement(Button, {
208
+ type: "primary",
209
+ size: "small",
210
+ onClick: handleForward
211
+ }, locale.audio.forward || '快进'), React__default.createElement(Button, {
212
+ type: AudioRef.current && AudioRef.current.muted ? 'default' : 'primary',
213
+ size: "small",
214
+ onClick: handleMute
215
+ }, locale.audio.mute || '静音')));
216
+ };
217
+
218
+ var renderNone = function renderNone() {
219
+ return React__default.createElement("div", {
220
+ className: b('none-container'),
221
+ onClick: handleStatusChange
222
+ }, children);
223
+ };
224
+
225
+ var renderAudio = function renderAudio() {
226
+ switch (type) {
227
+ case 'icon':
228
+ return renderIcon();
229
+
230
+ case 'progress':
231
+ return renderProgerss();
232
+
233
+ case 'none':
234
+ return renderNone();
235
+
236
+ default:
237
+ return null;
238
+ }
239
+ };
240
+
241
+ var handleCanplay = function handleCanplay(e) {
242
+ setIsCanPlay(true);
243
+
244
+ if (props.autoplay && !playing) {
245
+ AudioRef && AudioRef.current && AudioRef.current.play();
246
+ }
247
+
248
+ if (AudioRef.current) {
249
+ statusRef.current.second = AudioRef.current.duration || 0;
250
+ props.onCanPlay && props.onCanPlay(e);
251
+ }
252
+ };
253
+
254
+ var onTimeupdate = function onTimeupdate(e) {
255
+ var time = parseInt(e.target.currentTime);
256
+ var formated = formatSeconds("".concat(time));
257
+ statusRef.current.currentDuration = formated;
258
+ setPercent(time / statusRef.current.second * 100);
259
+ setCurrentDuration(formated);
260
+ statusRef.current.currentTime = time;
261
+ };
262
+
263
+ return React__default.createElement("div", _objectSpread({
264
+ className: "".concat(b(), " ").concat(className),
265
+ style: style
266
+ }, rest), renderAudio(), React__default.createElement("audio", {
267
+ className: "audioMain",
268
+ controls: type === 'controls',
269
+ ref: AudioRef,
270
+ src: url,
271
+ muted: muted,
272
+ preload: preload,
273
+ loop: loop,
274
+ onPause: function onPause(e) {
275
+ return handlePause(e);
276
+ },
277
+ onEnded: function onEnded(e) {
278
+ return handleEnded(e);
279
+ },
280
+ onCanPlay: function onCanPlay(e) {
281
+ return handleCanplay(e);
282
+ },
283
+ onTimeUpdate: function onTimeUpdate(e) {
284
+ return onTimeupdate(e);
285
+ }
286
+ }, React__default.createElement("track", {
287
+ kind: "captions"
288
+ })));
289
+ };
290
+
291
+ Audio.defaultProps = defaultProps;
292
+ Audio.displayName = 'NutAudio';
293
+ export { Audio as default };
@@ -1,3 +1,2 @@
1
- require('../../Popup/style')
2
- require('../../CalendarItem/style')
1
+ require('../../Popup/style')
3
2
  require('../../../packages/calendar/calendar.scss')
@@ -4,7 +4,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
4
4
 
5
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
6
 
7
- import React__default from 'react';
7
+ import React__default, { useRef } from 'react';
8
8
  import Popup from './Popup.js';
9
9
  import CalendarItem from './CalendarItem.js';
10
10
  import { U as Utils } from './date-710f8c7c.js';
@@ -18,16 +18,26 @@ var defaultProps = {
18
18
  defaultValue: '',
19
19
  startDate: Utils.getDay(0),
20
20
  endDate: Utils.getDay(365),
21
+ showToday: true,
22
+ startText: '开始',
23
+ endText: '结束',
24
+ confirmText: '确认',
25
+ showTitle: true,
26
+ showSubTitle: true,
27
+ toDateAnimation: true,
28
+ onBtn: undefined,
29
+ onDay: undefined,
30
+ onTopInfo: undefined,
31
+ onBottomInfo: undefined,
21
32
  onClose: function onClose() {},
22
- onChoose: function onChoose(param) {}
33
+ onChoose: function onChoose(param) {},
34
+ onSelected: function onSelected(data) {}
23
35
  };
24
-
25
- var Calendar = function Calendar(props) {
36
+ var Calendar = React__default.forwardRef(function (props, ref) {
26
37
  var _useConfig = useConfig(),
27
38
  locale = _useConfig.locale;
28
39
 
29
40
  var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
30
- children = _defaultProps$props.children,
31
41
  poppable = _defaultProps$props.poppable,
32
42
  visible = _defaultProps$props.visible,
33
43
  type = _defaultProps$props.type,
@@ -36,15 +46,27 @@ var Calendar = function Calendar(props) {
36
46
  defaultValue = _defaultProps$props.defaultValue,
37
47
  startDate = _defaultProps$props.startDate,
38
48
  endDate = _defaultProps$props.endDate,
49
+ showToday = _defaultProps$props.showToday,
50
+ startText = _defaultProps$props.startText,
51
+ endText = _defaultProps$props.endText,
52
+ confirmText = _defaultProps$props.confirmText,
53
+ showTitle = _defaultProps$props.showTitle,
54
+ showSubTitle = _defaultProps$props.showSubTitle,
55
+ toDateAnimation = _defaultProps$props.toDateAnimation,
56
+ onBtn = _defaultProps$props.onBtn,
57
+ onDay = _defaultProps$props.onDay,
58
+ onTopInfo = _defaultProps$props.onTopInfo,
59
+ onBottomInfo = _defaultProps$props.onBottomInfo,
39
60
  onClose = _defaultProps$props.onClose,
40
- onChoose = _defaultProps$props.onChoose;
61
+ onChoose = _defaultProps$props.onChoose,
62
+ onSelected = _defaultProps$props.onSelected;
63
+
64
+ var calendarRef = useRef(null);
41
65
 
42
66
  var close = function close() {
43
67
  onClose && onClose();
44
68
  };
45
69
 
46
- var update = function update() {};
47
-
48
70
  var choose = function choose(param) {
49
71
  close();
50
72
  onChoose && onChoose(param);
@@ -54,37 +76,62 @@ var Calendar = function Calendar(props) {
54
76
  close();
55
77
  };
56
78
 
79
+ var select = function select(param) {
80
+ onSelected && onSelected(param);
81
+ };
82
+
83
+ var scrollToDate = function scrollToDate(date) {
84
+ var _calendarRef$current;
85
+
86
+ (_calendarRef$current = calendarRef.current) === null || _calendarRef$current === void 0 ? void 0 : _calendarRef$current.scrollToDate(date);
87
+ };
88
+
89
+ React__default.useImperativeHandle(ref, function () {
90
+ return {
91
+ scrollToDate: scrollToDate
92
+ };
93
+ });
94
+
95
+ var renderItem = function renderItem() {
96
+ return React__default.createElement(CalendarItem, {
97
+ ref: calendarRef,
98
+ type: type,
99
+ isAutoBackFill: isAutoBackFill,
100
+ poppable: poppable,
101
+ title: locale.calendaritem.title || title,
102
+ defaultValue: defaultValue,
103
+ startDate: startDate,
104
+ endDate: endDate,
105
+ showToday: showToday,
106
+ startText: startText,
107
+ endText: endText,
108
+ confirmText: confirmText,
109
+ showTitle: showTitle,
110
+ showSubTitle: showSubTitle,
111
+ toDateAnimation: toDateAnimation,
112
+ onBtn: onBtn,
113
+ onDay: onDay,
114
+ onTopInfo: onTopInfo,
115
+ onBottomInfo: onBottomInfo,
116
+ onChoose: choose,
117
+ onSelected: select
118
+ });
119
+ };
120
+
57
121
  return React__default.createElement(React__default.Fragment, null, poppable ? React__default.createElement(Popup, {
58
122
  visible: visible,
59
123
  position: "bottom",
60
124
  round: true,
125
+ duration: 0.5,
61
126
  closeable: true,
127
+ destroyOnClose: true,
62
128
  onClickOverlay: closePopup,
63
- onClickCloseIcon: closePopup
64
- }, React__default.createElement(CalendarItem, {
65
- type: type,
66
- isAutoBackFill: isAutoBackFill,
67
- poppable: poppable,
68
- title: locale.calendaritem.title || title,
69
- defaultValue: defaultValue,
70
- startDate: startDate,
71
- endDate: endDate,
72
- onUpdate: update,
73
- onClose: close,
74
- onChoose: choose
75
- })) : React__default.createElement(CalendarItem, {
76
- type: type,
77
- isAutoBackFill: isAutoBackFill,
78
- poppable: poppable,
79
- title: locale.calendaritem.title,
80
- defaultValue: defaultValue,
81
- startDate: startDate,
82
- endDate: endDate,
83
- onClose: close,
84
- onChoose: choose
85
- }));
86
- };
87
-
129
+ onClickCloseIcon: closePopup,
130
+ style: {
131
+ height: '85vh'
132
+ }
133
+ }, renderItem()) : renderItem());
134
+ });
88
135
  Calendar.defaultProps = defaultProps;
89
136
  Calendar.displayName = 'NutCalendar';
90
137
  export { Calendar as default };