@nutui/nutui-react 2.0.0-alpha.14 → 2.0.0-alpha.16

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 (131) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/esm/Card/style/style.css +1 -1
  3. package/dist/esm/Card.js +35 -22
  4. package/dist/esm/ConfigProvider.js +1 -1
  5. package/dist/esm/DatePicker.js +54 -58
  6. package/dist/esm/Dialog/style/index.js +1 -0
  7. package/dist/esm/Dialog/style/style.css +1 -1
  8. package/dist/esm/InfiniteLoading/style/style.css +1 -0
  9. package/dist/esm/{Infiniteloading.js → InfiniteLoading.js} +25 -37
  10. package/dist/esm/Menu/style/style.css +1 -1
  11. package/dist/esm/Menu.js +5 -3
  12. package/dist/esm/MenuItem/style/style.css +1 -1
  13. package/dist/esm/MenuItem.js +31 -44
  14. package/dist/esm/NoticeBar.js +2 -2
  15. package/dist/esm/Picker.js +1 -1
  16. package/dist/esm/Popover.js +3 -40
  17. package/dist/esm/Popup.js +1 -1
  18. package/dist/esm/Signature/style/index.js +1 -1
  19. package/dist/esm/Signature/style/style.css +1 -1
  20. package/dist/esm/Signature.js +27 -35
  21. package/dist/esm/Tag/style/style.css +1 -1
  22. package/dist/esm/Tag.js +26 -30
  23. package/dist/esm/TimeDetail/style/style.css +1 -1
  24. package/dist/esm/TimeDetail.js +39 -41
  25. package/dist/esm/TimeSelect/style/index.js +0 -1
  26. package/dist/esm/TimeSelect/style/style.css +1 -1
  27. package/dist/esm/TimeSelect.js +91 -114
  28. package/dist/esm/Toast.js +16 -7
  29. package/dist/esm/Uploader.js +1 -1
  30. package/dist/esm/index.js +2 -2
  31. package/dist/esm/nutui-react.es.js +8 -10
  32. package/dist/esm/types/src/locales/base.d.ts +1 -1
  33. package/dist/esm/types/src/packages/card/card.d.ts +8 -9
  34. package/dist/esm/types/src/packages/card/card.taro.d.ts +8 -9
  35. package/dist/esm/types/src/packages/card/index.d.ts +1 -0
  36. package/dist/esm/types/src/packages/card/index.taro.d.ts +1 -0
  37. package/dist/esm/types/src/packages/configprovider/types.d.ts +1 -1
  38. package/dist/esm/types/src/packages/datepicker/datepicker.d.ts +11 -17
  39. package/dist/esm/types/src/packages/datepicker/datepicker.taro.d.ts +11 -17
  40. package/dist/esm/types/src/packages/datepicker/index.d.ts +1 -0
  41. package/dist/esm/types/src/packages/datepicker/index.taro.d.ts +1 -0
  42. package/dist/esm/types/src/packages/imagepreview/imagepreview.taro.d.ts +1 -0
  43. package/dist/esm/types/src/packages/infiniteloading/demo.taro.d.ts +2 -2
  44. package/dist/esm/types/src/packages/infiniteloading/index.d.ts +3 -2
  45. package/dist/esm/types/src/packages/infiniteloading/index.taro.d.ts +3 -2
  46. package/dist/esm/types/src/packages/infiniteloading/infiniteloading.d.ts +9 -14
  47. package/dist/esm/types/src/packages/infiniteloading/infiniteloading.taro.d.ts +8 -12
  48. package/dist/esm/types/src/packages/nutui.react.build.d.ts +2 -3
  49. package/dist/esm/types/src/packages/nutui.react.d.ts +2 -4
  50. package/dist/esm/types/src/packages/nutui.react.scss.d.ts +0 -1
  51. package/dist/esm/types/src/packages/nutui.react.taro.d.ts +2 -4
  52. package/dist/esm/types/src/packages/nutui.react.taro.scss.d.ts +0 -1
  53. package/dist/esm/types/src/packages/nutui.taro.react.build.d.ts +2 -3
  54. package/dist/esm/types/src/packages/signature/index.d.ts +1 -0
  55. package/dist/esm/types/src/packages/signature/index.taro.d.ts +1 -0
  56. package/dist/esm/types/src/packages/signature/signature.d.ts +10 -8
  57. package/dist/esm/types/src/packages/signature/signature.taro.d.ts +7 -12
  58. package/dist/esm/types/src/packages/tag/index.d.ts +1 -0
  59. package/dist/esm/types/src/packages/tag/index.taro.d.ts +1 -0
  60. package/dist/esm/types/src/packages/tag/tag.d.ts +4 -6
  61. package/dist/esm/types/src/packages/tag/tag.taro.d.ts +4 -6
  62. package/dist/esm/types/src/packages/timedetail/index.d.ts +1 -2
  63. package/dist/esm/types/src/packages/timedetail/timedetail.d.ts +9 -11
  64. package/dist/esm/types/src/packages/timedetail/timedetail.taro.d.ts +9 -11
  65. package/dist/esm/types/src/packages/timeselect/demo.taro.d.ts +0 -4
  66. package/dist/esm/types/src/packages/timeselect/index.d.ts +1 -0
  67. package/dist/esm/types/src/packages/timeselect/index.taro.d.ts +1 -0
  68. package/dist/esm/types/src/packages/timeselect/timeselect.d.ts +25 -20
  69. package/dist/esm/types/src/packages/timeselect/timeselect.taro.d.ts +25 -20
  70. package/dist/esm/types/src/packages/toast/Notification.d.ts +4 -1
  71. package/dist/esm/use-click-away.js +43 -0
  72. package/dist/locales/base.d.ts +1 -1
  73. package/dist/locales/base.js +1 -1
  74. package/dist/locales/en-US.js +2 -2
  75. package/dist/locales/id-ID.js +2 -2
  76. package/dist/locales/tr-TR.js +2 -2
  77. package/dist/locales/zh-CN.js +2 -2
  78. package/dist/locales/zh-TW.js +2 -2
  79. package/dist/locales/zh-UG.js +2 -2
  80. package/dist/nutui.react.es.js +765 -828
  81. package/dist/nutui.react.umd.js +765 -828
  82. package/dist/packages/card/card.scss +8 -14
  83. package/dist/packages/infiniteloading/infiniteloading.scss +2 -25
  84. package/dist/packages/menuitem/menuitem.scss +1 -1
  85. package/dist/packages/noticebar/noticebar.scss +0 -3
  86. package/dist/packages/signature/signature.scss +1 -18
  87. package/dist/packages/tag/tag.scss +10 -17
  88. package/dist/packages/timedetail/timedetail.scss +12 -37
  89. package/dist/packages/timeselect/timeselect.scss +15 -44
  90. package/dist/style.css +1 -1
  91. package/dist/style.mjs +1 -1
  92. package/dist/styles/themes/default.scss +0 -1
  93. package/dist/styles/variables-jmapp.scss +50 -97
  94. package/dist/styles/variables.scss +51 -98
  95. package/dist/types/index.d.ts +2 -3
  96. package/dist/types/locales/base.d.ts +1 -1
  97. package/dist/types/packages/card/card.d.ts +57 -14
  98. package/dist/types/packages/card/index.d.ts +1 -0
  99. package/dist/types/packages/configprovider/types.d.ts +1 -1
  100. package/dist/types/packages/datepicker/datepicker.d.ts +79 -25
  101. package/dist/types/packages/datepicker/index.d.ts +1 -0
  102. package/dist/types/packages/infiniteloading/index.d.ts +3 -2
  103. package/dist/types/packages/infiniteloading/infiniteloading.d.ts +57 -18
  104. package/dist/types/packages/signature/index.d.ts +1 -0
  105. package/dist/types/packages/signature/signature.d.ts +38 -12
  106. package/dist/types/packages/tag/index.d.ts +1 -0
  107. package/dist/types/packages/tag/tag.d.ts +52 -14
  108. package/dist/types/packages/timedetail/index.d.ts +1 -2
  109. package/dist/types/packages/timedetail/timedetail.d.ts +9 -11
  110. package/dist/types/packages/timeselect/index.d.ts +1 -0
  111. package/dist/types/packages/timeselect/timeselect.d.ts +62 -21
  112. package/dist/types/packages/toast/Notification.d.ts +4 -1
  113. package/package.json +1 -1
  114. package/dist/esm/Infiniteloading/style/style.css +0 -1
  115. package/dist/esm/TimePannel/style/css.js +0 -1
  116. package/dist/esm/TimePannel/style/index.js +0 -2
  117. package/dist/esm/TimePannel/style/style.css +0 -1
  118. package/dist/esm/TimePannel.js +0 -47
  119. package/dist/esm/types/src/packages/timedetail/demo.d.ts +0 -3
  120. package/dist/esm/types/src/packages/timedetail/demo.taro.d.ts +0 -3
  121. package/dist/esm/types/src/packages/timepannel/demo.d.ts +0 -3
  122. package/dist/esm/types/src/packages/timepannel/demo.taro.d.ts +0 -3
  123. package/dist/esm/types/src/packages/timepannel/index.d.ts +0 -2
  124. package/dist/esm/types/src/packages/timepannel/index.taro.d.ts +0 -2
  125. package/dist/esm/types/src/packages/timepannel/timepannel.d.ts +0 -8
  126. package/dist/esm/types/src/packages/timepannel/timepannel.taro.d.ts +0 -8
  127. package/dist/packages/timepannel/timepannel.scss +0 -17
  128. package/dist/types/packages/timepannel/index.d.ts +0 -2
  129. package/dist/types/packages/timepannel/timepannel.d.ts +0 -8
  130. /package/dist/esm/{Infiniteloading → InfiniteLoading}/style/css.js +0 -0
  131. /package/dist/esm/{Infiniteloading → InfiniteLoading}/style/index.js +0 -0
package/dist/esm/Menu.js CHANGED
@@ -67,6 +67,7 @@ var Menu = function Menu2(props) {
67
67
  };
68
68
  var hideMenuItem = function hideMenuItem2(index) {
69
69
  showMenuItem[index] = false;
70
+ console.log(_toConsumableArray(showMenuItem));
70
71
  setShowMenuItem(_toConsumableArray(showMenuItem));
71
72
  };
72
73
  var updateTitle = function updateTitle2(text, index) {
@@ -75,7 +76,7 @@ var Menu = function Menu2(props) {
75
76
  };
76
77
  var cloneChildren = function cloneChildren2() {
77
78
  return React__default.Children.map(children, function(child, index) {
78
- return React__default.cloneElement(child, {
79
+ return React__default.cloneElement(child, _objectSpread(_objectSpread({}, child.props), {}, {
79
80
  show: showMenuItem[index],
80
81
  index,
81
82
  activeColor,
@@ -87,7 +88,7 @@ var Menu = function Menu2(props) {
87
88
  hideMenuItem,
88
89
  menuRef
89
90
  }
90
- });
91
+ }));
91
92
  });
92
93
  };
93
94
  var menuTitle = function menuTitle2() {
@@ -115,7 +116,8 @@ var Menu = function Menu2(props) {
115
116
  color: showMenuItem[index] ? activeColor : ""
116
117
  },
117
118
  key: index,
118
- onClick: function onClick() {
119
+ onClick: function onClick(e) {
120
+ e.stopPropagation();
119
121
  !disabled && toggleMenuItem(index);
120
122
  }
121
123
  }, React__default.createElement("div", {
@@ -1 +1 @@
1
- .nut-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--nutui-overlay-bg-color, var(--nutui-gray-7, rgba(0, 0, 0, .7)))}.nut-overflow-hidden{overflow:hidden!important}.nut-overlay-fade-enter-active{animation:nut-fade-in}.nut-overlay-fade-enter-active .wrapper .content{background-color:var(--nutui-overlay-content-bg-color, var(--nutui-gray-6, #ffffff));color:var(--nutui-overlay-content-color, var(--nutui-gray-1, #1a1a1a))}.nut-overlay-fade-leave-active{animation:nut-fade-out}.nut-overlay-first-render,.nut-overlay-hidden-render{display:none}@keyframes nut-fade-in{0%{opacity:0}1%{opacity:0}to{opacity:1}}@keyframes nut-fade-out{0%{opacity:1}1%{opacity:1}to{opacity:0}}.nut-menu-item__content{padding:var(--nutui-menu-item-content-padding, 12px 24px);max-height:var(--nutui-menu-item-content-max-height, 214px);overflow-y:auto;display:flex;flex-wrap:wrap;background:var(--nutui-menu-item-content-bg-color, var(--nutui-gray-6, #ffffff))}.nut-menu-item__content_fixed{width:100%;opacity:0;position:fixed}.nut-menu-item__option{color:var(--nutui-gray-1, #1a1a1a);font-size:var(--nutui-font-size-2, 14px);padding-top:var(--nutui-menu-item-option-padding-top, 12px);padding-bottom:var(--nutui-menu-item-option-padding-bottom, 12px);display:flex;align-items:center}.nut-menu-item__option.active{font-weight:500;color:var(--nutui-menu-item-active-text-color, var(--nutui-brand-color, #fa2c19))}.nut-menu-item__option i{margin-right:var(--nutui-menu-item-option-i-margin-right, 6px);display:inline-flex;align-items:center}.nut-menu-item__wrap,.nut-menu-item__wrap-up{position:absolute;width:100%;z-index:2052;overflow:hidden}.nut-menu-item__wrap-up{bottom:var(--nutui-menu-bar-line-height, 48px)}.overlay-fade-enter-active.nut-menu__overlay{top:auto;z-index:2052}.nut-menu__pop.nut-popup{transition:all 0s ease 0s;transform:none}.placeholder-element{position:fixed;top:-var(--nutui-menu-bar-line-height,48px);left:0;right:0;z-index:var(--nutui-menu-bar-opened-z-index, 2001);background-color:transparent}.placeholder-element.up{bottom:-var(--nutui-menu-bar-line-height,48px)}.menu-item-enter{opacity:0;transform:translateY(-30px)}.menu-item-enter-done{opacity:1;transform:translate(0);transition:all .1s}.menu-item-exit{opacity:1;transition:all .1s}.menu-item-exit-done{opacity:0;transition:all .1s}.menu-item-up-enter{opacity:0;transform:translateY(30px)}.menu-item-up-enter-done{opacity:1;transform:translate(0);transition:all .1s}.menu-item-up-exit{opacity:1;transition:all .1s}.menu-item-up-exit-done{opacity:0;transition:all .1s}
1
+ .nut-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--nutui-overlay-bg-color, var(--nutui-gray-7, rgba(0, 0, 0, .7)))}.nut-overflow-hidden{overflow:hidden!important}.nut-overlay-fade-enter-active{animation:nut-fade-in}.nut-overlay-fade-enter-active .wrapper .content{background-color:var(--nutui-overlay-content-bg-color, var(--nutui-gray-6, #ffffff));color:var(--nutui-overlay-content-color, var(--nutui-gray-1, #1a1a1a))}.nut-overlay-fade-leave-active{animation:nut-fade-out}.nut-overlay-first-render,.nut-overlay-hidden-render{display:none}@keyframes nut-fade-in{0%{opacity:0}1%{opacity:0}to{opacity:1}}@keyframes nut-fade-out{0%{opacity:1}1%{opacity:1}to{opacity:0}}.nut-menu-item__content{padding:var(--nutui-menu-item-content-padding, 12px 24px);max-height:var(--nutui-menu-item-content-max-height, 214px);overflow-y:auto;display:flex;flex-wrap:wrap;background:var(--nutui-menu-item-content-bg-color, var(--nutui-gray-6, #ffffff))}.nut-menu-item__content_fixed{width:100%;opacity:0;position:fixed}.nut-menu-item__option{color:var(--nutui-gray-1, #1a1a1a);font-size:var(--nutui-font-size-2, 14px);padding-top:var(--nutui-menu-item-option-padding-top, 12px);padding-bottom:var(--nutui-menu-item-option-padding-bottom, 12px);display:flex;align-items:center}.nut-menu-item__option.active{font-weight:500;color:var(--nutui-menu-item-active-text-color, var(--nutui-brand-color, #fa2c19))}.nut-menu-item__option i{margin-right:var(--nutui-menu-item-option-i-margin-right, 6px);display:inline-flex;align-items:center}.nut-menu-item__wrap,.nut-menu-item__wrap-up{position:absolute;width:100%;z-index:2052;overflow:hidden}.nut-menu-item__wrap-up{bottom:var(--nutui-menu-bar-line-height, 48px)}.overlay-fade-enter-active.nut-menu__overlay{top:auto;z-index:2052}.nut-menu__pop.nut-popup{transition:all 0s ease 0s;transform:none}.placeholder-element{position:absolute;top:-var(--nutui-menu-bar-line-height,48px);left:0;right:0;z-index:var(--nutui-menu-bar-opened-z-index, 2001);background-color:transparent}.placeholder-element.up{bottom:-var(--nutui-menu-bar-line-height,48px)}.menu-item-enter{opacity:0;transform:translateY(-30px)}.menu-item-enter-done{opacity:1;transform:translate(0);transition:all .1s}.menu-item-exit{opacity:1;transition:all .1s}.menu-item-exit-done{opacity:0;transition:all .1s}.menu-item-up-enter{opacity:0;transform:translateY(30px)}.menu-item-up-enter-done{opacity:1;transform:translate(0);transition:all .1s}.menu-item-up-exit{opacity:1;transition:all .1s}.menu-item-up-exit-done{opacity:0;transition:all .1s}
@@ -21,17 +21,18 @@ function _objectSpread(target) {
21
21
  }
22
22
  return target;
23
23
  }
24
- import React__default, { forwardRef, useState, useEffect, useImperativeHandle } from "react";
24
+ import React__default, { forwardRef, useState, useEffect, useImperativeHandle, useRef } from "react";
25
25
  import classNames from "classnames";
26
26
  import { CSSTransition } from "react-transition-group";
27
27
  import { Check } from "@nutui/icons-react";
28
28
  import { O as Overlay } from "./overlay2.js";
29
+ import { u as useClickAway } from "./use-click-away.js";
29
30
  import { C as ComponentDefaults } from "./typings.js";
31
+ import "./index.js";
30
32
  var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
31
33
  columns: 1,
32
34
  direction: "down",
33
35
  icon: null,
34
- closeOnClickAway: false,
35
36
  activeTitleClass: "",
36
37
  inactiveTitleClass: "",
37
38
  onChange: function onChange(value) {
@@ -45,9 +46,6 @@ var MenuItem = forwardRef(function(props, ref) {
45
46
  useEffect(function() {
46
47
  setShowPopup(show);
47
48
  }, [show]);
48
- useEffect(function() {
49
- getParentOffset();
50
- }, [_showPopup]);
51
49
  useImperativeHandle(ref, function() {
52
50
  return {
53
51
  toggle: parent.toggleMenuItem
@@ -68,20 +66,6 @@ var MenuItem = forwardRef(function(props, ref) {
68
66
  setValue(item.value);
69
67
  onChange2 && onChange2(item);
70
68
  };
71
- var _useState5 = useState({
72
- top: 0,
73
- height: 0
74
- }), _useState6 = _slicedToArray(_useState5, 2), position = _useState6[0], setPosition = _useState6[1];
75
- var getParentOffset = function getParentOffset2() {
76
- setTimeout(function() {
77
- var p = parent.menuRef.current;
78
- var rect = p.getBoundingClientRect();
79
- setPosition({
80
- height: rect.height,
81
- top: rect.top
82
- });
83
- });
84
- };
85
69
  var isShow = function isShow2() {
86
70
  if (_showPopup)
87
71
  return {};
@@ -91,34 +75,37 @@ var MenuItem = forwardRef(function(props, ref) {
91
75
  };
92
76
  var getPosition = function getPosition2() {
93
77
  return direction === "down" ? {
94
- top: "".concat(position.top + position.height, "px")
78
+ position: "absolute",
79
+ height: "".concat(window.innerHeight, "px")
95
80
  } : {
96
- bottom: "".concat(window.innerHeight - position.top, "px"),
97
- top: "auto"
81
+ position: "absolute",
82
+ bottom: "100%",
83
+ top: "auto",
84
+ height: "".concat(window.innerHeight, "px")
98
85
  };
99
86
  };
100
- var placeholderStyle = function placeholderStyle2() {
101
- if (direction === "down") {
102
- return _objectSpread({
103
- height: "".concat(position.top + position.height, "px"),
104
- top: 0
105
- }, isShow());
106
- }
107
- return _objectSpread({
108
- height: "".concat(window.innerHeight - position.top, "px"),
109
- bottom: "0px",
110
- top: "auto"
111
- }, isShow());
112
- };
113
- return React__default.createElement(React__default.Fragment, null, closeOnClickAway ? React__default.createElement("div", {
114
- className: "placeholder-element ".concat(classNames({
115
- up: direction === "up"
116
- })),
117
- style: placeholderStyle(),
118
- onClick: function onClick() {
119
- return parent.toggleMenuItem(index);
87
+ var micRef = useRef(null);
88
+ var targetSet = [micRef.current];
89
+ useClickAway(
90
+ function() {
91
+ parent.hideMenuItem(index);
92
+ },
93
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
94
+ // @ts-ignore
95
+ targetSet,
96
+ "click",
97
+ _showPopup,
98
+ closeOnClickAway
99
+ );
100
+ return React__default.createElement("div", {
101
+ className: "nut-menu-item-container",
102
+ ref: micRef,
103
+ style: {
104
+ position: "absolute",
105
+ left: 0,
106
+ right: 0
120
107
  }
121
- }) : null, React__default.createElement(Overlay, {
108
+ }, React__default.createElement(Overlay, {
122
109
  className: "nut-menu__overlay",
123
110
  style: getPosition(),
124
111
  lockScroll: parent.lockScroll,
@@ -139,7 +126,7 @@ var MenuItem = forwardRef(function(props, ref) {
139
126
  classNames: direction === "down" ? "menu-item" : "menu-item-up"
140
127
  }, React__default.createElement("div", {
141
128
  className: "nut-menu-item__content"
142
- }, options === null || options === void 0 ? void 0 : options.map(function(item, index2) {
129
+ }, options === null || options === void 0 ? void 0 : options.map(function(item) {
143
130
  return React__default.createElement("div", {
144
131
  className: "nut-menu-item__option ".concat(classNames({
145
132
  active: item.value === _value
@@ -370,7 +370,7 @@ var NoticeBar = function NoticeBar2(props) {
370
370
  onClick: handleClick
371
371
  }, leftIcon ? React__default.createElement("div", {
372
372
  className: "left-icon"
373
- }, leftIcon) : null, children ? React__default.createElement(React__default.Fragment, null, React__default.createElement("div", {
373
+ }, leftIcon) : null, children ? React__default.createElement("div", {
374
374
  className: "nut-noticebar__inner",
375
375
  ref: innerRef
376
376
  }, scrollList.current.map(function(item, index) {
@@ -382,7 +382,7 @@ var NoticeBar = function NoticeBar2(props) {
382
382
  handleItemClick(e, item);
383
383
  }
384
384
  }, item);
385
- }))) : React__default.createElement("div", {
385
+ })) : React__default.createElement("div", {
386
386
  className: "horseLamp_list",
387
387
  style: horseLampStyle
388
388
  }, scrollList.current.map(function(item, index) {
@@ -425,7 +425,7 @@ var InternalPicker = function InternalPicker2(props, ref) {
425
425
  return React__default.createElement(Popup, {
426
426
  visible,
427
427
  position: "bottom",
428
- onClose: function onClose2() {
428
+ afterClose: function afterClose2() {
429
429
  closePicker();
430
430
  }
431
431
  }, React__default.createElement("div", _objectSpread({
@@ -23,50 +23,13 @@ function _objectSpread(target) {
23
23
  }
24
24
  return target;
25
25
  }
26
- import React__default, { useEffect, useRef, useState } from "react";
26
+ import React__default, { useRef, useState, useEffect } from "react";
27
27
  import classNames from "classnames";
28
28
  import Popup from "./Popup.js";
29
29
  import { g as getRect } from "./use-client-rect.js";
30
- import { a as isFunction, u as upperCaseFirst } from "./index.js";
30
+ import { u as upperCaseFirst } from "./index.js";
31
31
  import { C as ComponentDefaults } from "./typings.js";
32
- var getTargetElement = function getTargetElement2(target) {
33
- var targetElement;
34
- if (isFunction(target)) {
35
- targetElement = target();
36
- } else if ("current" in target) {
37
- targetElement = target.current;
38
- } else {
39
- targetElement = target;
40
- }
41
- return targetElement;
42
- };
43
- function useClickAway(onClickAway, target) {
44
- var eventName = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "click";
45
- var isListener = arguments.length > 3 ? arguments[3] : void 0;
46
- var outerVar = arguments.length > 4 ? arguments[4] : void 0;
47
- var handler = function handler2(event) {
48
- var targets = Array.isArray(target) ? target : [target];
49
- if (targets.some(function(item) {
50
- var targetElement = getTargetElement(item);
51
- return !targetElement || targetElement.contains(event.target);
52
- })) {
53
- return;
54
- }
55
- if (outerVar) {
56
- onClickAway();
57
- }
58
- };
59
- useEffect(function() {
60
- if (isListener) {
61
- window.addEventListener(eventName, handler, true);
62
- } else {
63
- window.removeEventListener(eventName, handler, true);
64
- }
65
- return function() {
66
- window.removeEventListener(eventName, handler, true);
67
- };
68
- }, [target]);
69
- }
32
+ import { u as useClickAway } from "./use-click-away.js";
70
33
  var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
71
34
  list: [],
72
35
  location: "bottom",
package/dist/esm/Popup.js CHANGED
@@ -138,7 +138,7 @@ var Popup = function Popup2(props) {
138
138
  return React__default.createElement(CSSTransition, {
139
139
  classNames: transitionName,
140
140
  unmountOnExit: true,
141
- timeout: 500,
141
+ timeout: 300,
142
142
  "in": innerVisible,
143
143
  onEntered: onHandleOpened,
144
144
  onExited: onHandleClosed
@@ -1,2 +1,2 @@
1
- import '../../Button/style'
1
+
2
2
  import '../../../packages/signature/signature.scss'
@@ -1 +1 @@
1
- .nut-button{position:relative;display:inline-block;flex-shrink:0;height:var(--nutui-button-default-height, 38px);box-sizing:border-box;margin:0;padding:0;line-height:var(--nutui-button-default-line-height, 36px);font-size:var(--nutui-button-default-font-size, var(--nutui-font-size-2, 14px));text-align:center;cursor:pointer;transition:opacity .2s;-webkit-appearance:none;user-select:none;touch-action:manipulation;color:var(--nutui-button-default-color, var(--nutui-gray-1, #1a1a1a));background:var(--nutui-button-default-bg-color, var(--nutui-gray-6, #ffffff));border:var(--nutui-button-border-width, 1px) solid var(--nutui-button-default-border-color, rgb(204, 204, 204))}.nut-button .nut-button-text{margin-left:var(--nutui-button-text-icon-margin-left, 5px)}.nut-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;background-color:var(--nutui-gray-0, #000000);border:inherit;border-color:var(--nutui-gray-0, #000000);border-radius:inherit;transform:translate(-50%,-50%);opacity:0;content:" "}.nut-button:after{border:none}.nut-button:active:before{opacity:.1}.nut-button__warp{height:100%;width:100%;display:flex;align-items:center;justify-content:center;background:initial}.nut-button--loading:before,.nut-button--disabled:before{display:none}.nut-button--solid{color:var(--nutui-button-primary-color, var(--nutui-brand-text-color, #ffffff));background:linear-gradient(135deg,var(--nutui-brand-color, #fa2c19) 0%,var(--nutui-brand-color-end, #fa2c19) 100%);border:var(--nutui-button-border-width, 1px) solid transparent}.nut-button.nut-button--outline{color:var(--nutui-button-primary-border-color, var(--nutui-brand-color, #fa2c19));border-color:var(--nutui-button-primary-border-color, var(--nutui-brand-color, #fa2c19));background:transparent}.nut-button.nut-button--none{color:var(--nutui-button-primary-border-color, var(--nutui-brand-color, #fa2c19));background:transparent;border-color:transparent}.nut-button--primary{color:var(--nutui-button-primary-color, var(--nutui-brand-text-color, #ffffff));background:linear-gradient(135deg,var(--nutui-brand-color, #fa2c19) 0%,var(--nutui-brand-color-end, #fa2c19) 100%);border:var(--nutui-button-border-width, 1px) solid transparent}.nut-button--primary.nut-button--outline{color:var(--nutui-button-primary-border-color, var(--nutui-brand-color, #fa2c19));border-color:var(--nutui-button-primary-border-color, var(--nutui-brand-color, #fa2c19));background:transparent}.nut-button--primary.nut-button--none{color:var(--nutui-button-primary-border-color, var(--nutui-brand-color, #fa2c19));background:transparent;border-color:transparent}.nut-button--info{color:var(--nutui-button-info-color, var(--nutui-brand-text-color, #ffffff));background:linear-gradient(315deg,rgb(73,143,242) 0%,rgb(73,101,242) 100%);border:var(--nutui-button-border-width, 1px) solid transparent}.nut-button--info.nut-button--outline{color:var(--nutui-button-info-border-color, #496af2);border-color:var(--nutui-button-info-border-color, #496af2);background:transparent}.nut-button--info.nut-button--none{color:var(--nutui-button-info-border-color, #496af2);background:transparent;border-color:transparent}.nut-button--success{color:var(--nutui-button-success-color, var(--nutui-brand-text-color, #ffffff));background:linear-gradient(135deg,rgb(38,191,38) 0%,rgb(39,197,48) 45%,rgb(40,207,63) 83%,rgb(41,212,70) 100%);border:var(--nutui-button-border-width, 1px) solid transparent}.nut-button--success.nut-button--outline{color:var(--nutui-button-success-border-color, rgb(38, 191, 38));border-color:var(--nutui-button-success-border-color, rgb(38, 191, 38));background:transparent}.nut-button--success.nut-button--none{color:var(--nutui-button-success-border-color, rgb(38, 191, 38));background:transparent;border-color:transparent}.nut-button--danger{color:var(--nutui-button-danger-color, var(--nutui-brand-text-color, #ffffff));background:var(--nutui-button-danger-background-color, rgb(250, 44, 25));border:var(--nutui-button-border-width, 1px) solid transparent}.nut-button--danger.nut-button--outline{color:var(--nutui-button-danger-border-color, rgb(250, 44, 25));border-color:var(--nutui-button-danger-border-color, rgb(250, 44, 25));background:transparent}.nut-button--danger.nut-button--none{color:var(--nutui-button-danger-border-color, rgb(250, 44, 25));background:transparent;border-color:transparent}.nut-button--warning{color:var(--nutui-button-warning-color, var(--nutui-brand-text-color, #ffffff));background:linear-gradient(135deg,rgb(255,158,13) 0%,rgb(255,167,13) 45%,rgb(255,182,13) 83%,rgb(255,190,13) 100%);border:var(--nutui-button-border-width, 1px) solid transparent}.nut-button--warning.nut-button--outline{color:var(--nutui-button-warning-border-color, rgb(255, 158, 13));border-color:var(--nutui-button-warning-border-color, rgb(255, 158, 13));background:transparent}.nut-button--warning.nut-button--none{color:var(--nutui-button-warning-border-color, rgb(255, 158, 13));background:transparent;border-color:transparent}.nut-button--large{width:100%;height:var(--nutui-button-large-height, 48px);line-height:var(--nutui-button-large-line-height, 46px)}.nut-button--large .text{margin-left:var(--nutui-button-text-icon-large-margin-left, 10px)}.nut-button--normal{padding:var(--nutui-button-default-padding, 0 18px);font-size:var(--nutui-button-default-font-size, var(--nutui-font-size-2, 14px))}.nut-button--small{height:var(--nutui-button-small-height, 28px);line-height:var(--nutui-button-small-line-height, 26px);padding:var(--nutui-button-small-padding, 0 12px);font-size:var(--nutui-button-small-font-size, var(--nutui-font-size-1, 12px))}.nut-button--small .text{margin-left:var(--nutui-button-text-icon-small-margin-left, 2px)}.nut-button--mini{height:var(--nutui-button-mini-height, 24px);line-height:var(--nutui-button-mini-line-height, 1.2);padding:var(--nutui-button-mini-padding, 0 12px);font-size:var(--nutui-button-mini-font-size, var(--nutui-font-size-1, 12px))}.nut-button--mini .text{margin-left:var(--nutui-button-text-icon-mini-margin-left, 1px)}.nut-button--block{display:block;width:100%}.nut-button--disabled{cursor:not-allowed;opacity:var(--nutui-button-disabled-opacity, .68)}.nut-button--loading{cursor:default;opacity:.9}.nut-button--round{border-radius:var(--nutui-button-border-radius, 25px)}.nut-button--square{border-radius:0}.nut-theme-dark .nut-signature__inner Canvas{background-color:#404040}.nut-theme-dark .demo-tips{color:#e6e6e6}.nut-signature .spcanvas_WEAPP{width:100%;height:100%}.nut-signature .spcanvas_WEAPP Canvas{width:100%}.nut-signature__inner{height:10rem;margin-bottom:.8rem;border:1px solid #dadada;display:flex;justify-content:center;align-items:center}.nut-signature__inner Canvas{background-color:#fff}.nut-signature__unsopport{font-size:var(--nutui-font-size-2, 14px)}.nut-signature__btn{margin-right:15px!important}
1
+ .nut-signature .spcanvas_WEAPP{width:100%;height:100%}.nut-signature .spcanvas_WEAPP Canvas{width:100%}.nut-signature__inner{height:10rem;border:1px solid #dadada;display:flex;justify-content:center;align-items:center}.nut-signature__inner Canvas{background-color:#fff}.nut-signature__unsupport{font-size:var(--nutui-font-size-2, 14px)}
@@ -1,7 +1,7 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["type", "lineWidth", "strokeStyle", "unSupportTpl", "className", "confirm", "clear", "onConfirm", "onClear"];
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ var _excluded = ["type", "lineWidth", "strokeStyle", "unsupported", "className", "style", "onConfirm", "onClear"];
5
5
  function ownKeys(object, enumerableOnly) {
6
6
  var keys = Object.keys(object);
7
7
  if (Object.getOwnPropertySymbols) {
@@ -23,22 +23,19 @@ function _objectSpread(target) {
23
23
  }
24
24
  return target;
25
25
  }
26
- import React__default, { useRef, useState, useEffect } from "react";
27
- import Button from "./Button.js";
28
- import { c as cn } from "./bem.js";
26
+ import React__default, { useRef, useState, useEffect, useImperativeHandle } from "react";
29
27
  import { useConfig } from "./ConfigProvider.js";
30
- import "@bem-react/classname";
31
- var defaultProps = {
28
+ import { C as ComponentDefaults } from "./typings.js";
29
+ var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
32
30
  type: "png",
33
31
  lineWidth: 2,
34
32
  strokeStyle: "#000",
35
- unSupportTpl: "对不起,当前浏览器不支持Canvas,无法使用本控件!",
36
- className: ""
37
- };
38
- var Signature = function Signature2(props) {
33
+ unsupported: ""
34
+ });
35
+ var InternalSignature = function InternalSignature2(props, ref) {
39
36
  var _useConfig = useConfig(), locale = _useConfig.locale;
40
- var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), type = _defaultProps$props.type, lineWidth = _defaultProps$props.lineWidth, strokeStyle = _defaultProps$props.strokeStyle, unSupportTpl = _defaultProps$props.unSupportTpl, className = _defaultProps$props.className, confirm = _defaultProps$props.confirm, clear = _defaultProps$props.clear, onConfirm = _defaultProps$props.onConfirm, onClear = _defaultProps$props.onClear, rest = _objectWithoutProperties(_defaultProps$props, _excluded);
41
- var b = cn("signature");
37
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), type = _defaultProps$props.type, lineWidth = _defaultProps$props.lineWidth, strokeStyle = _defaultProps$props.strokeStyle, unsupported = _defaultProps$props.unsupported, className = _defaultProps$props.className, style = _defaultProps$props.style, onConfirm = _defaultProps$props.onConfirm, onClear = _defaultProps$props.onClear, rest = _objectWithoutProperties(_defaultProps$props, _excluded);
38
+ var classPrefix = "nut-signature";
42
39
  var canvasRef = useRef(null);
43
40
  var wrapRef = useRef(null);
44
41
  var _useState = useState(0), _useState2 = _slicedToArray(_useState, 2), canvasHeight = _useState2[0], setCanvasHeight = _useState2[1];
@@ -105,12 +102,8 @@ var Signature = function Signature2(props) {
105
102
  ctx.current.clearRect(0, 0, canvasWidth, canvasHeight);
106
103
  ctx.current.closePath();
107
104
  }
108
- clear && clear();
109
105
  onClear && onClear();
110
106
  };
111
- var handleConfirmBtn = function handleConfirmBtn2() {
112
- onSave(canvasRef.current);
113
- };
114
107
  var onSave = function onSave2(canvas) {
115
108
  var dataurl;
116
109
  switch (type) {
@@ -124,34 +117,33 @@ var Signature = function Signature2(props) {
124
117
  dataurl = canvas.toDataURL("image/png");
125
118
  }
126
119
  handleClearBtn();
127
- confirm && confirm(canvas, dataurl);
128
120
  onConfirm && onConfirm(canvas, dataurl);
129
121
  };
122
+ useImperativeHandle(ref, function() {
123
+ return {
124
+ confirm: function confirm() {
125
+ onSave(canvasRef.current);
126
+ },
127
+ clear: function clear() {
128
+ handleClearBtn();
129
+ }
130
+ };
131
+ });
130
132
  return React__default.createElement("div", _objectSpread({
131
- className: "".concat(b(), " ").concat(className)
133
+ className: "".concat(classPrefix, " ").concat(className),
134
+ style
132
135
  }, rest), React__default.createElement("div", {
133
- className: "".concat(b("inner")),
136
+ className: "".concat(classPrefix, "__inner"),
134
137
  ref: wrapRef
135
138
  }, isCanvasSupported() ? React__default.createElement("canvas", {
136
139
  ref: canvasRef,
137
140
  height: canvasHeight,
138
141
  width: canvasWidth
139
- }) : React__default.createElement("p", {
140
- className: "".concat(b("unsopport"))
141
- }, locale.signature.unSupportTpl || unSupportTpl)), React__default.createElement(Button, {
142
- className: "".concat(b("btn")),
143
- type: "default",
144
- onClick: function onClick() {
145
- return handleClearBtn();
146
- }
147
- }, locale.signature.reSign), React__default.createElement(Button, {
148
- className: "".concat(b("btn")),
149
- type: "primary",
150
- onClick: function onClick() {
151
- return handleConfirmBtn();
152
- }
153
- }, locale.confirm));
142
+ }) : React__default.createElement(React__default.Fragment, null, unsupported || React__default.createElement("p", {
143
+ className: "".concat(classPrefix, "__unsupport")
144
+ }, locale.signature.unsupported))));
154
145
  };
146
+ var Signature = React__default.forwardRef(InternalSignature);
155
147
  Signature.defaultProps = defaultProps;
156
148
  Signature.displayName = "NutSignature";
157
149
  export {
@@ -1 +1 @@
1
- .nut-tag{padding:var(--nutui-tag-padding, 0 4px);display:inline-flex;justify-content:center;align-items:center;font-size:var(--nutui-tag-font-size, 12px);border-radius:var(--nutui-tag-default-border-radius, 4px);height:var(--nutui-tag-height, auto)}.nut-tag .nut-icon{vertical-align:middle;margin-left:4px}.nut-tag--default{color:var(--nutui-tag-default-color, #ffffff);background:var(--nutui-tag-default-background-color, #000000);border:var(--nutui-tag-border-width, 1px) solid transparent}.nut-tag--default.nut-tag--plain{color:var(--nutui-tag-default-background-color, #000000);border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-default-background-color, #000000)}.nut-tag--primary{color:var(--nutui-tag-default-color, #ffffff);background:var(--nutui-tag-primary-background-color, #3460fa);border:var(--nutui-tag-border-width, 1px) solid transparent}.nut-tag--primary.nut-tag--plain{color:var(--nutui-tag-default-background-color, #000000);border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-default-background-color, #000000)}.nut-tag--success{color:var(--nutui-tag-default-color, #ffffff);background:var(--nutui-tag-success-background-color, #4fc08d);border:var(--nutui-tag-border-width, 1px) solid transparent}.nut-tag--success.nut-tag--plain{color:var(--nutui-tag-default-background-color, #000000);border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-default-background-color, #000000)}.nut-tag--danger{color:var(--nutui-tag-default-color, #ffffff);background:linear-gradient(135deg,rgb(242,20,12) 0%,rgb(232,34,14) 69.8395009973%,rgb(242,77,12) 100%);border:var(--nutui-tag-border-width, 1px) solid transparent}.nut-tag--danger.nut-tag--plain{color:var(--nutui-tag-default-background-color, #000000);border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-default-background-color, #000000)}.nut-tag--warning{color:var(--nutui-tag-default-color, #ffffff);background:var(--nutui-tag-warning-background-color, #f3812e);border:var(--nutui-tag-border-width, 1px) solid transparent}.nut-tag--warning.nut-tag--plain{color:var(--nutui-tag-default-background-color, #000000);border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-default-background-color, #000000)}.nut-tag--round{border-radius:8px}.nut-tag--mark{border-radius:0 12px 12px 0}.nut-tag--close{margin-left:4px;cursor:pointer}.nut-tag-custom-icon{display:inline-flex;align-items:center;justify-content:center}
1
+ .nut-tag{padding:var(--nutui-tag-padding, 0 4px);display:inline-flex;justify-content:center;align-items:center;font-size:var(--nutui-tag-font-size, 12px);border-radius:var(--nutui-tag-border-radius, 4px);height:var(--nutui-tag-height, auto);color:var(--nutui-tag-color, #ffffff);border:var(--nutui-tag-border-width, 1px) solid transparent}.nut-tag .nut-icon{vertical-align:middle;margin-left:4px}.nut-tag--default{background:var(--nutui-tag-background-color, #000000)}.nut-tag--default.nut-tag--plain{color:var(--nutui-tag-background-color, #000000);background-color:#fff;border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-background-color, #000000)}.nut-tag--primary{background:var(--nutui-tag-primary-background-color, var(--nutui-brand-color, #fa2c19))}.nut-tag--primary.nut-tag--plain{color:var(--nutui-tag-background-color, #000000);background-color:#fff;border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-background-color, #000000)}.nut-tag--success{background:var(--nutui-tag-success-background-color, #4fc08d)}.nut-tag--success.nut-tag--plain{color:var(--nutui-tag-background-color, #000000);background-color:#fff;border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-background-color, #000000)}.nut-tag--danger{background:linear-gradient(135deg,rgb(242,20,12) 0%,rgb(232,34,14) 69.8395009973%,rgb(242,77,12) 100%)}.nut-tag--danger.nut-tag--plain{color:var(--nutui-tag-background-color, #000000);background-color:#fff;border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-background-color, #000000)}.nut-tag--warning{background:var(--nutui-tag-warning-background-color, #f3812e)}.nut-tag--warning.nut-tag--plain{color:var(--nutui-tag-background-color, #000000);background-color:#fff;border:var(--nutui-tag-border-width, 1px) solid var(--nutui-tag-background-color, #000000)}.nut-tag--round{border-radius:var(--nutui-tag-round-border-radius, 8px)}.nut-tag--mark{border-radius:var(--nutui-tag-mark-border-radius, 0 12px 12px 0)}.nut-tag--close{cursor:pointer}.nut-tag-custom-icon{display:inline-flex;align-items:center;justify-content:center}
package/dist/esm/Tag.js CHANGED
@@ -27,80 +27,76 @@ import classNames from "classnames";
27
27
  import { C as ComponentDefaults } from "./typings.js";
28
28
  var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
29
29
  type: "default",
30
+ background: "",
30
31
  color: "",
31
- textColor: "",
32
32
  plain: false,
33
33
  round: false,
34
34
  mark: false,
35
35
  closeable: false,
36
36
  closeIcon: null,
37
- prefixCls: "nut-tag",
38
37
  onClose: function onClose(e) {
39
38
  },
40
39
  onClick: function onClick(e) {
41
40
  }
42
41
  });
43
42
  var Tag = function Tag2(props) {
44
- var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), className = _defaultProps$props.className, style = _defaultProps$props.style, color = _defaultProps$props.color, plain = _defaultProps$props.plain, type = _defaultProps$props.type, round = _defaultProps$props.round, prefixCls = _defaultProps$props.prefixCls, children = _defaultProps$props.children, mark = _defaultProps$props.mark, closeable = _defaultProps$props.closeable, closeIcon = _defaultProps$props.closeIcon, textColor = _defaultProps$props.textColor, onClick2 = _defaultProps$props.onClick, onClose2 = _defaultProps$props.onClose;
45
- var _useState = useState(""), _useState2 = _slicedToArray(_useState, 2), btnName = _useState2[0], setBtnName = _useState2[1];
46
- var _useState3 = useState(true), _useState4 = _slicedToArray(_useState3, 2), isTagShow = _useState4[0], setIsTagShow = _useState4[1];
47
- useEffect(function() {
48
- setBtnName(classes());
49
- }, [type, color, textColor, plain, round, mark, closeable, prefixCls, onClick2, onClose2, className]);
43
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), className = _defaultProps$props.className, style = _defaultProps$props.style, background = _defaultProps$props.background, plain = _defaultProps$props.plain, type = _defaultProps$props.type, round = _defaultProps$props.round, children = _defaultProps$props.children, mark = _defaultProps$props.mark, closeable = _defaultProps$props.closeable, closeIcon = _defaultProps$props.closeIcon, color = _defaultProps$props.color, onClick2 = _defaultProps$props.onClick, onClose2 = _defaultProps$props.onClose;
44
+ var _useState = useState(""), _useState2 = _slicedToArray(_useState, 2), tagClass = _useState2[0], setTagClass = _useState2[1];
45
+ var _useState3 = useState(true), _useState4 = _slicedToArray(_useState3, 2), visible = _useState4[0], setVisible = _useState4[1];
46
+ var classPrefix = "nut-tag";
50
47
  var classes = function classes2() {
51
48
  var _classNames;
52
- var prefixCls2 = "nut-tag";
53
- return classNames((_classNames = {}, _defineProperty(_classNames, prefixCls2, true), _defineProperty(_classNames, "".concat(prefixCls2, "--").concat(type), type), _defineProperty(_classNames, "".concat(prefixCls2, "--plain"), plain), _defineProperty(_classNames, "".concat(prefixCls2, "--round"), round), _defineProperty(_classNames, "".concat(prefixCls2, "--mark"), mark), _defineProperty(_classNames, "".concat(prefixCls2, "--close"), closeable), _defineProperty(_classNames, "".concat(className), className), _classNames));
49
+ return classNames((_classNames = {}, _defineProperty(_classNames, classPrefix, true), _defineProperty(_classNames, "".concat(classPrefix, "--").concat(type), type), _defineProperty(_classNames, "".concat(classPrefix, "--plain"), plain), _defineProperty(_classNames, "".concat(classPrefix, "--round"), round), _defineProperty(_classNames, "".concat(classPrefix, "--mark"), mark), _defineProperty(_classNames, "".concat(classPrefix, "--close"), closeable), _defineProperty(_classNames, "".concat(className), className), _classNames));
54
50
  };
51
+ useEffect(function() {
52
+ setTagClass(classes());
53
+ }, [type, background, color, plain, round, mark, closeable, className]);
55
54
  var handleClick = function handleClick2(e) {
56
- if (props.onClick) {
57
- props.onClick(e);
58
- }
55
+ onClick2 && onClick2(e);
59
56
  };
60
57
  var getStyle = function getStyle2() {
61
58
  var style2 = {};
62
- if (textColor) {
63
- style2.color = textColor;
64
- } else if (color && plain) {
59
+ if (color) {
65
60
  style2.color = color;
61
+ } else if (background && plain) {
62
+ style2.color = background;
66
63
  }
67
64
  if (plain) {
68
- style2.background = "#fff";
69
- style2.borderColor = color;
70
- } else if (color) {
71
- style2.background = color;
65
+ style2.borderColor = background;
66
+ } else if (background) {
67
+ style2.background = background;
72
68
  }
73
69
  return style2;
74
70
  };
75
- return React__default.createElement(React__default.Fragment, null, closeable ? isTagShow && React__default.createElement("div", {
76
- className: btnName,
71
+ return React__default.createElement(React__default.Fragment, null, closeable ? visible && React__default.createElement("div", {
72
+ className: tagClass,
77
73
  style: _objectSpread(_objectSpread({}, style), getStyle()),
78
74
  onClick: function onClick3(e) {
79
75
  return handleClick(e);
80
76
  }
81
77
  }, children && React__default.createElement("span", {
82
- className: "nut-tag-text"
78
+ className: "".concat(classPrefix, "-text")
83
79
  }, children), React__default.isValidElement(closeIcon) ? React__default.createElement("i", {
84
- className: "nut-tag-custom-icon",
80
+ className: "".concat(classPrefix, "-custom-icon"),
85
81
  onClick: function onClick3(e) {
86
- setIsTagShow(false);
87
- props.onClose && props.onClose(e);
82
+ setVisible(false);
83
+ onClose2 && onClose2(e);
88
84
  }
89
85
  }, closeIcon) : React__default.createElement(Close, {
90
86
  width: 12,
91
87
  height: 12,
92
88
  onClick: function onClick3(e) {
93
- setIsTagShow(false);
94
- props.onClose && props.onClose(e);
89
+ setVisible(false);
90
+ onClose2 && onClose2(e);
95
91
  }
96
92
  })) : React__default.createElement("div", {
97
- className: btnName,
93
+ className: tagClass,
98
94
  style: _objectSpread(_objectSpread({}, style), getStyle()),
99
95
  onClick: function onClick3(e) {
100
96
  return handleClick(e);
101
97
  }
102
98
  }, children && React__default.createElement("span", {
103
- className: "nut-tag-text"
99
+ className: "".concat(classPrefix, "-text")
104
100
  }, children)));
105
101
  };
106
102
  Tag.defaultProps = defaultProps;
@@ -1 +1 @@
1
- .nut-theme-dark .nut-timedetail{background-color:#1f1f1f}.nut-theme-dark .nut-timedetail__detail__list__item{background-color:#0a0a0a;color:#e6e6e6}.nut-theme-dark .nut-timedetail__detail__list__item--curr{color:var(--nutui-timeselect-timedetail-item-cur-text-color, var(--nutui-brand-color, #fa2c19))}.nut-timedetail{display:flex;align-content:flex-start;flex-wrap:wrap;padding:0 0 50px 13px}.nut-timedetail__item{width:100px;height:50px;line-height:50px;text-align:center;margin-right:10px;margin-bottom:10px;background-color:var(--nutui-gray-4, #f4f4f4);color:var(--nutui-gray-1, #1a1a1a);border-radius:5px;font-size:14px;border:1px solid transparent;font-weight:700}.nut-timedetail__item-active{background-color:#fa2c19}.nut-timedetail__item-active{background-color:var(--nutui-brand-color-opacity);border:1px solid var(--nutui-brand-color, #fa2c19);color:var(--nutui-brand-color, #fa2c19)}
1
+ .nut-timedetail{display:flex;align-content:flex-start;flex-wrap:wrap;padding:0 0 50px 13px}.nut-timedetail__item{width:var(--nutui-timeselect-time-width, 100px);height:var(--nutui-timeselect-time-height, 50px);line-height:var(--nutui-timeselect-time-line-height, 50px);text-align:center;margin:var(--nutui-timeselect-time-margin, 0 10px 10px 0);background:var(--nutui-timeselect-time-background, var(--nutui-gray-4, #f4f4f4));color:var(--nutui-timeselect-time-color, var(--nutui-gray-1, #1a1a1a));border-radius:5px;font-size:var(--nutui-timeselect-font-size, 14px);border:1px solid transparent;font-weight:700}.nut-timedetail__item.active{background-color:var(--nutui-timeselect-time-active-background, var(--nutui-gray-5, #f8f8f8));border:1px solid var(--nutui-timeselect-time-active-color, var(--nutui-brand-color, #fa2c19));color:var(--nutui-timeselect-time-active-color, var(--nutui-brand-color, #fa2c19))}
@@ -1,4 +1,3 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  function ownKeys(object, enumerableOnly) {
4
3
  var keys = Object.keys(object);
@@ -21,54 +20,53 @@ function _objectSpread(target) {
21
20
  }
22
21
  return target;
23
22
  }
24
- import React__default, { useState, useEffect } from "react";
25
- import { c as cn } from "./bem.js";
26
- import { useConfig } from "./ConfigProvider.js";
27
- import "@bem-react/classname";
28
- var defaultProps = {
29
- className: "",
30
- currentKey: 0,
31
- currentTime: [],
32
- times: [],
33
- select: function select() {
34
- return null;
23
+ import React__default, { useMemo, useCallback } from "react";
24
+ import classNames from "classnames";
25
+ import { C as ComponentDefaults } from "./typings.js";
26
+ var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
27
+ activeDate: "",
28
+ activeTime: [],
29
+ options: [],
30
+ optionKey: {
31
+ valueKey: "value",
32
+ textKey: "text",
33
+ childrenKey: "children"
34
+ },
35
+ onSelect: function onSelect() {
35
36
  }
36
- };
37
+ });
37
38
  var TimeDetail = function TimeDetail2(props) {
38
- useConfig();
39
- var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), children = _defaultProps$props.children, times = _defaultProps$props.times, className = _defaultProps$props.className, currentKey = _defaultProps$props.currentKey, currentTime = _defaultProps$props.currentTime, select2 = _defaultProps$props.select;
40
- var b = cn("timedetail");
41
- var _useState = useState([]), _useState2 = _slicedToArray(_useState, 2), renderData = _useState2[0], setRenderData = _useState2[1];
42
- useEffect(function() {
43
- var currentData = times.find(function(timesItem) {
44
- return String(timesItem.key) === String(currentKey);
45
- });
46
- var renderData2 = currentData ? currentData.list : [];
47
- setRenderData(renderData2);
48
- }, [times, currentKey]);
49
- var handleTime = function handleTime2(time) {
50
- select2(time);
51
- };
52
- var getDetailClass = function getDetailClass2(item) {
53
- var initClass = "nut-timedetail__item";
54
- var curTimeData = currentTime.find(function(item2) {
55
- return String(item2.key) === String(currentKey);
39
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), options = _defaultProps$props.options, optionKey = _defaultProps$props.optionKey, className = _defaultProps$props.className, activeDate = _defaultProps$props.activeDate, activeTime = _defaultProps$props.activeTime, onSelect2 = _defaultProps$props.onSelect;
40
+ var classPrefix = "nut-timedetail";
41
+ var timeList = useMemo(function() {
42
+ return (options === null || options === void 0 ? void 0 : options.find(function(item) {
43
+ return item[optionKey.valueKey] === activeDate;
44
+ })) || _defineProperty({}, optionKey.childrenKey, []);
45
+ }, [options, optionKey, activeDate]);
46
+ var isActive = useCallback(function(timeKey) {
47
+ var date = activeTime.find(function(item) {
48
+ return item[optionKey.valueKey] === activeDate;
56
49
  });
57
- if (curTimeData && curTimeData.list && curTimeData.list.includes(item)) {
58
- initClass += " nut-timedetail__item-active";
50
+ if (date !== null && date !== void 0 && date[optionKey.childrenKey]) {
51
+ var time = date === null || date === void 0 ? void 0 : date[optionKey.childrenKey].find(function(time2) {
52
+ return time2[optionKey.valueKey] === timeKey;
53
+ });
54
+ return time;
59
55
  }
60
- return initClass;
61
- };
56
+ return false;
57
+ }, [activeTime, optionKey, activeDate]);
62
58
  return React__default.createElement("div", {
63
- className: "".concat(b(), " ").concat(className || "")
64
- }, renderData.map(function(item, index) {
59
+ className: classNames(classPrefix, className)
60
+ }, timeList[optionKey.childrenKey].map(function(item) {
65
61
  return React__default.createElement("span", {
66
- className: getDetailClass(item),
67
- key: item,
62
+ className: classNames("".concat(classPrefix, "__item"), {
63
+ active: isActive(item[optionKey.valueKey])
64
+ }),
65
+ key: item[optionKey.valueKey],
68
66
  onClick: function onClick() {
69
- return handleTime(item);
67
+ return onSelect2(item);
70
68
  }
71
- }, item);
69
+ }, item[optionKey.textKey]);
72
70
  }));
73
71
  };
74
72
  TimeDetail.defaultProps = defaultProps;
@@ -1,4 +1,3 @@
1
1
  import '../../Popup/style'
2
- import '../../TimePannel/style'
3
2
  import '../../TimeDetail/style'
4
3
  import '../../../packages/timeselect/timeselect.scss'