@nutui/nutui-react 1.3.0 → 1.3.1-beta.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.
- package/dist/esm/Audio/style/index.js +4 -0
- package/dist/esm/Audio.js +293 -0
- package/dist/esm/Calendar/style/index.js +1 -2
- package/dist/esm/Calendar.js +80 -33
- package/dist/esm/CalendarItem.js +429 -231
- package/dist/esm/Cascader/style/index.js +2 -0
- package/dist/esm/Cascader.js +788 -0
- package/dist/esm/ConfigProvider.js +16 -0
- package/dist/esm/DatePicker.js +37 -6
- package/dist/esm/Dialog.js +9 -16
- package/dist/esm/Elevator.js +16 -5
- package/dist/esm/Grid/style/index.js +2 -0
- package/dist/esm/Grid.js +91 -0
- package/dist/esm/GridItem/style/index.js +2 -0
- package/dist/esm/GridItem.js +99 -0
- package/dist/esm/ImagePreview/style/index.js +2 -0
- package/dist/esm/ImagePreview.js +257 -0
- package/dist/esm/Menu/style/index.js +3 -0
- package/dist/esm/Menu.js +153 -0
- package/dist/esm/MenuItem/style/index.js +3 -0
- package/dist/esm/MenuItem.js +197 -0
- package/dist/esm/NoticeBar.js +3 -2
- package/dist/esm/Notify.js +2 -1
- package/dist/esm/Popover.js +4 -11
- package/dist/esm/Range.js +2 -45
- package/dist/esm/Swipe/style/index.js +2 -0
- package/dist/esm/Swipe.js +265 -0
- package/dist/esm/Swiper.js +2 -1
- package/dist/esm/TabPane.js +5 -33
- package/dist/esm/Tabs.js +6 -196
- package/dist/esm/TextArea.js +45 -4
- package/dist/esm/Toast.js +2 -1
- package/dist/esm/nutui-react.es.js +8 -0
- package/dist/esm/render-4a3856cb.js +32 -0
- package/dist/esm/tabpane-c957ab14.js +33 -0
- package/dist/esm/tabs-a48583e9.js +196 -0
- package/dist/esm/useClientRect-839d18c5.js +44 -0
- package/dist/locales/base.d.ts +16 -0
- package/dist/locales/base.js +1 -1
- package/dist/locales/en-US.js +17 -1
- package/dist/locales/id-ID.js +17 -1
- package/dist/locales/zh-CN.js +17 -1
- package/dist/locales/zh-TW.js +17 -1
- package/dist/nutui.react.es.js +2338 -530
- package/dist/nutui.react.umd.js +2345 -529
- package/dist/packages/audio/audio.scss +80 -0
- package/dist/packages/calendar/calendar.scss +57 -36
- package/dist/packages/calendaritem/calendaritem.scss +0 -191
- package/dist/packages/cascader/cascader.scss +69 -0
- package/dist/packages/grid/grid.scss +10 -0
- package/dist/packages/griditem/griditem.scss +103 -0
- package/dist/packages/imagepreview/imagepreview.scss +51 -0
- package/dist/packages/menu/menu.scss +72 -0
- package/dist/packages/menuitem/menuitem.scss +90 -0
- package/dist/packages/popup/popup.scss +1 -1
- package/dist/packages/searchbar/searchbar.scss +1 -0
- package/dist/packages/shortpassword/shortpassword.scss +6 -1
- package/dist/packages/swipe/swipe.scss +33 -0
- package/dist/packages/textarea/textarea.scss +16 -1
- package/dist/style.css +1 -1
- package/dist/style.es.js +1 -1
- package/dist/styles/font/iconfont.js +20 -18
- package/dist/styles/themes/default.scss +8 -0
- package/dist/styles/variables.scss +59 -8
- package/dist/types/audio/__test__/audio.spec.d.ts +1 -0
- package/dist/types/audio/audio.d.ts +18 -0
- package/dist/types/audio/audio.taro.d.ts +18 -0
- package/dist/types/audio/demo.d.ts +4 -0
- package/dist/types/audio/index.d.ts +2 -0
- package/dist/types/audio/index.taro.d.ts +2 -0
- package/dist/types/backtop/__test__/backtop.spec.d.ts +1 -0
- package/dist/types/calendar/__tests__/calendar.spec.d.ts +1 -0
- package/dist/types/calendar/calendar.d.ts +22 -2
- package/dist/types/calendar/demo.d.ts +1 -0
- package/dist/types/calendaritem/calendaritem.d.ts +21 -3
- package/dist/types/cascader/__tests__/cascader.spec.d.ts +1 -0
- package/dist/types/cascader/cascader.d.ts +25 -0
- package/dist/types/cascader/cascader.taro.d.ts +25 -0
- package/dist/types/cascader/cascaderItem.d.ts +25 -0
- package/dist/types/cascader/cascaderItem.taro.d.ts +25 -0
- package/dist/types/cascader/demo.d.ts +3 -0
- package/dist/types/cascader/helper.d.ts +4 -0
- package/dist/types/cascader/index.d.ts +2 -0
- package/dist/types/cascader/index.taro.d.ts +2 -0
- package/dist/types/cascader/tree.d.ts +12 -0
- package/dist/types/cascader/types.d.ts +28 -0
- package/dist/types/checkbox/checkbox.d.ts +2 -2
- package/dist/types/checkbox/checkbox.taro.d.ts +2 -2
- package/dist/types/checkboxgroup/checkboxgroup.d.ts +2 -2
- package/dist/types/checkboxgroup/checkboxgroup.taro.d.ts +2 -2
- package/dist/types/dialog/__test__/dialog.spec.d.ts +1 -0
- package/dist/types/dialog/config.d.ts +3 -3
- package/dist/types/dialog/dialog.d.ts +2 -1
- package/dist/types/dialog/dialog.taro.d.ts +2 -1
- package/dist/types/fixednav/fixednav.d.ts +2 -2
- package/dist/types/grid/__test__/grid.spec.d.ts +1 -0
- package/dist/types/grid/demo.d.ts +3 -0
- package/dist/types/grid/grid.d.ts +16 -0
- package/dist/types/grid/grid.taro.d.ts +16 -0
- package/dist/types/grid/index.d.ts +2 -0
- package/dist/types/grid/index.taro.d.ts +2 -0
- package/dist/types/griditem/griditem.d.ts +20 -0
- package/dist/types/griditem/griditem.taro.d.ts +20 -0
- package/dist/types/griditem/index.d.ts +2 -0
- package/dist/types/griditem/index.taro.d.ts +2 -0
- package/dist/types/icon/icon.d.ts +1 -2
- package/dist/types/icon/icon.taro.d.ts +1 -2
- package/dist/types/imagepreview/__test__/imagepreview.spec.d.ts +1 -0
- package/dist/types/imagepreview/demo.d.ts +3 -0
- package/dist/types/imagepreview/imagepreview.d.ts +26 -0
- package/dist/types/imagepreview/imagepreview.taro.d.ts +26 -0
- package/dist/types/imagepreview/index.d.ts +2 -0
- package/dist/types/imagepreview/index.taro.d.ts +2 -0
- package/dist/types/input/__test__/input.spec.d.ts +1 -0
- package/dist/types/menu/__test__/menu.spec.d.ts +1 -0
- package/dist/types/menu/demo.d.ts +4 -0
- package/dist/types/menu/index.d.ts +2 -0
- package/dist/types/menu/index.taro.d.ts +2 -0
- package/dist/types/menu/menu.d.ts +12 -0
- package/dist/types/menu/menu.taro.d.ts +12 -0
- package/dist/types/menuitem/index.d.ts +2 -0
- package/dist/types/menuitem/index.taro.d.ts +2 -0
- package/dist/types/menuitem/menuitem.d.ts +23 -0
- package/dist/types/menuitem/menuitem.taro.d.ts +23 -0
- package/dist/types/notify/__test__/notify.spec.d.ts +1 -0
- package/dist/types/notify/notify.d.ts +13 -0
- package/dist/types/notify/notify.taro.d.ts +13 -0
- package/dist/types/nutui.react.d.ts +95 -1
- package/dist/types/picker/doc.en.d.ts +142 -0
- package/dist/types/picker/picker.d.ts +2 -2
- package/dist/types/picker/picker.taro.d.ts +2 -2
- package/dist/types/popup/popup.d.ts +1 -1
- package/dist/types/popup/popup.taro.d.ts +1 -1
- package/dist/types/shortpassword/shortpassword.taro.d.ts +3 -3
- package/dist/types/sidenavbar/sidenavbar.d.ts +14 -2
- package/dist/types/sidenavbar/sidenavbar.taro.d.ts +14 -2
- package/dist/types/sidenavbaritem/sidenavbaritem.d.ts +10 -2
- package/dist/types/sidenavbaritem/sidenavbaritem.taro.d.ts +10 -2
- package/dist/types/subsidenavbar/subsidenavbar.d.ts +13 -3
- package/dist/types/subsidenavbar/subsidenavbar.taro.d.ts +13 -3
- package/dist/types/swipe/__tests__/swipe.spec.d.ts +1 -0
- package/dist/types/swipe/demo.d.ts +3 -0
- package/dist/types/swipe/index.d.ts +2 -0
- package/dist/types/swipe/index.taro.d.ts +2 -0
- package/dist/types/swipe/swipe.d.ts +41 -0
- package/dist/types/swipe/swipe.taro.d.ts +41 -0
- package/dist/types/swiper/swiper.d.ts +1 -2
- package/dist/types/swiperitem/swiperitem.d.ts +1 -2
- package/dist/types/table/table.d.ts +2 -1
- package/dist/types/table/table.taro.d.ts +2 -1
- package/dist/types/table/types.d.ts +1 -1
- package/dist/types/textarea/__test__/textarea.spec.d.ts +1 -0
- package/dist/types/toast/toast.d.ts +21 -0
- package/dist/types/toast/toast.taro.d.ts +18 -0
- package/dist/types/virtuallist/type.d.ts +1 -1
- package/dist/types/virtuallist/virtuallist.d.ts +2 -1
- package/dist/types/virtuallist/virtuallist.taro.d.ts +2 -1
- package/package.json +4 -4
|
@@ -114,6 +114,22 @@ var zhCN = {
|
|
|
114
114
|
title4: '搜索框文本设置',
|
|
115
115
|
title5: '自定义图标设置',
|
|
116
116
|
title6: '数据改变监听'
|
|
117
|
+
},
|
|
118
|
+
audio: {
|
|
119
|
+
back: '快退',
|
|
120
|
+
forward: '快进',
|
|
121
|
+
pause: '暂停',
|
|
122
|
+
start: '开始',
|
|
123
|
+
mute: '静音',
|
|
124
|
+
tips: 'onPlayEnd事件在loop=false时才会触发'
|
|
125
|
+
},
|
|
126
|
+
datepicker: {
|
|
127
|
+
year: '年',
|
|
128
|
+
month: '月',
|
|
129
|
+
day: '日',
|
|
130
|
+
hour: '时',
|
|
131
|
+
min: '分',
|
|
132
|
+
seconds: '秒'
|
|
117
133
|
}
|
|
118
134
|
};
|
|
119
135
|
var defaultProps = {
|
package/dist/esm/DatePicker.js
CHANGED
|
@@ -10,6 +10,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
10
10
|
|
|
11
11
|
import React__default, { useState, useRef, useEffect } from 'react';
|
|
12
12
|
import Picker from './Picker.js';
|
|
13
|
+
import { useConfig } from './ConfigProvider.js';
|
|
13
14
|
var currentYear = new Date().getFullYear();
|
|
14
15
|
var defaultProps = {
|
|
15
16
|
modelValue: null,
|
|
@@ -42,6 +43,35 @@ var DatePicker = function DatePicker(props) {
|
|
|
42
43
|
style = _defaultProps$props.style,
|
|
43
44
|
rest = _objectWithoutProperties(_defaultProps$props, _excluded);
|
|
44
45
|
|
|
46
|
+
var _useConfig = useConfig(),
|
|
47
|
+
locale = _useConfig.locale; // const [translated] = useTranslate<T>({
|
|
48
|
+
// 'zh-CN': {
|
|
49
|
+
// year: '年',
|
|
50
|
+
// month: '月',
|
|
51
|
+
// day: '日',
|
|
52
|
+
// hour: '时',
|
|
53
|
+
// min: '分',
|
|
54
|
+
// seconds: '秒',
|
|
55
|
+
// },
|
|
56
|
+
// 'zh-TW': {
|
|
57
|
+
// year: '年',
|
|
58
|
+
// month: '月',
|
|
59
|
+
// day: '日',
|
|
60
|
+
// hour: '時',
|
|
61
|
+
// min: '分',
|
|
62
|
+
// seconds: '秒',
|
|
63
|
+
// },
|
|
64
|
+
// 'en-US': {
|
|
65
|
+
// year: 'Year',
|
|
66
|
+
// month: 'Month',
|
|
67
|
+
// day: 'Day',
|
|
68
|
+
// hour: 'Hour',
|
|
69
|
+
// min: 'Minute',
|
|
70
|
+
// seconds: 'Second',
|
|
71
|
+
// },
|
|
72
|
+
// })
|
|
73
|
+
|
|
74
|
+
|
|
45
75
|
var _useState = useState(false),
|
|
46
76
|
_useState2 = _slicedToArray(_useState, 2),
|
|
47
77
|
show = _useState2[0],
|
|
@@ -68,13 +98,14 @@ var DatePicker = function DatePicker(props) {
|
|
|
68
98
|
return Object.prototype.toString.call(val) === '[object Date]' && !Number.isNaN(val.getTime());
|
|
69
99
|
};
|
|
70
100
|
|
|
101
|
+
var datepickerLang = locale.datepicker;
|
|
71
102
|
var zhCNType = {
|
|
72
|
-
day:
|
|
73
|
-
year:
|
|
74
|
-
month:
|
|
75
|
-
hour:
|
|
76
|
-
minute:
|
|
77
|
-
seconds:
|
|
103
|
+
day: datepickerLang.day,
|
|
104
|
+
year: datepickerLang.year,
|
|
105
|
+
month: datepickerLang.month,
|
|
106
|
+
hour: datepickerLang.hour,
|
|
107
|
+
minute: datepickerLang.min,
|
|
108
|
+
seconds: datepickerLang.seconds
|
|
78
109
|
};
|
|
79
110
|
|
|
80
111
|
var formatValue = function formatValue(value) {
|
package/dist/esm/Dialog.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
var _excluded = ["visible", "footer", "noOkBtn", "noCancelBtn", "lockScroll", "okBtnDisabled", "cancelAutoClose", "okText", "cancelText", "onClosed", "onCancel", "onOk"];
|
|
3
|
+
var _excluded = ["visible", "footer", "noFooter", "noOkBtn", "noCancelBtn", "lockScroll", "okBtnDisabled", "cancelAutoClose", "okText", "cancelText", "onClosed", "onCancel", "onOk"];
|
|
4
4
|
|
|
5
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
6
|
|
|
@@ -12,7 +12,6 @@ import classNames from 'classnames';
|
|
|
12
12
|
import Button from './Button.js';
|
|
13
13
|
import { CSSTransition } from 'react-transition-group';
|
|
14
14
|
import ReactDOM__default from 'react-dom';
|
|
15
|
-
import { useConfig } from './ConfigProvider.js';
|
|
16
15
|
|
|
17
16
|
var Content = function Content(props) {
|
|
18
17
|
var visible = props.visible,
|
|
@@ -241,8 +240,8 @@ function confirm(config, renderFunc) {
|
|
|
241
240
|
}
|
|
242
241
|
|
|
243
242
|
var defaultProps = {
|
|
244
|
-
okText: '',
|
|
245
|
-
cancelText: '',
|
|
243
|
+
okText: '确认',
|
|
244
|
+
cancelText: '取消',
|
|
246
245
|
mask: true,
|
|
247
246
|
closeOnClickOverlay: true,
|
|
248
247
|
noFooter: false,
|
|
@@ -256,11 +255,9 @@ var defaultProps = {
|
|
|
256
255
|
};
|
|
257
256
|
|
|
258
257
|
var BaseDialog = function BaseDialog(props, ref) {
|
|
259
|
-
var _useConfig = useConfig(),
|
|
260
|
-
locale = _useConfig.locale;
|
|
261
|
-
|
|
262
258
|
var visible = props.visible,
|
|
263
259
|
footer = props.footer,
|
|
260
|
+
noFooter = props.noFooter,
|
|
264
261
|
noOkBtn = props.noOkBtn,
|
|
265
262
|
noCancelBtn = props.noCancelBtn,
|
|
266
263
|
lockScroll = props.lockScroll,
|
|
@@ -274,7 +271,7 @@ var BaseDialog = function BaseDialog(props, ref) {
|
|
|
274
271
|
restProps = _objectWithoutProperties(props, _excluded);
|
|
275
272
|
|
|
276
273
|
var renderFooter = function renderFooter() {
|
|
277
|
-
if (footer === null) return '';
|
|
274
|
+
if (footer === null || noFooter) return '';
|
|
278
275
|
|
|
279
276
|
var handleCancel = function handleCancel(e) {
|
|
280
277
|
e.stopPropagation();
|
|
@@ -302,20 +299,16 @@ var BaseDialog = function BaseDialog(props, ref) {
|
|
|
302
299
|
plain: true,
|
|
303
300
|
type: "primary",
|
|
304
301
|
className: "nut-dialog__footer-cancel",
|
|
305
|
-
onClick:
|
|
306
|
-
|
|
307
|
-
}
|
|
308
|
-
}, cancelText || locale.cancel), !noOkBtn && React__default.createElement(Button, {
|
|
302
|
+
onClick: handleCancel
|
|
303
|
+
}, cancelText), !noOkBtn && React__default.createElement(Button, {
|
|
309
304
|
size: "small",
|
|
310
305
|
type: "primary",
|
|
311
306
|
className: classNames('nut-dialog__footer-ok', {
|
|
312
307
|
disabled: okBtnDisabled
|
|
313
308
|
}),
|
|
314
309
|
disabled: okBtnDisabled,
|
|
315
|
-
onClick:
|
|
316
|
-
|
|
317
|
-
}
|
|
318
|
-
}, okText || locale.confirm));
|
|
310
|
+
onClick: handleOk
|
|
311
|
+
}, okText));
|
|
319
312
|
return footerContent;
|
|
320
313
|
};
|
|
321
314
|
|
package/dist/esm/Elevator.js
CHANGED
|
@@ -135,10 +135,12 @@ var Elevator = function Elevator(props) {
|
|
|
135
135
|
var touchMove = function touchMove(e) {
|
|
136
136
|
var firstTouch = e.touches[0];
|
|
137
137
|
touchState.current.y2 = firstTouch.pageY;
|
|
138
|
-
var delta = (touchState.current.y2 - touchState.current.y1) / spaceHeight || 0;
|
|
139
|
-
|
|
138
|
+
var delta = (touchState.current.y2 - touchState.current.y1) / spaceHeight || 0; // delta 是一个浮点数, 需要四舍五入一下, 否则页面会找不到最终计算后的index
|
|
139
|
+
|
|
140
|
+
var cacheIndex = state.current.anchorIndex + Math.ceil(delta);
|
|
140
141
|
setCodeIndex(cacheIndex);
|
|
141
142
|
scrollTo(cacheIndex);
|
|
143
|
+
e.preventDefault();
|
|
142
144
|
};
|
|
143
145
|
|
|
144
146
|
var touchEnd = function touchEnd() {
|
|
@@ -229,6 +231,17 @@ var Elevator = function Elevator(props) {
|
|
|
229
231
|
if (state.current.fixedTop === fixedTop) return;
|
|
230
232
|
state.current.fixedTop = fixedTop;
|
|
231
233
|
}, [state.current.diff, titleHeight]);
|
|
234
|
+
var refIndexBar = useRef(null); // 之前的代码, 手指在index条上下移动的时候, 下面的列表也会跟随滚动, 需要阻止默认事件
|
|
235
|
+
// 如果使用react的touchmove, 没有找到可以设置passive的选项, 无法阻止默认事件, 所以使用了原生的方法进行添加
|
|
236
|
+
|
|
237
|
+
useEffect(function () {
|
|
238
|
+
refIndexBar.current && refIndexBar.current.addEventListener('touchmove', touchMove, {
|
|
239
|
+
passive: false
|
|
240
|
+
});
|
|
241
|
+
return function () {
|
|
242
|
+
refIndexBar.current && refIndexBar.current.removeEventListener('touchmove', touchMove);
|
|
243
|
+
};
|
|
244
|
+
}, []);
|
|
232
245
|
return React__default.createElement("div", _objectSpread({
|
|
233
246
|
className: "".concat(b(), " ").concat(className)
|
|
234
247
|
}, rest), isSticky && scrollY > 0 ? React__default.createElement("div", {
|
|
@@ -267,12 +280,10 @@ var Elevator = function Elevator(props) {
|
|
|
267
280
|
current: true
|
|
268
281
|
})
|
|
269
282
|
}, indexList[codeIndex][acceptKey]) : null, React__default.createElement("div", {
|
|
283
|
+
ref: refIndexBar,
|
|
270
284
|
className: b('bars'),
|
|
271
285
|
onTouchStart: function onTouchStart(event) {
|
|
272
286
|
return touchStart(event);
|
|
273
|
-
},
|
|
274
|
-
onTouchMove: function onTouchMove(event) {
|
|
275
|
-
return touchMove(event);
|
|
276
287
|
}
|
|
277
288
|
}, React__default.createElement("div", {
|
|
278
289
|
className: b('bars__inner')
|
package/dist/esm/Grid.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["children", "columnNum", "border", "gutter", "center", "square", "reverse", "direction", "style", "iconSize", "iconColor", "className"];
|
|
4
|
+
|
|
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
|
+
|
|
7
|
+
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; }
|
|
8
|
+
|
|
9
|
+
import React__default from 'react';
|
|
10
|
+
import { useConfig } from './ConfigProvider.js';
|
|
11
|
+
import { c as cn } from './bem-893ad28d.js';
|
|
12
|
+
import '@bem-react/classname';
|
|
13
|
+
var defaultProps = {
|
|
14
|
+
columnNum: 4,
|
|
15
|
+
border: true,
|
|
16
|
+
gutter: 0,
|
|
17
|
+
center: true,
|
|
18
|
+
square: false,
|
|
19
|
+
reverse: false,
|
|
20
|
+
direction: 'vertical',
|
|
21
|
+
iconSize: 28,
|
|
22
|
+
iconColor: ''
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
var Grid = function Grid(props) {
|
|
26
|
+
useConfig();
|
|
27
|
+
|
|
28
|
+
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
|
|
29
|
+
children = _defaultProps$props.children,
|
|
30
|
+
columnNum = _defaultProps$props.columnNum,
|
|
31
|
+
border = _defaultProps$props.border,
|
|
32
|
+
gutter = _defaultProps$props.gutter,
|
|
33
|
+
center = _defaultProps$props.center,
|
|
34
|
+
square = _defaultProps$props.square,
|
|
35
|
+
reverse = _defaultProps$props.reverse,
|
|
36
|
+
direction = _defaultProps$props.direction,
|
|
37
|
+
style = _defaultProps$props.style,
|
|
38
|
+
iconSize = _defaultProps$props.iconSize,
|
|
39
|
+
iconColor = _defaultProps$props.iconColor,
|
|
40
|
+
className = _defaultProps$props.className,
|
|
41
|
+
rest = _objectWithoutProperties(_defaultProps$props, _excluded);
|
|
42
|
+
|
|
43
|
+
var childrenDom = React__default.Children.toArray(children);
|
|
44
|
+
|
|
45
|
+
var pxCheck = function pxCheck(value) {
|
|
46
|
+
return Number.isNaN(Number(value)) ? String(value) : "".concat(value, "px");
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
var b = cn('grid');
|
|
50
|
+
|
|
51
|
+
var rootClass = function rootClass() {
|
|
52
|
+
var prefixCls = b();
|
|
53
|
+
return "".concat(className, " ").concat(prefixCls, " ").concat(border && !gutter ? "".concat(b('border')) : '');
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
var rootStyle = function rootStyle() {
|
|
57
|
+
var styleSelf = {};
|
|
58
|
+
|
|
59
|
+
if (style) {
|
|
60
|
+
styleSelf = style;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (gutter) {
|
|
64
|
+
styleSelf.paddingLeft = pxCheck(gutter);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return styleSelf;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
return React__default.createElement("div", _objectSpread({
|
|
71
|
+
className: rootClass(),
|
|
72
|
+
style: rootStyle()
|
|
73
|
+
}, rest), childrenDom.map(function (item, idex) {
|
|
74
|
+
return React__default.cloneElement(item, {
|
|
75
|
+
index: idex,
|
|
76
|
+
columnNum: columnNum,
|
|
77
|
+
center: center,
|
|
78
|
+
border: border,
|
|
79
|
+
gutter: gutter,
|
|
80
|
+
square: square,
|
|
81
|
+
reverse: reverse,
|
|
82
|
+
direction: direction,
|
|
83
|
+
parentIconSize: iconSize,
|
|
84
|
+
parentIconColor: iconColor
|
|
85
|
+
});
|
|
86
|
+
}));
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
Grid.defaultProps = defaultProps;
|
|
90
|
+
Grid.displayName = 'NutGrid';
|
|
91
|
+
export { Grid as default };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["children", "columnNum", "index", "gutter", "square", "text", "icon", "iconColor", "iconSize", "parentIconSize", "parentIconColor", "border", "center", "reverse", "direction"];
|
|
4
|
+
|
|
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
|
+
|
|
7
|
+
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; }
|
|
8
|
+
|
|
9
|
+
import React__default from 'react';
|
|
10
|
+
import { useConfig } from './ConfigProvider.js';
|
|
11
|
+
import { c as cn } from './bem-893ad28d.js';
|
|
12
|
+
import Icon from './Icon.js';
|
|
13
|
+
import '@bem-react/classname';
|
|
14
|
+
var defaultProps = {
|
|
15
|
+
text: '',
|
|
16
|
+
icon: '',
|
|
17
|
+
iconSize: '',
|
|
18
|
+
iconColor: '',
|
|
19
|
+
parentIconSize: '',
|
|
20
|
+
parentIconColor: '',
|
|
21
|
+
columnNum: 4,
|
|
22
|
+
border: true,
|
|
23
|
+
gutter: 0,
|
|
24
|
+
center: true,
|
|
25
|
+
square: false,
|
|
26
|
+
reverse: false,
|
|
27
|
+
direction: 'vertical'
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
var GridItem = function GridItem(props) {
|
|
31
|
+
useConfig();
|
|
32
|
+
|
|
33
|
+
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
|
|
34
|
+
children = _defaultProps$props.children,
|
|
35
|
+
columnNum = _defaultProps$props.columnNum,
|
|
36
|
+
index = _defaultProps$props.index,
|
|
37
|
+
gutter = _defaultProps$props.gutter,
|
|
38
|
+
square = _defaultProps$props.square,
|
|
39
|
+
text = _defaultProps$props.text,
|
|
40
|
+
icon = _defaultProps$props.icon,
|
|
41
|
+
iconColor = _defaultProps$props.iconColor,
|
|
42
|
+
iconSize = _defaultProps$props.iconSize,
|
|
43
|
+
parentIconSize = _defaultProps$props.parentIconSize,
|
|
44
|
+
parentIconColor = _defaultProps$props.parentIconColor,
|
|
45
|
+
border = _defaultProps$props.border,
|
|
46
|
+
center = _defaultProps$props.center,
|
|
47
|
+
reverse = _defaultProps$props.reverse,
|
|
48
|
+
direction = _defaultProps$props.direction,
|
|
49
|
+
rest = _objectWithoutProperties(_defaultProps$props, _excluded);
|
|
50
|
+
|
|
51
|
+
var b = cn('grid-item');
|
|
52
|
+
|
|
53
|
+
var pxCheck = function pxCheck(value) {
|
|
54
|
+
return Number.isNaN(Number(value)) ? String(value) : "".concat(value, "px");
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
var rootStyle = function rootStyle() {
|
|
58
|
+
var style = {
|
|
59
|
+
flexBasis: "".concat(100 / +columnNum, "%")
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
if (square) {
|
|
63
|
+
style.paddingTop = "".concat(100 / +columnNum, "%");
|
|
64
|
+
} else if (gutter) {
|
|
65
|
+
style.paddingRight = pxCheck(gutter);
|
|
66
|
+
|
|
67
|
+
if (index >= columnNum) {
|
|
68
|
+
style.marginTop = pxCheck(gutter);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return style;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
var contentClass = function contentClass() {
|
|
76
|
+
return "".concat(b('content'), " ").concat(border && b('content--border'), " ").concat(border && gutter && b('content--surround'), " ").concat(center && b('content--center'), " ").concat(square && b('content--square'), " ").concat(reverse && b('content--reverse'), " ").concat(!!direction && b("content--".concat(direction)), "\n ");
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
var isIconName = function isIconName() {
|
|
80
|
+
return typeof icon === 'string';
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
return React__default.createElement("div", _objectSpread({
|
|
84
|
+
className: b(),
|
|
85
|
+
style: rootStyle()
|
|
86
|
+
}, rest), React__default.createElement("div", {
|
|
87
|
+
className: contentClass()
|
|
88
|
+
}, icon && isIconName() ? React__default.createElement(Icon, {
|
|
89
|
+
name: icon,
|
|
90
|
+
size: iconSize || parentIconSize,
|
|
91
|
+
color: iconColor || parentIconColor
|
|
92
|
+
}) : React__default.createElement(React__default.Fragment, null, icon), text && React__default.createElement("div", {
|
|
93
|
+
className: "nut-grid-item__text"
|
|
94
|
+
}, text), children && React__default.createElement(React__default.Fragment, null, children)));
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
GridItem.defaultProps = defaultProps;
|
|
98
|
+
GridItem.displayName = 'NutGridItem';
|
|
99
|
+
export { GridItem as default };
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
|
|
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
|
+
|
|
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
|
+
|
|
8
|
+
import React__default, { useRef, useState, useEffect } from 'react';
|
|
9
|
+
import Popup from './Popup.js';
|
|
10
|
+
import Video from './Video.js';
|
|
11
|
+
import Swiper from './Swiper.js';
|
|
12
|
+
import SwiperItem from './SwiperItem.js';
|
|
13
|
+
var defaultProps = {
|
|
14
|
+
images: [],
|
|
15
|
+
videos: [],
|
|
16
|
+
show: false,
|
|
17
|
+
autoplay: 3000,
|
|
18
|
+
initNo: 1,
|
|
19
|
+
contentClose: false,
|
|
20
|
+
paginationVisible: false,
|
|
21
|
+
paginationColor: '#fff',
|
|
22
|
+
onClose: function onClose() {}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
var ImagePreview = function ImagePreview(props) {
|
|
26
|
+
var images = props.images,
|
|
27
|
+
videos = props.videos,
|
|
28
|
+
show = props.show,
|
|
29
|
+
initNo = props.initNo,
|
|
30
|
+
paginationColor = props.paginationColor,
|
|
31
|
+
paginationVisible = props.paginationVisible,
|
|
32
|
+
autoplay = props.autoplay,
|
|
33
|
+
contentClose = props.contentClose,
|
|
34
|
+
onClose = props.onClose;
|
|
35
|
+
var nutImagePreview = useRef(null);
|
|
36
|
+
|
|
37
|
+
var _useState = useState(false),
|
|
38
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
39
|
+
showPop = _useState2[0],
|
|
40
|
+
setShowPop = _useState2[1];
|
|
41
|
+
|
|
42
|
+
var _useState3 = useState(1),
|
|
43
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
44
|
+
active = _useState4[0],
|
|
45
|
+
setActive = _useState4[1];
|
|
46
|
+
|
|
47
|
+
var _useState5 = useState(1),
|
|
48
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
49
|
+
maxNo = _useState6[0],
|
|
50
|
+
setMaxNo = _useState6[1];
|
|
51
|
+
|
|
52
|
+
var _useState7 = useState({
|
|
53
|
+
scale: 1,
|
|
54
|
+
moveable: false
|
|
55
|
+
}),
|
|
56
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
57
|
+
store = _useState8[0],
|
|
58
|
+
setStore = _useState8[1];
|
|
59
|
+
|
|
60
|
+
var _useState9 = useState(0),
|
|
61
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
62
|
+
lastTouchEndTime = _useState10[0],
|
|
63
|
+
setLastTouchEndTime = _useState10[1]; // 用来辅助监听双击
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
var onTouchStart = function onTouchStart(event) {
|
|
67
|
+
var touches = event.touches;
|
|
68
|
+
var events = touches[0];
|
|
69
|
+
var events2 = touches[1]; // 如果已经放大,双击应变回原尺寸;如果是原尺寸,双击应放大
|
|
70
|
+
|
|
71
|
+
var curTouchTime = new Date().getTime();
|
|
72
|
+
|
|
73
|
+
if (curTouchTime - lastTouchEndTime < 300) {
|
|
74
|
+
var _store = store;
|
|
75
|
+
|
|
76
|
+
if (_store.scale > 1) {
|
|
77
|
+
_store.scale = 1;
|
|
78
|
+
} else if (_store.scale === 1) {
|
|
79
|
+
_store.scale = 2;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
scaleNow();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
var store1 = store;
|
|
86
|
+
store1.moveable = true;
|
|
87
|
+
|
|
88
|
+
if (events2) {
|
|
89
|
+
// 如果开始两指操作,记录初始时刻两指间的距离
|
|
90
|
+
store1.oriDistance = getDistance({
|
|
91
|
+
x: events.pageX,
|
|
92
|
+
y: events.pageY
|
|
93
|
+
}, {
|
|
94
|
+
x: events2.pageX,
|
|
95
|
+
y: events2.pageY
|
|
96
|
+
});
|
|
97
|
+
} // 取到开始两指操作时的放大(缩小比例),store.scale 存储的是当前的放缩比(相对于标准大小 scale 为 1 的情况的放大缩小比)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
store1.originScale = store1.scale || 1;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
var onTouchMove = function onTouchMove(event) {
|
|
104
|
+
var touches = event.touches;
|
|
105
|
+
var events = touches[0];
|
|
106
|
+
var events2 = touches[1];
|
|
107
|
+
|
|
108
|
+
if (!store.moveable) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
var store1 = store; // 双指移动
|
|
113
|
+
|
|
114
|
+
if (events2) {
|
|
115
|
+
// 获得当前两点间的距离
|
|
116
|
+
var curDistance = getDistance({
|
|
117
|
+
x: events.pageX,
|
|
118
|
+
y: events.pageY
|
|
119
|
+
}, {
|
|
120
|
+
x: events2.pageX,
|
|
121
|
+
y: events2.pageY
|
|
122
|
+
});
|
|
123
|
+
/** 此处计算倍数,距离放大(缩小) k 倍则 scale 也 扩大(缩小) k 倍。距离放大(缩小)倍数 = 结束时两点距离 除以 开始时两点距离
|
|
124
|
+
* 注意此处的 scale 变化是基于 store.scale 的。
|
|
125
|
+
* store.scale 是一个暂存值,比如第一次放大 2 倍,则 store.scale 为 2。
|
|
126
|
+
* 再次两指触碰的时候,store.originScale 就为 store.scale 的值,基于此时的 store.scale 继续放大缩小。 * */
|
|
127
|
+
|
|
128
|
+
var curScale = curDistance / store1.oriDistance;
|
|
129
|
+
store1.scale = store1.originScale * curScale; // 最大放大 3 倍,缩小后松手要弹回原比例
|
|
130
|
+
|
|
131
|
+
if (store1.scale > 3) {
|
|
132
|
+
store1.scale = 3;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
scaleNow();
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
var onTouchEnd = function onTouchEnd() {
|
|
140
|
+
setLastTouchEndTime(new Date().getTime());
|
|
141
|
+
var store1 = store;
|
|
142
|
+
store1.moveable = false;
|
|
143
|
+
|
|
144
|
+
if (store1.scale < 1.1 && store1.scale > 1 || store1.scale < 1) {
|
|
145
|
+
store1.scale = 1;
|
|
146
|
+
scaleNow();
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
var init = function init() {
|
|
151
|
+
document.addEventListener('touchmove', onTouchMove);
|
|
152
|
+
document.addEventListener('touchend', onTouchEnd);
|
|
153
|
+
document.addEventListener('touchcancel', onTouchEnd);
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
useEffect(function () {
|
|
157
|
+
if (show !== undefined) {
|
|
158
|
+
setShowPop(show);
|
|
159
|
+
init();
|
|
160
|
+
}
|
|
161
|
+
}, [show]);
|
|
162
|
+
useEffect(function () {
|
|
163
|
+
if (initNo !== undefined) {
|
|
164
|
+
setActive(initNo);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (show !== undefined) {
|
|
168
|
+
setShowPop(show);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (images && videos) {
|
|
172
|
+
setMaxNo(images.length + videos.length);
|
|
173
|
+
}
|
|
174
|
+
}, []);
|
|
175
|
+
|
|
176
|
+
var scaleNow = function scaleNow() {
|
|
177
|
+
if (nutImagePreview.current) {
|
|
178
|
+
nutImagePreview.current.style.transform = "scale(".concat(store.scale, ")");
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
var onCloseInner = function onCloseInner() {
|
|
183
|
+
setShowPop(false);
|
|
184
|
+
setActive(1);
|
|
185
|
+
scaleNow();
|
|
186
|
+
onClose && onClose();
|
|
187
|
+
setStore(_objectSpread(_objectSpread({}, store), {}, {
|
|
188
|
+
scale: 1
|
|
189
|
+
}));
|
|
190
|
+
}; // 计算两个点的距离
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
var getDistance = function getDistance(first, second) {
|
|
194
|
+
// 计算两个点起始时刻的距离和终止时刻的距离,终止时刻距离变大了则放大,变小了则缩小
|
|
195
|
+
// 放大 k 倍则 scale 也 扩大 k 倍
|
|
196
|
+
return Math.hypot(Math.abs(second.x - first.x), Math.abs(second.y - first.y));
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
var slideChangeEnd = function slideChangeEnd(page) {
|
|
200
|
+
setActive(page + 1);
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
var closeOnImg = function closeOnImg() {
|
|
204
|
+
// 点击内容区域的图片是否可以关闭弹层(视频区域由于nut-video做了限制,无法关闭弹层)
|
|
205
|
+
if (contentClose) {
|
|
206
|
+
onCloseInner();
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
return React__default.createElement(Popup, {
|
|
211
|
+
visible: showPop,
|
|
212
|
+
popClass: "custom-pop",
|
|
213
|
+
style: {
|
|
214
|
+
width: '100%'
|
|
215
|
+
},
|
|
216
|
+
onClick: onCloseInner
|
|
217
|
+
}, React__default.createElement("div", {
|
|
218
|
+
className: "nut-imagepreview",
|
|
219
|
+
ref: nutImagePreview,
|
|
220
|
+
onClick: closeOnImg,
|
|
221
|
+
onTouchStart: onTouchStart
|
|
222
|
+
}, React__default.createElement(Swiper, {
|
|
223
|
+
autoPlay: autoplay,
|
|
224
|
+
className: "nut-imagepreview-swiper",
|
|
225
|
+
loop: true,
|
|
226
|
+
isPreventDefault: false,
|
|
227
|
+
style: {
|
|
228
|
+
display: showPop ? 'block' : 'none'
|
|
229
|
+
},
|
|
230
|
+
direction: "horizontal",
|
|
231
|
+
onChange: slideChangeEnd,
|
|
232
|
+
initPage: initNo && (initNo > maxNo ? maxNo - 1 : initNo - 1),
|
|
233
|
+
paginationColor: paginationColor,
|
|
234
|
+
paginationVisible: paginationVisible
|
|
235
|
+
}, videos && videos.length > 0 && videos.map(function (item, index) {
|
|
236
|
+
return React__default.createElement(SwiperItem, {
|
|
237
|
+
key: index
|
|
238
|
+
}, React__default.createElement(Video, {
|
|
239
|
+
source: item.source,
|
|
240
|
+
options: item.options
|
|
241
|
+
}));
|
|
242
|
+
}), images && images.length > 0 && images.map(function (item, index) {
|
|
243
|
+
return React__default.createElement(SwiperItem, {
|
|
244
|
+
key: index
|
|
245
|
+
}, React__default.createElement("img", {
|
|
246
|
+
src: item.src,
|
|
247
|
+
alt: "",
|
|
248
|
+
className: "nut-imagepreview-img"
|
|
249
|
+
}));
|
|
250
|
+
}))), React__default.createElement("div", {
|
|
251
|
+
className: "nut-imagepreview-index"
|
|
252
|
+
}, active, "/", (images ? images.length : 0) + (videos ? videos.length : 0)));
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
ImagePreview.defaultProps = defaultProps;
|
|
256
|
+
ImagePreview.displayName = 'NutImagePreview';
|
|
257
|
+
export { ImagePreview as default };
|