@nutui/nutui-react 2.0.0-alpha.2 → 2.0.0-alpha.4

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 (44) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/esm/Badge.js +4 -66
  3. package/dist/esm/CalendarItem.js +2 -12
  4. package/dist/esm/Cascader.js +4 -2
  5. package/dist/esm/CircleProgress.js +20 -25
  6. package/dist/esm/Dialog.js +162 -171
  7. package/dist/esm/Input.js +87 -193
  8. package/dist/esm/Popup.js +2 -4
  9. package/dist/esm/Switch.js +16 -30
  10. package/dist/esm/TabPane.js +0 -2
  11. package/dist/esm/Tabbar.js +29 -33
  12. package/dist/esm/TabbarItem.js +5 -75
  13. package/dist/esm/Tabs.js +2 -2
  14. package/dist/esm/badge2.js +69 -0
  15. package/dist/esm/nutui-react.es.js +170 -170
  16. package/dist/esm/overlay2.js +12 -14
  17. package/dist/esm/raf.js +16 -0
  18. package/dist/esm/tabbaritem2.js +61 -0
  19. package/dist/esm/tabpane2.js +7 -9
  20. package/dist/esm/tabs2.js +101 -93
  21. package/dist/locales/base.js +1 -1
  22. package/dist/locales/en-US.js +1 -1
  23. package/dist/locales/id-ID.js +1 -1
  24. package/dist/locales/zh-CN.js +1 -1
  25. package/dist/locales/zh-TW.js +1 -1
  26. package/dist/locales/zh-UG.js +1 -1
  27. package/dist/nutui.react.mjs +18569 -19365
  28. package/dist/nutui.react.umd.js +18567 -19363
  29. package/dist/packages/badge/badge.scss +0 -1
  30. package/dist/packages/circleprogress/circleprogress.scss +0 -9
  31. package/dist/packages/dialog/dialog.scss +36 -65
  32. package/dist/packages/input/input.scss +13 -180
  33. package/dist/packages/overlay/overlay.scss +11 -4
  34. package/dist/packages/switch/switch.scss +13 -31
  35. package/dist/packages/tabbar/tabbar.scss +16 -23
  36. package/dist/packages/tabbaritem/tabbaritem.scss +9 -70
  37. package/dist/packages/tabs/tabs.scss +196 -225
  38. package/dist/style.css +1 -1
  39. package/dist/style.mjs +1 -1
  40. package/dist/styles/themes/default.scss +17 -17
  41. package/dist/styles/variables-jmapp.scss +24 -27
  42. package/dist/styles/variables.scss +34 -30
  43. package/dist/types/index.d.ts +366 -423
  44. package/package.json +2 -2
@@ -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", "noFooter", "noOkBtn", "noCancelBtn", "lockScroll", "okBtnDisabled", "cancelAutoClose", "confirmText", "cancelText", "onClosed", "onCancel", "onOk"];
3
+ var _excluded = ["visible", "footer", "hideConfirmButton", "hideCancelButton", "lockScroll", "disableConfirmButton", "closeOnOverlayClick", "confirmText", "cancelText", "onClose", "onCancel", "onConfirm", "beforeCancel", "beforeClose"];
4
4
  function ownKeys(object, enumerableOnly) {
5
5
  var keys = Object.keys(object);
6
6
  if (Object.getOwnPropertySymbols) {
@@ -22,262 +22,253 @@ function _objectSpread(target) {
22
22
  }
23
23
  return target;
24
24
  }
25
- import * as React from "react";
26
- import React__default, { useEffect, forwardRef } from "react";
25
+ import React__default, { forwardRef } from "react";
27
26
  import classNames from "classnames";
28
27
  import Button from "./Button.js";
29
- import { CSSTransition } from "react-transition-group";
30
28
  import { r as render, u as unmount } from "./render.js";
29
+ import { CSSTransition } from "react-transition-group";
30
+ import { d as defaultOverlayProps } from "./overlay2.js";
31
+ import { C as ComponentDefaults } from "./typings.js";
32
+ import Overlay from "./Overlay.js";
33
+ import { useConfig } from "./ConfigProvider.js";
31
34
  import "react-dom";
32
- var Content = function Content2(props) {
33
- var visible = props.visible, title = props.title, footer = props.footer, textAlign = props.textAlign, footerDirection = props.footerDirection, onClickSelf = props.onClickSelf, children = props.children;
34
- var headerNode;
35
- if (title) {
36
- headerNode = React__default.createElement("div", {
37
- className: "nut-dialog__header"
38
- }, title);
39
- }
40
- var footerNode;
41
- if (footer) {
42
- footerNode = React__default.createElement("div", {
43
- className: classNames("nut-dialog__footer", _defineProperty({}, footerDirection, footerDirection))
44
- }, footer);
45
- }
46
- var handleClick = function handleClick2() {
47
- onClickSelf && onClickSelf();
48
- };
49
- return React__default.createElement("div", {
50
- className: "nut-dialog__outer",
51
- onClick: handleClick
52
- }, React__default.createElement("div", {
53
- className: "nut-dialog",
54
- style: {
55
- display: visible ? "flex" : "none"
56
- }
57
- }, headerNode, React__default.createElement("div", {
58
- className: "nut-dialog__content",
59
- style: {
60
- textAlign
61
- }
62
- }, React__default.createElement("div", null, children)), footerNode));
63
- };
64
- Content.displayName = "NutContent";
65
- function Mask(props) {
66
- return React.createElement("div", {
67
- className: "nut-dialog__mask"
68
- });
69
- }
70
- var DialogWrap = function DialogWrap2(props) {
71
- var className = props.className, style = props.style, visible = props.visible, mask = props.mask, closeOnClickOverlay = props.closeOnClickOverlay, lockScroll = props.lockScroll, onClosed = props.onClosed, onCancel = props.onCancel;
72
- var handleClick = function handleClick2(e) {
73
- if (closeOnClickOverlay && visible && e.target === e.currentTarget) {
74
- onClosed === null || onClosed === void 0 ? void 0 : onClosed();
75
- onCancel === null || onCancel === void 0 ? void 0 : onCancel();
76
- lockScroll && document.body.classList.remove("nut-overflow-hidden");
77
- }
78
- };
79
- var wrapStyle = _objectSpread(_objectSpread({}, style), {}, {
80
- display: visible ? "block" : "none"
81
- });
82
- if (lockScroll && visible) {
83
- document.body.classList.add("nut-overflow-hidden");
84
- }
85
- return React__default.createElement(React__default.Fragment, null, mask ? React__default.createElement(CSSTransition, {
86
- "in": visible,
87
- timeout: 300,
88
- classNames: "fadeDialog",
89
- unmountOnExit: true,
90
- appear: true
91
- }, React__default.createElement(Mask, null)) : null, React__default.createElement("div", {
92
- className: classNames("nut-dialog__wrap", className),
93
- onClick: handleClick,
94
- style: wrapStyle
95
- }, React__default.createElement(Content, _objectSpread(_objectSpread({}, props), {}, {
96
- visible
97
- }))));
98
- };
99
- DialogWrap.displayName = "NutDialogWrap";
100
- var DialogWrapper = function DialogWrapper2(props) {
101
- var visible = props.visible, lockScroll = props.lockScroll;
102
- useEffect(function() {
103
- if (lockScroll && visible) {
104
- document.body.classList.add("nut-overflow-hidden");
105
- } else {
106
- document.body.classList.remove("nut-overflow-hidden");
107
- }
108
- }, [visible]);
109
- useEffect(function() {
110
- return function() {
111
- if (document.body.classList.value.includes("nut-overflow-hidden")) {
112
- document.body.classList.remove("nut-overflow-hidden");
113
- }
114
- };
115
- }, []);
116
- return React__default.createElement("div", {
117
- style: {
118
- display: visible ? "block" : "none"
119
- }
120
- }, React__default.createElement(DialogWrap, _objectSpread({}, props)));
121
- };
122
- DialogWrapper.displayName = "NutDialogWrapper";
123
35
  function ConfirmDialog(props) {
124
36
  return React__default.createElement(Dialog, _objectSpread({}, props), props.content);
125
37
  }
126
- var normalizeConfig = function normalizeConfig2(_config) {
127
- if (_config.isNotice) {
128
- var icon = _config.icon;
38
+ var normalizeConfig = function normalizeConfig2(config) {
39
+ if (config.isNotice) {
40
+ var icon = config.icon;
129
41
  if (!icon && icon !== null) {
130
- switch (_config.noticeType) {
42
+ switch (config.noticeType) {
131
43
  case "alert":
132
44
  icon = "";
133
45
  break;
134
46
  }
135
47
  }
136
- _config.noCancelBtn = true;
48
+ config.hideCancelButton = true;
137
49
  }
138
- return _config;
50
+ return config;
139
51
  };
140
- function confirm(config, renderFunc) {
52
+ var confirm = function confirm2(config, renderFunc) {
141
53
  var div = document.createElement("div");
142
54
  document.body.appendChild(div);
143
- function render$1(props, callback) {
55
+ var dialogConfig = _objectSpread(_objectSpread({}, config), {}, {
56
+ visible: false
57
+ });
58
+ var render$1 = function render$12(props, callback) {
144
59
  render(React__default.createElement(ConfirmDialog, _objectSpread(_objectSpread({}, props), {}, {
145
- onCancel
60
+ onCancel: function onCancel2() {
61
+ return _onCancel();
62
+ }
146
63
  })), div);
147
64
  callback && callback();
148
- }
65
+ };
149
66
  var renderFunction = renderFunc || render$1;
150
- var dialogConfig = _objectSpread(_objectSpread({}, config), {}, {
151
- visible: false
152
- });
153
- var onOk = function onOk2() {
154
- var ret;
155
- var _onOk = config.onOk || config.onConfirm;
156
- if (_onOk) {
157
- ret = _onOk();
158
- }
67
+ var onConfirm = function onConfirm2() {
68
+ var _onConfirm = config.onConfirm || config.onConfirm;
69
+ var ret = _onConfirm === null || _onConfirm === void 0 ? void 0 : _onConfirm();
159
70
  if (ret && ret.then) {
160
71
  renderFunction(dialogConfig);
161
72
  ret.then(function() {
162
- onCancel(true);
73
+ _onCancel(true);
163
74
  }, function(e) {
164
75
  console.error(e);
165
76
  renderFunction(dialogConfig);
166
77
  });
167
78
  }
168
79
  if (!ret) {
169
- onCancel(true);
80
+ _onCancel(true);
170
81
  }
171
82
  };
172
- dialogConfig.onOk = onOk;
83
+ dialogConfig.onConfirm = onConfirm;
173
84
  dialogConfig = normalizeConfig(dialogConfig);
174
85
  dialogConfig.visible = true;
175
86
  renderFunction(dialogConfig);
176
- function destroy() {
87
+ var destroy = function destroy2() {
177
88
  unmount(div);
178
89
  if (div !== null && div !== void 0 && div.parentNode) {
179
90
  div.parentNode.removeChild(div);
180
91
  }
181
- }
182
- function onCancel(isOnOk) {
183
- !isOnOk && config.onCancel && config.onCancel();
92
+ };
93
+ var _onCancel = function _onCancel2(confirm22) {
94
+ !confirm22 && config.onCancel && config.onCancel();
184
95
  dialogConfig.visible = false;
185
- dialogConfig.onClosed = function() {
186
- config.onClosed && config.onClosed();
96
+ dialogConfig.onClose = function() {
97
+ config.onClose && config.onClose();
187
98
  };
188
99
  renderFunction(dialogConfig, function() {
189
100
  destroy();
190
101
  });
191
- }
192
- function update(newConfig) {
102
+ };
103
+ var update = function update2(newConfig) {
193
104
  dialogConfig = _objectSpread(_objectSpread({}, dialogConfig), {}, {
194
105
  title: config.title
195
106
  }, newConfig);
196
107
  dialogConfig = normalizeConfig(dialogConfig);
197
108
  renderFunction(dialogConfig);
198
- }
199
- function close() {
109
+ };
110
+ var close = function close2() {
200
111
  dialogConfig.visible = false;
201
- dialogConfig.onClosed = function() {
202
- config.onClosed && config.onClosed();
112
+ dialogConfig.onClose = function() {
113
+ config.onClose && config.onClose();
203
114
  destroy();
204
115
  };
205
116
  renderFunction(dialogConfig);
206
- }
117
+ };
207
118
  return {
208
119
  close,
209
120
  update
210
121
  };
211
- }
122
+ };
123
+ var confirm$1 = confirm;
124
+ var Content = function Content2(props) {
125
+ var visible = props.visible, title = props.title, footer = props.footer, footerDirection = props.footerDirection, onClick = props.onClick, children = props.children;
126
+ var classPrefix = "nut-dialog";
127
+ var renderHeader = function renderHeader2() {
128
+ return title ? React__default.createElement("div", {
129
+ className: "".concat(classPrefix, "__header")
130
+ }, title) : null;
131
+ };
132
+ var renderFooter = function renderFooter2() {
133
+ return footer ? React__default.createElement("div", {
134
+ className: classNames("".concat(classPrefix, "__footer"), _defineProperty({}, footerDirection, footerDirection))
135
+ }, footer) : null;
136
+ };
137
+ var handleClick = function handleClick2(e) {
138
+ onClick && onClick(e);
139
+ };
140
+ return React__default.createElement("div", {
141
+ className: "".concat(classPrefix, "__outer"),
142
+ onClick: function onClick2(e) {
143
+ return handleClick(e);
144
+ }
145
+ }, React__default.createElement("div", {
146
+ className: classPrefix,
147
+ style: {
148
+ display: visible ? "flex" : "none"
149
+ }
150
+ }, renderHeader(), React__default.createElement("div", {
151
+ className: "".concat(classPrefix, "__content")
152
+ }, React__default.createElement(React__default.Fragment, null, children)), renderFooter()));
153
+ };
154
+ Content.displayName = "NutContent";
155
+ var defaultDialogProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
156
+ overlay: true,
157
+ overlayStyle: {},
158
+ overlayClassName: "",
159
+ onCancel: function onCancel() {
160
+ },
161
+ onClose: function onClose() {
162
+ },
163
+ onOverlayClick: function onOverlayClick(e) {
164
+ return true;
165
+ }
166
+ }, defaultOverlayProps);
167
+ var DialogWrap = function DialogWrap2(props) {
168
+ var visible = props.visible, overlay = props.overlay, overlayStyle = props.overlayStyle, overlayClassName = props.overlayClassName, closeOnOverlayClick = props.closeOnOverlayClick, lockScroll = props.lockScroll, onClose2 = props.onClose, onCancel2 = props.onCancel, onOverlayClick2 = props.onOverlayClick;
169
+ var onHandleClickOverlay = function onHandleClickOverlay2(e) {
170
+ if (closeOnOverlayClick && visible && e.target === e.currentTarget) {
171
+ var closed = onOverlayClick2 && onOverlayClick2(e);
172
+ closed && (onClose2 === null || onClose2 === void 0 ? void 0 : onClose2());
173
+ closed && (onCancel2 === null || onCancel2 === void 0 ? void 0 : onCancel2());
174
+ }
175
+ };
176
+ return React__default.createElement(React__default.Fragment, null, overlay ? React__default.createElement(Overlay, {
177
+ style: overlayStyle,
178
+ className: overlayClassName,
179
+ visible,
180
+ closeOnOverlayClick,
181
+ lockScroll,
182
+ onClick: onHandleClickOverlay
183
+ }) : null, React__default.createElement(CSSTransition, {
184
+ "in": visible,
185
+ timeout: 300,
186
+ classNames: "fadeDialog",
187
+ unmountOnExit: true,
188
+ appear: true
189
+ }, React__default.createElement(Content, _objectSpread(_objectSpread({}, props), {}, {
190
+ visible
191
+ }))));
192
+ };
193
+ DialogWrap.defaultProps = defaultDialogProps;
194
+ DialogWrap.displayName = "NutDialogWrap";
212
195
  var defaultProps = {
213
- confirmText: "确认",
214
- cancelText: "取消",
215
- mask: true,
216
- closeOnClickOverlay: true,
217
- noFooter: false,
218
- noOkBtn: false,
219
- noCancelBtn: false,
220
- okBtnDisabled: false,
221
- cancelAutoClose: true,
222
- textAlign: "center",
196
+ confirmText: "",
197
+ cancelText: "",
198
+ overlay: true,
199
+ closeOnOverlayClick: true,
200
+ hideConfirmButton: false,
201
+ hideCancelButton: false,
202
+ disableConfirmButton: false,
223
203
  footerDirection: "horizontal",
224
- lockScroll: false
204
+ lockScroll: true,
205
+ beforeCancel: function beforeCancel() {
206
+ return true;
207
+ },
208
+ beforeClose: function beforeClose() {
209
+ return true;
210
+ }
225
211
  };
226
212
  var BaseDialog = function BaseDialog2(props, ref) {
227
- var visible = props.visible, footer = props.footer, noFooter = props.noFooter, noOkBtn = props.noOkBtn, noCancelBtn = props.noCancelBtn, lockScroll = props.lockScroll, okBtnDisabled = props.okBtnDisabled, cancelAutoClose = props.cancelAutoClose, confirmText = props.confirmText, cancelText = props.cancelText, onClosed = props.onClosed, onCancel = props.onCancel, onOk = props.onOk, restProps = _objectWithoutProperties(props, _excluded);
213
+ var _useConfig = useConfig(), locale = _useConfig.locale;
214
+ var visible = props.visible, footer = props.footer, hideConfirmButton = props.hideConfirmButton, hideCancelButton = props.hideCancelButton, lockScroll = props.lockScroll, disableConfirmButton = props.disableConfirmButton, closeOnOverlayClick = props.closeOnOverlayClick, confirmText = props.confirmText, cancelText = props.cancelText, onClose2 = props.onClose, onCancel2 = props.onCancel, onConfirm = props.onConfirm, beforeCancel2 = props.beforeCancel, beforeClose2 = props.beforeClose, restProps = _objectWithoutProperties(props, _excluded);
215
+ var classPrefix = "nut-dialog";
228
216
  var renderFooter = function renderFooter2() {
229
- if (footer === null || noFooter)
217
+ if (footer === null)
230
218
  return "";
231
219
  var handleCancel = function handleCancel2(e) {
232
220
  e.stopPropagation();
233
- if (!cancelAutoClose)
221
+ if (!(beforeCancel2 !== null && beforeCancel2 !== void 0 && beforeCancel2()))
234
222
  return;
235
- onClosed === null || onClosed === void 0 ? void 0 : onClosed();
236
- onCancel === null || onCancel === void 0 ? void 0 : onCancel();
237
- if (lockScroll && visible) {
238
- document.body.classList.remove("nut-overflow-hidden");
239
- }
223
+ if (!(beforeClose2 !== null && beforeClose2 !== void 0 && beforeClose2()))
224
+ return;
225
+ onClose2 === null || onClose2 === void 0 ? void 0 : onClose2();
226
+ onCancel2 === null || onCancel2 === void 0 ? void 0 : onCancel2();
240
227
  };
241
228
  var handleOk = function handleOk2(e) {
242
229
  e.stopPropagation();
243
- onClosed === null || onClosed === void 0 ? void 0 : onClosed();
244
- onOk === null || onOk === void 0 ? void 0 : onOk(e);
245
- if (lockScroll && visible) {
246
- document.body.classList.remove("nut-overflow-hidden");
247
- }
230
+ onClose2 === null || onClose2 === void 0 ? void 0 : onClose2();
231
+ onConfirm === null || onConfirm === void 0 ? void 0 : onConfirm(e);
248
232
  };
249
- var footerContent = footer || React__default.createElement(React__default.Fragment, null, !noCancelBtn && React__default.createElement(Button, {
233
+ return footer || React__default.createElement(React__default.Fragment, null, !hideCancelButton && React__default.createElement(Button, {
250
234
  size: "small",
251
235
  fill: "outline",
252
236
  type: "primary",
253
- className: "nut-dialog__footer-cancel",
254
- onClick: handleCancel
255
- }, cancelText), !noOkBtn && React__default.createElement(Button, {
237
+ className: "".concat(classPrefix, "__footer-cancel"),
238
+ onClick: function onClick(e) {
239
+ return handleCancel(e);
240
+ }
241
+ }, cancelText || locale.cancel), !hideConfirmButton && React__default.createElement(Button, {
256
242
  size: "small",
257
243
  type: "primary",
258
- className: classNames("nut-dialog__footer-ok", {
259
- disabled: okBtnDisabled
244
+ className: classNames("".concat(classPrefix, "__footer-ok"), {
245
+ disabled: disableConfirmButton
260
246
  }),
261
- disabled: okBtnDisabled,
262
- onClick: handleOk
263
- }, confirmText));
264
- return footerContent;
247
+ disabled: disableConfirmButton,
248
+ onClick: function onClick(e) {
249
+ return handleOk(e);
250
+ }
251
+ }, confirmText || locale.confirm));
265
252
  };
266
- return React__default.createElement(DialogWrapper, _objectSpread(_objectSpread({}, restProps), {}, {
253
+ return React__default.createElement("div", {
254
+ style: {
255
+ display: visible ? "block" : "none"
256
+ }
257
+ }, React__default.createElement(DialogWrap, _objectSpread(_objectSpread({}, props), {}, {
267
258
  visible,
268
259
  lockScroll,
269
260
  footer: renderFooter(),
270
- onClosed,
271
- onCancel
272
- }));
261
+ onClose: onClose2,
262
+ onCancel: onCancel2
263
+ })));
273
264
  };
274
265
  var Dialog = forwardRef(BaseDialog);
275
266
  Dialog.confirm = function(props) {
276
- return confirm(props);
267
+ return confirm$1(props);
277
268
  };
278
269
  ["alert"].forEach(function(type) {
279
270
  Dialog[type] = function(props) {
280
- return confirm(_objectSpread(_objectSpread({}, props), {}, {
271
+ return confirm$1(_objectSpread(_objectSpread({}, props), {}, {
281
272
  isNotice: false,
282
273
  noticeType: type
283
274
  }));