rsuite 5.1.0 → 5.2.3

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 (211) hide show
  1. package/Button/styles/index.less +7 -1
  2. package/CHANGELOG.md +45 -0
  3. package/PanelGroup/styles/index.less +12 -12
  4. package/README.md +3 -45
  5. package/Sidenav/styles/index.less +4 -0
  6. package/Slider/styles/index.less +20 -14
  7. package/Toggle/styles/index.less +48 -27
  8. package/Toggle/styles/mixin.less +16 -14
  9. package/cjs/@types/common.d.ts +8 -2
  10. package/cjs/Affix/Affix.js +3 -3
  11. package/cjs/Animation/Collapse.js +9 -7
  12. package/cjs/Animation/Transition.js +4 -2
  13. package/cjs/AutoComplete/AutoComplete.d.ts +2 -2
  14. package/cjs/AutoComplete/AutoComplete.js +7 -4
  15. package/cjs/Calendar/TimeDropdown.js +5 -3
  16. package/cjs/Cascader/Cascader.d.ts +1 -1
  17. package/cjs/Cascader/DropdownMenu.js +6 -5
  18. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  19. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +1 -1
  20. package/cjs/CheckTreePicker/utils.d.ts +1 -1
  21. package/cjs/CheckTreePicker/utils.js +7 -6
  22. package/cjs/Checkbox/Checkbox.d.ts +3 -3
  23. package/cjs/CheckboxGroup/CheckboxGroup.js +2 -2
  24. package/cjs/CheckboxGroup/CheckboxGroupContext.d.ts +1 -1
  25. package/cjs/DOMHelper/index.d.ts +12 -27
  26. package/cjs/DOMHelper/index.js +4 -3
  27. package/cjs/DOMHelper/isElement.d.ts +2 -0
  28. package/cjs/DOMHelper/isElement.js +11 -0
  29. package/cjs/DatePicker/DatePicker.d.ts +3 -3
  30. package/cjs/DateRangePicker/Calendar.d.ts +1 -1
  31. package/cjs/DateRangePicker/DateRangePicker.d.ts +2 -2
  32. package/cjs/Disclosure/Disclosure.d.ts +1 -1
  33. package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
  34. package/cjs/Dropdown/DropdownItem.d.ts +1 -1
  35. package/cjs/Dropdown/DropdownItem.js +16 -19
  36. package/cjs/Dropdown/DropdownMenu.d.ts +2 -2
  37. package/cjs/Dropdown/useRenderDropdownItem.d.ts +2 -0
  38. package/cjs/Dropdown/useRenderDropdownItem.js +26 -0
  39. package/cjs/Form/Form.d.ts +1 -1
  40. package/cjs/FormControl/FormControl.d.ts +9 -3
  41. package/cjs/Input/Input.d.ts +2 -1
  42. package/cjs/InputNumber/InputNumber.js +2 -2
  43. package/cjs/InputPicker/InputPicker.js +3 -3
  44. package/cjs/List/helper/useSortHelper.js +11 -6
  45. package/cjs/MaskedInput/MaskedInput.d.ts +5 -42
  46. package/cjs/MaskedInput/MaskedInput.js +9 -63
  47. package/cjs/MaskedInput/TextMask.d.ts +43 -0
  48. package/cjs/MaskedInput/TextMask.js +80 -0
  49. package/cjs/Menu/Menu.js +46 -34
  50. package/cjs/Menu/MenuItem.d.ts +1 -1
  51. package/cjs/Menu/MenuItem.js +16 -12
  52. package/cjs/Menu/Menubar.d.ts +1 -1
  53. package/cjs/Message/Message.js +13 -11
  54. package/cjs/Modal/Modal.js +5 -3
  55. package/cjs/Modal/utils.js +15 -14
  56. package/cjs/Notification/Notification.js +6 -3
  57. package/cjs/Overlay/Modal.js +14 -11
  58. package/cjs/Overlay/ModalManager.js +19 -7
  59. package/cjs/Overlay/OverlayTrigger.js +2 -2
  60. package/cjs/Overlay/Position.js +27 -17
  61. package/cjs/Overlay/positionUtils.js +16 -8
  62. package/cjs/Panel/Panel.d.ts +1 -1
  63. package/cjs/Picker/DropdownMenu.js +10 -6
  64. package/cjs/Picker/DropdownMenuCheckItem.d.ts +3 -3
  65. package/cjs/Picker/PickerOverlay.js +5 -3
  66. package/cjs/Picker/PickerToggle.d.ts +6 -0
  67. package/cjs/Picker/PickerToggle.js +16 -8
  68. package/cjs/Picker/SearchBar.d.ts +1 -1
  69. package/cjs/Picker/utils.d.ts +2 -2
  70. package/cjs/Radio/Radio.d.ts +1 -1
  71. package/cjs/RadioGroup/RadioGroup.d.ts +1 -1
  72. package/cjs/RadioGroup/RadioGroup.js +2 -2
  73. package/cjs/RangeSlider/RangeSlider.js +9 -5
  74. package/cjs/Rate/Character.js +2 -2
  75. package/cjs/Rate/Rate.js +3 -1
  76. package/cjs/Ripple/Ripple.js +6 -7
  77. package/cjs/Sidenav/SidenavDropdownItem.d.ts +1 -1
  78. package/cjs/Sidenav/SidenavDropdownItem.js +17 -10
  79. package/cjs/Sidenav/SidenavDropdownMenu.d.ts +1 -1
  80. package/cjs/Slider/Graduated.js +1 -1
  81. package/cjs/Slider/Handle.js +10 -5
  82. package/cjs/Slider/ProgressBar.js +1 -1
  83. package/cjs/Slider/Slider.js +9 -5
  84. package/cjs/Toggle/Toggle.d.ts +3 -6
  85. package/cjs/Toggle/Toggle.js +32 -27
  86. package/cjs/Tree/Tree.d.ts +3 -3
  87. package/cjs/TreePicker/TreeNode.d.ts +1 -1
  88. package/cjs/TreePicker/TreeNode.js +2 -2
  89. package/cjs/TreePicker/TreePicker.d.ts +1 -1
  90. package/cjs/Uploader/Uploader.d.ts +4 -4
  91. package/cjs/locales/fa_IR.js +8 -8
  92. package/cjs/utils/BrowserDetection.js +1 -1
  93. package/cjs/utils/index.d.ts +1 -0
  94. package/cjs/utils/index.js +7 -2
  95. package/cjs/utils/scrollTopAnimation.js +5 -5
  96. package/cjs/utils/treeUtils.d.ts +2 -2
  97. package/cjs/utils/useElementResize.d.ts +1 -1
  98. package/cjs/utils/useElementResize.js +11 -6
  99. package/cjs/utils/useEventListener.js +4 -2
  100. package/cjs/utils/useIsMounted.d.ts +2 -0
  101. package/cjs/utils/useIsMounted.js +22 -0
  102. package/cjs/utils/usePortal.js +2 -2
  103. package/cjs/utils/useRootClose.js +10 -10
  104. package/dist/rsuite-rtl.css +194 -119
  105. package/dist/rsuite-rtl.min.css +1 -1
  106. package/dist/rsuite-rtl.min.css.map +1 -1
  107. package/dist/rsuite.css +194 -119
  108. package/dist/rsuite.js +703 -504
  109. package/dist/rsuite.js.map +1 -1
  110. package/dist/rsuite.min.css +1 -1
  111. package/dist/rsuite.min.css.map +1 -1
  112. package/dist/rsuite.min.js +1 -1
  113. package/dist/rsuite.min.js.LICENSE.txt +9 -0
  114. package/dist/rsuite.min.js.map +1 -1
  115. package/esm/@types/common.d.ts +8 -2
  116. package/esm/Affix/Affix.js +1 -1
  117. package/esm/Animation/Collapse.js +2 -1
  118. package/esm/Animation/Transition.js +3 -2
  119. package/esm/AutoComplete/AutoComplete.d.ts +2 -2
  120. package/esm/AutoComplete/AutoComplete.js +8 -5
  121. package/esm/Calendar/TimeDropdown.js +2 -1
  122. package/esm/Cascader/Cascader.d.ts +1 -1
  123. package/esm/Cascader/DropdownMenu.js +4 -3
  124. package/esm/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  125. package/esm/CheckTreePicker/CheckTreePicker.d.ts +1 -1
  126. package/esm/CheckTreePicker/utils.d.ts +1 -1
  127. package/esm/CheckTreePicker/utils.js +7 -6
  128. package/esm/Checkbox/Checkbox.d.ts +3 -3
  129. package/esm/CheckboxGroup/CheckboxGroup.js +2 -2
  130. package/esm/CheckboxGroup/CheckboxGroupContext.d.ts +1 -1
  131. package/esm/DOMHelper/index.d.ts +12 -27
  132. package/esm/DOMHelper/index.js +2 -3
  133. package/esm/DOMHelper/isElement.d.ts +2 -0
  134. package/esm/DOMHelper/isElement.js +5 -0
  135. package/esm/DatePicker/DatePicker.d.ts +3 -3
  136. package/esm/DateRangePicker/Calendar.d.ts +1 -1
  137. package/esm/DateRangePicker/DateRangePicker.d.ts +2 -2
  138. package/esm/Disclosure/Disclosure.d.ts +1 -1
  139. package/esm/Disclosure/DisclosureContext.d.ts +1 -1
  140. package/esm/Dropdown/DropdownItem.d.ts +1 -1
  141. package/esm/Dropdown/DropdownItem.js +15 -19
  142. package/esm/Dropdown/DropdownMenu.d.ts +2 -2
  143. package/esm/Dropdown/useRenderDropdownItem.d.ts +2 -0
  144. package/esm/Dropdown/useRenderDropdownItem.js +18 -0
  145. package/esm/Form/Form.d.ts +1 -1
  146. package/esm/FormControl/FormControl.d.ts +9 -3
  147. package/esm/Input/Input.d.ts +2 -1
  148. package/esm/InputNumber/InputNumber.js +2 -2
  149. package/esm/InputPicker/InputPicker.js +2 -2
  150. package/esm/List/helper/useSortHelper.js +8 -4
  151. package/esm/MaskedInput/MaskedInput.d.ts +5 -42
  152. package/esm/MaskedInput/MaskedInput.js +9 -63
  153. package/esm/MaskedInput/TextMask.d.ts +43 -0
  154. package/esm/MaskedInput/TextMask.js +67 -0
  155. package/esm/Menu/Menu.js +46 -36
  156. package/esm/Menu/MenuItem.d.ts +1 -1
  157. package/esm/Menu/MenuItem.js +16 -12
  158. package/esm/Menu/Menubar.d.ts +1 -1
  159. package/esm/Message/Message.js +15 -13
  160. package/esm/Modal/Modal.js +3 -2
  161. package/esm/Modal/utils.js +14 -12
  162. package/esm/Notification/Notification.js +7 -4
  163. package/esm/Overlay/Modal.js +11 -8
  164. package/esm/Overlay/ModalManager.js +6 -1
  165. package/esm/Overlay/OverlayTrigger.js +1 -1
  166. package/esm/Overlay/Position.js +20 -11
  167. package/esm/Overlay/positionUtils.js +5 -1
  168. package/esm/Panel/Panel.d.ts +1 -1
  169. package/esm/Picker/DropdownMenu.js +3 -1
  170. package/esm/Picker/DropdownMenuCheckItem.d.ts +3 -3
  171. package/esm/Picker/PickerOverlay.js +2 -1
  172. package/esm/Picker/PickerToggle.d.ts +6 -0
  173. package/esm/Picker/PickerToggle.js +15 -8
  174. package/esm/Picker/SearchBar.d.ts +1 -1
  175. package/esm/Picker/utils.d.ts +2 -2
  176. package/esm/Radio/Radio.d.ts +1 -1
  177. package/esm/RadioGroup/RadioGroup.d.ts +1 -1
  178. package/esm/RadioGroup/RadioGroup.js +2 -2
  179. package/esm/RangeSlider/RangeSlider.js +4 -2
  180. package/esm/Rate/Character.js +2 -2
  181. package/esm/Rate/Rate.js +2 -1
  182. package/esm/Ripple/Ripple.js +4 -3
  183. package/esm/Sidenav/SidenavDropdownItem.d.ts +1 -1
  184. package/esm/Sidenav/SidenavDropdownItem.js +16 -10
  185. package/esm/Sidenav/SidenavDropdownMenu.d.ts +1 -1
  186. package/esm/Slider/Graduated.js +1 -1
  187. package/esm/Slider/Handle.js +5 -2
  188. package/esm/Slider/ProgressBar.js +1 -1
  189. package/esm/Slider/Slider.js +4 -2
  190. package/esm/Toggle/Toggle.d.ts +3 -6
  191. package/esm/Toggle/Toggle.js +34 -29
  192. package/esm/Tree/Tree.d.ts +3 -3
  193. package/esm/TreePicker/TreeNode.d.ts +1 -1
  194. package/esm/TreePicker/TreeNode.js +1 -1
  195. package/esm/TreePicker/TreePicker.d.ts +1 -1
  196. package/esm/Uploader/Uploader.d.ts +4 -4
  197. package/esm/locales/fa_IR.js +8 -8
  198. package/esm/utils/BrowserDetection.js +1 -1
  199. package/esm/utils/index.d.ts +1 -0
  200. package/esm/utils/index.js +2 -1
  201. package/esm/utils/scrollTopAnimation.js +2 -2
  202. package/esm/utils/treeUtils.d.ts +2 -2
  203. package/esm/utils/useElementResize.d.ts +1 -1
  204. package/esm/utils/useElementResize.js +12 -5
  205. package/esm/utils/useEventListener.js +1 -1
  206. package/esm/utils/useIsMounted.d.ts +2 -0
  207. package/esm/utils/useIsMounted.js +16 -0
  208. package/esm/utils/usePortal.js +2 -2
  209. package/esm/utils/useRootClose.js +8 -6
  210. package/package.json +5 -5
  211. package/styles/plugins/palette.js +10 -1
@@ -29,6 +29,8 @@ var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
29
29
 
30
30
  var _DropdownContext = _interopRequireDefault(require("../Dropdown/DropdownContext"));
31
31
 
32
+ var _useRenderDropdownItem = require("../Dropdown/useRenderDropdownItem");
33
+
32
34
  /**
33
35
  * Tree View Node
34
36
  * @see https://www.w3.org/TR/wai-aria-practices-1.2/#TreeView
@@ -78,34 +80,39 @@ var SidenavDropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props
78
80
  var menuitemEventHandlers = {
79
81
  onClick: (0, _utils.createChainedFunction)(handleClick, onClick)
80
82
  };
83
+ var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
81
84
 
82
85
  if (divider) {
83
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
86
+ return renderDropdownItem((0, _extends2.default)({
84
87
  ref: ref,
85
- role: "separator",
88
+ role: 'separator',
86
89
  style: style,
87
90
  className: merge(prefix('divider'), className)
88
91
  }, rest));
89
92
  }
90
93
 
91
94
  if (panel) {
92
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
95
+ return renderDropdownItem((0, _extends2.default)({
93
96
  ref: ref,
94
- role: "none presentation",
97
+ role: 'none presentation',
95
98
  style: style,
96
99
  className: merge(prefix('panel'), className)
97
- }, rest), children);
100
+ }, rest, {
101
+ children: children
102
+ }));
98
103
  }
99
104
 
100
- return /*#__PURE__*/_react.default.createElement(_SafeAnchor.default, (0, _extends2.default)({
105
+ return renderDropdownItem((0, _extends2.default)({
101
106
  ref: ref
102
107
  }, rest, {
103
108
  style: style,
104
109
  className: classes,
105
- "aria-current": selected || undefined
106
- }, menuitemEventHandlers), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
107
- className: prefix('menu-icon')
108
- }), children, /*#__PURE__*/_react.default.createElement(_Ripple.default, null));
110
+ 'aria-current': selected || undefined
111
+ }, menuitemEventHandlers, {
112
+ children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
113
+ className: prefix('menu-icon')
114
+ }), children, /*#__PURE__*/_react.default.createElement(_Ripple.default, null))
115
+ }), _SafeAnchor.default);
109
116
  });
110
117
 
111
118
  SidenavDropdownItem.displayName = 'Sidenav.Dropdown.Item';
@@ -15,7 +15,7 @@ export interface SidenavDropdownMenuProps<T = any> extends WithAsProps, Omit<Rea
15
15
  /** Whether the submenu is expanded, used in Sidenav. */
16
16
  expanded?: boolean;
17
17
  /** Select the callback function for the current option */
18
- onSelect?: (eventKey: T, event: React.SyntheticEvent<HTMLElement>) => void;
18
+ onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
19
19
  title?: React.ReactNode;
20
20
  }
21
21
  /**
@@ -77,7 +77,7 @@ var Graduated = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
77
77
  return /*#__PURE__*/_react.default.createElement(Component, {
78
78
  ref: ref,
79
79
  className: classes
80
- }, /*#__PURE__*/_react.default.createElement("ul", null, graduatedItems));
80
+ }, /*#__PURE__*/_react.default.createElement("ol", null, graduatedItems));
81
81
  });
82
82
 
83
83
  Graduated.displayName = 'Graduated';
@@ -15,7 +15,11 @@ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
- var _domLib = require("dom-lib");
18
+ var _DOMMouseMoveTracker = _interopRequireDefault(require("dom-lib/DOMMouseMoveTracker"));
19
+
20
+ var _addStyle = _interopRequireDefault(require("dom-lib/addStyle"));
21
+
22
+ var _getWidth = _interopRequireDefault(require("dom-lib/getWidth"));
19
23
 
20
24
  var _Tooltip = _interopRequireDefault(require("../Tooltip"));
21
25
 
@@ -56,7 +60,7 @@ var Handle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
56
60
 
57
61
  var rootRef = (0, _react.useRef)();
58
62
  var horizontalKey = rtl ? 'right' : 'left';
59
- var direction = vertical ? 'top' : horizontalKey;
63
+ var direction = vertical ? 'bottom' : horizontalKey;
60
64
  var styles = (0, _extends3.default)({}, style, (_extends2 = {}, _extends2[direction] = position + "%", _extends2));
61
65
 
62
66
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
@@ -78,8 +82,8 @@ var Handle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
78
82
  var tooltipElement = tooltipRef.current;
79
83
 
80
84
  if (tooltip && tooltipElement) {
81
- var width = (0, _domLib.getWidth)(tooltipElement);
82
- (0, _domLib.addStyle)(tooltipElement, 'left', "-" + width / 2 + "px");
85
+ var width = (0, _getWidth.default)(tooltipElement);
86
+ (0, _addStyle.default)(tooltipElement, 'left', "-" + width / 2 + "px");
83
87
  }
84
88
  }, [tooltip]);
85
89
  var handleDragMove = (0, _react.useCallback)(function (_deltaX, _deltaY, event) {
@@ -96,7 +100,7 @@ var Handle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
96
100
  onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, rootRef.current.dataset);
97
101
  }, [onDragEnd, releaseMouseMoves]);
98
102
  var getMouseMoveTracker = (0, _react.useCallback)(function () {
99
- return mouseMoveTracker.current || new _domLib.DOMMouseMoveTracker(handleDragMove, handleDragEnd, document.body);
103
+ return mouseMoveTracker.current || new _DOMMouseMoveTracker.default(handleDragMove, handleDragEnd, document.body);
100
104
  }, [handleDragEnd, handleDragMove]);
101
105
  var handleMouseDown = (0, _react.useCallback)(function (event) {
102
106
  var _mouseMoveTracker$cur3, _rootRef$current;
@@ -135,6 +139,7 @@ var Handle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
135
139
  ref: tooltipRef,
136
140
  className: merge(prefix('tooltip'), 'placement-top')
137
141
  }, renderTooltip ? renderTooltip(value) : value), /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends3.default)({
142
+ tabIndex: -1,
138
143
  value: value
139
144
  }, rest)), children);
140
145
  });
@@ -35,7 +35,7 @@ var ProgressBar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
35
35
 
36
36
  var sizeKey = vertical ? 'height' : 'width';
37
37
  var dirKey = rtl ? 'right' : 'left';
38
- var startKey = vertical ? 'top' : dirKey;
38
+ var startKey = vertical ? 'bottom' : dirKey;
39
39
  var styles = (0, _extends3.default)({}, style, (_extends2 = {}, _extends2[startKey] = start + "%", _extends2[sizeKey] = end - start + "%", _extends2));
40
40
  var classes = merge(className, withClassPrefix());
41
41
  return /*#__PURE__*/_react.default.createElement(Component, {
@@ -15,7 +15,11 @@ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
- var _domLib = require("dom-lib");
18
+ var _getWidth = _interopRequireDefault(require("dom-lib/getWidth"));
19
+
20
+ var _getHeight = _interopRequireDefault(require("dom-lib/getHeight"));
21
+
22
+ var _getOffset = _interopRequireDefault(require("dom-lib/getOffset"));
19
23
 
20
24
  var _ProgressBar = _interopRequireDefault(require("./ProgressBar"));
21
25
 
@@ -129,11 +133,11 @@ var Slider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
129
133
  }, [max, min, step]); // Get the height of the progress bar
130
134
 
131
135
  var getBarHeight = (0, _react.useCallback)(function () {
132
- return barRef.current ? (0, _domLib.getHeight)(barRef.current) : 0;
136
+ return barRef.current ? (0, _getHeight.default)(barRef.current) : 0;
133
137
  }, []); // Get the width of the progress bar
134
138
 
135
139
  var getBarWidth = (0, _react.useCallback)(function () {
136
- return barRef.current ? (0, _domLib.getWidth)(barRef.current) : 0;
140
+ return barRef.current ? (0, _getWidth.default)(barRef.current) : 0;
137
141
  }, []);
138
142
  var getValueByOffset = (0, _react.useCallback)(function (offset) {
139
143
  var value = 0;
@@ -157,8 +161,8 @@ var Slider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
157
161
  */
158
162
 
159
163
  var getValueByPosition = (0, _react.useCallback)(function (event) {
160
- var barOffset = (0, _domLib.getOffset)(barRef.current);
161
- var offset = vertical ? event.pageY - barOffset.top : event.pageX - barOffset.left;
164
+ var barOffset = (0, _getOffset.default)(barRef.current);
165
+ var offset = vertical ? barOffset.top + barOffset.height - event.pageY : event.pageX - barOffset.left;
162
166
  var offsetValue = rtl && !vertical ? barOffset.width - offset : offset;
163
167
  return getValueByOffset(offsetValue) + min;
164
168
  }, [getValueByOffset, min, rtl, vertical]);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { WithAsProps, TypeAttributes } from '../@types/common';
2
+ import { WithAsProps, TypeAttributes, RsRefForwardingComponent } from '../@types/common';
3
3
  import { ToggleLocale } from '../locales';
4
4
  export interface ToggleProps extends WithAsProps {
5
5
  /** Wheather to disabled toggle */
@@ -23,10 +23,7 @@ export interface ToggleProps extends WithAsProps {
23
23
  /** Custom locale */
24
24
  locale?: ToggleLocale;
25
25
  /** Callback function when state changes */
26
- onChange?: (checked: boolean, event: React.SyntheticEvent) => void;
26
+ onChange?: (checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;
27
27
  }
28
- /**
29
- * fixme: Should contain an input[type=checkbox]
30
- */
31
- declare const Toggle: React.ForwardRefExoticComponent<ToggleProps & React.RefAttributes<unknown>>;
28
+ declare const Toggle: RsRefForwardingComponent<'label', ToggleProps>;
32
29
  export default Toggle;
@@ -21,9 +21,6 @@ var _Plaintext = _interopRequireDefault(require("../Plaintext"));
21
21
 
22
22
  var _Loader = _interopRequireDefault(require("../Loader"));
23
23
 
24
- /**
25
- * fixme: Should contain an input[type=checkbox]
26
- */
27
24
  var Toggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
28
25
  var _props$as = props.as,
29
26
  Component = _props$as === void 0 ? 'span' : _props$as,
@@ -36,13 +33,14 @@ var Toggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
36
33
  checkedChildren = props.checkedChildren,
37
34
  unCheckedChildren = props.unCheckedChildren,
38
35
  _props$classPrefix = props.classPrefix,
39
- classPrefix = _props$classPrefix === void 0 ? 'btn-toggle' : _props$classPrefix,
36
+ classPrefix = _props$classPrefix === void 0 ? 'toggle' : _props$classPrefix,
40
37
  checkedProp = props.checked,
41
38
  defaultChecked = props.defaultChecked,
42
39
  size = props.size,
43
40
  localeProp = props.locale,
44
41
  onChange = props.onChange,
45
42
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "disabled", "readOnly", "loading", "plaintext", "className", "checkedChildren", "unCheckedChildren", "classPrefix", "checked", "defaultChecked", "size", "locale", "onChange"]);
43
+ var inputRef = (0, _react.useRef)();
46
44
 
47
45
  var _useControlled = (0, _utils.useControlled)(checkedProp, defaultChecked),
48
46
  checked = _useControlled[0],
@@ -63,49 +61,50 @@ var Toggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
63
61
  }));
64
62
  var inner = checked ? checkedChildren : unCheckedChildren;
65
63
  var label = checked ? locale.on : locale.off;
66
- var handleChange = (0, _react.useCallback)(function (event) {
64
+ var handleInputChange = (0, _react.useCallback)(function (e) {
67
65
  if (disabled || readOnly) {
68
66
  return;
69
67
  }
70
68
 
71
- setChecked(!checked);
72
- onChange === null || onChange === void 0 ? void 0 : onChange(!checked, event);
73
- }, [checked, disabled, onChange, readOnly, setChecked]);
74
- var handleKeyDown = (0, _react.useCallback)(function (event) {
75
- if (event.key !== ' ') {
76
- return;
77
- }
78
-
79
- handleChange(event);
80
- event.preventDefault();
81
- }, [handleChange]);
69
+ var checked = e.target.checked;
70
+ setChecked(checked);
71
+ onChange === null || onChange === void 0 ? void 0 : onChange(checked, e);
72
+ }, [disabled, readOnly, setChecked, onChange]);
82
73
 
83
74
  if (plaintext) {
84
75
  return /*#__PURE__*/_react.default.createElement(_Plaintext.default, null, inner || label);
85
76
  }
86
77
 
87
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
78
+ return /*#__PURE__*/_react.default.createElement("label", (0, _extends2.default)({
79
+ ref: ref,
80
+ className: classes
81
+ }, rest), /*#__PURE__*/_react.default.createElement("input", {
82
+ ref: inputRef,
83
+ type: "checkbox",
84
+ checked: checked,
85
+ disabled: disabled,
86
+ readOnly: readOnly,
87
+ onChange: handleInputChange,
88
+ className: prefix('input'),
88
89
  role: "switch",
89
90
  "aria-checked": checked,
90
91
  "aria-disabled": disabled,
91
92
  "aria-label": typeof inner === 'string' ? inner : label,
92
- "aria-busy": loading || undefined,
93
- tabIndex: 0
94
- }, rest, {
95
- ref: ref,
96
- className: classes,
97
- onClick: handleChange,
98
- onKeyDown: handleKeyDown
99
- }), /*#__PURE__*/_react.default.createElement("span", {
93
+ "aria-busy": loading || undefined
94
+ }), /*#__PURE__*/_react.default.createElement(Component, {
95
+ className: prefix('presentation')
96
+ }, /*#__PURE__*/_react.default.createElement("span", {
100
97
  className: prefix('inner')
101
98
  }, inner), loading && /*#__PURE__*/_react.default.createElement(_Loader.default, {
102
99
  className: prefix('loader')
103
- }));
100
+ })));
104
101
  });
105
102
 
106
103
  Toggle.displayName = 'Toggle';
107
104
  Toggle.propTypes = {
108
105
  disabled: _propTypes.default.bool,
106
+ readOnly: _propTypes.default.bool,
107
+ plaintext: _propTypes.default.bool,
109
108
  checked: _propTypes.default.bool,
110
109
  defaultChecked: _propTypes.default.bool,
111
110
  checkedChildren: _propTypes.default.node,
@@ -113,7 +112,13 @@ Toggle.propTypes = {
113
112
  loading: _propTypes.default.bool,
114
113
  classPrefix: _propTypes.default.string,
115
114
  className: _propTypes.default.string,
116
- onChange: _propTypes.default.func
115
+ onChange: _propTypes.default.func,
116
+ as: _propTypes.default.elementType,
117
+ size: _propTypes.default.oneOf(['sm', 'md', 'lg']),
118
+ locale: _propTypes.default.shape({
119
+ on: _propTypes.default.string,
120
+ off: _propTypes.default.string
121
+ })
117
122
  };
118
123
  var _default = Toggle;
119
124
  exports.default = _default;
@@ -23,7 +23,7 @@ export interface TreeDragProps<ItemDataType = Record<string, any>> {
23
23
  /** Whether the node can be dragged */
24
24
  draggable?: boolean;
25
25
  /** Called when scrolling */
26
- onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;
26
+ onScroll?: (event: React.SyntheticEvent) => void;
27
27
  /** Called when node drag start */
28
28
  onDragStart?: (nodeData: ItemDataType, e: React.DragEvent) => void;
29
29
  /** Called when node drag enter */
@@ -61,7 +61,7 @@ export interface TreeBaseProps<ValueType = string | number, ItemDataType = Recor
61
61
  /** Callback function for data change */
62
62
  onExpand?: (expandItemValues: ItemDataType[], activeNode: ItemDataType, concat: (data: ItemDataType[], children: React.ReactNode) => ItemDataType[]) => void;
63
63
  /** Callback function after selecting tree node */
64
- onSelect?: (activeNode: ItemDataType, value: ValueType, event: React.SyntheticEvent<any>) => void;
64
+ onSelect?: (activeNode: ItemDataType, value: ValueType, event: React.SyntheticEvent) => void;
65
65
  /** Custom Render tree Node */
66
66
  renderTreeNode?: (nodeData: ItemDataType) => React.ReactNode;
67
67
  /** Custom Render icon */
@@ -69,7 +69,7 @@ export interface TreeBaseProps<ValueType = string | number, ItemDataType = Recor
69
69
  /** callback fired when search */
70
70
  onSearch?: (searchKeyword: string, event: React.KeyboardEvent<HTMLInputElement>) => void;
71
71
  /** Called when clean */
72
- onClean?: (event: React.SyntheticEvent<any>) => void;
72
+ onClean?: (event: React.SyntheticEvent) => void;
73
73
  /** Custom search rules. */
74
74
  searchBy?: (keyword: string, label: React.ReactNode, item: any) => boolean;
75
75
  /** Customizing the Rendering Menu list */
@@ -22,7 +22,7 @@ export interface TreeNodeProps extends WithAsProps {
22
22
  classPrefix?: string;
23
23
  style?: React.CSSProperties;
24
24
  onExpand?: (nodeData: any) => void;
25
- onSelect?: (nodeData: any, event: React.SyntheticEvent<any>) => void;
25
+ onSelect?: (nodeData: any, event: React.SyntheticEvent) => void;
26
26
  onRenderTreeIcon?: (nodeData: any) => React.ReactNode;
27
27
  onRenderTreeNode?: (nodeData: any) => React.ReactNode;
28
28
  onDragStart?: (data: any, event: React.DragEvent<any>) => void;
@@ -15,7 +15,7 @@ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
- var _domLib = require("dom-lib");
18
+ var _hasClass = _interopRequireDefault(require("dom-lib/hasClass"));
19
19
 
20
20
  var _ArrowDown = _interopRequireDefault(require("@rsuite/icons/legacy/ArrowDown"));
21
21
 
@@ -94,7 +94,7 @@ var TreeNode = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
94
94
  }
95
95
 
96
96
  if (event.target instanceof HTMLElement) {
97
- if ((0, _domLib.hasClass)(event.target.parentNode, prefix('expand-icon-wrapper'))) {
97
+ if ((0, _hasClass.default)(event.target.parentNode, prefix('expand-icon-wrapper'))) {
98
98
  return;
99
99
  }
100
100
  }
@@ -22,7 +22,7 @@ export interface TreePickerProps<T = number | string> extends TreeBaseProps<T, I
22
22
  /** Custom render selected items */
23
23
  renderValue?: (value: T, selectedItems: ItemDataType, selectedElement: React.ReactNode) => React.ReactNode;
24
24
  /** Called when scrolling */
25
- onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;
25
+ onScroll?: (event: React.SyntheticEvent) => void;
26
26
  }
27
27
  declare const TreePicker: PickerComponent<TreePickerProps>;
28
28
  export default TreePicker;
@@ -82,13 +82,13 @@ export interface UploaderProps extends WithAsProps {
82
82
  /** In the file list, for uploading failed files, click the callback function to upload */
83
83
  onReupload?: (file: FileType) => void;
84
84
  /** In the file list, click the callback function for the uploaded file */
85
- onPreview?: (file: FileType, event: React.SyntheticEvent<any>) => void;
85
+ onPreview?: (file: FileType, event: React.SyntheticEvent) => void;
86
86
  /** Upload callback function with erro */
87
- onError?: (status: any, file: FileType, event: React.SyntheticEvent<any>, xhr: XMLHttpRequest) => void;
87
+ onError?: (status: any, file: FileType, event: React.SyntheticEvent, xhr: XMLHttpRequest) => void;
88
88
  /** callback function after successful upload */
89
- onSuccess?: (response: any, file: FileType, event: React.SyntheticEvent<any>, xhr: XMLHttpRequest) => void;
89
+ onSuccess?: (response: any, file: FileType, event: React.SyntheticEvent, xhr: XMLHttpRequest) => void;
90
90
  /** Callback functions that upload progress change */
91
- onProgress?: (percent: number, file: FileType, event: React.SyntheticEvent<any>, xhr: XMLHttpRequest) => void;
91
+ onProgress?: (percent: number, file: FileType, event: React.SyntheticEvent, xhr: XMLHttpRequest) => void;
92
92
  /** In the file list, click the callback function to delete a file */
93
93
  onRemove?: (file: FileType) => void;
94
94
  /** Custom render file information */
@@ -10,14 +10,14 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var _faIR = _interopRequireDefault(require("date-fns/locale/fa-IR"));
11
11
 
12
12
  var Calendar = {
13
- sunday: 'یکشنبه',
14
- monday: 'دوشنبه',
15
- tuesday: 'سه شنبه',
16
- wednesday: 'چهارشنبه',
17
- thursday: 'پنجشنبه',
18
- friday: 'جمعه',
19
- saturday: 'شنبه',
20
- ok: 'خوب',
13
+ sunday: 'ی',
14
+ monday: 'د',
15
+ tuesday: 'س',
16
+ wednesday: 'چ',
17
+ thursday: 'پ',
18
+ friday: 'ج',
19
+ saturday: 'ش',
20
+ ok: 'تایید',
21
21
  today: 'امروز',
22
22
  yesterday: 'دیروز',
23
23
  hours: 'ساعت',
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  exports.__esModule = true;
6
6
  exports.isEdge = exports.isIE11 = exports.isIE10 = exports.isIE = void 0;
7
7
 
8
- var _canUseDOM = _interopRequireDefault(require("dom-lib/lib/query/canUseDOM"));
8
+ var _canUseDOM = _interopRequireDefault(require("dom-lib/canUseDOM"));
9
9
 
10
10
  // from http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
11
11
  // Internet Explorer 6-11
@@ -39,3 +39,4 @@ export { default as useEventCallback } from './useEventCallback';
39
39
  export { default as useUpdatedRef } from './useUpdatedRef';
40
40
  export { default as useWillUnmount } from './useWillUnmount';
41
41
  export { default as useUpdateEffect } from './useUpdateEffect';
42
+ export { default as useIsMounted } from './useIsMounted';
@@ -40,13 +40,14 @@ var _exportNames = {
40
40
  useUpdatedRef: true,
41
41
  useWillUnmount: true,
42
42
  useUpdateEffect: true,
43
+ useIsMounted: true,
43
44
  defaultClassPrefix: true,
44
45
  getClassNamePrefix: true,
45
46
  globalKey: true,
46
47
  DateUtils: true,
47
48
  TypeChecker: true
48
49
  };
49
- exports.TypeChecker = exports.DateUtils = exports.globalKey = exports.getClassNamePrefix = exports.defaultClassPrefix = exports.useUpdateEffect = exports.useWillUnmount = exports.useUpdatedRef = exports.useEventCallback = exports.stringToObject = exports.getSafeRegExpString = exports.useRootClose = exports.useControlled = exports.useTimeout = exports.createComponent = exports.usePortal = exports.useCustom = exports.useElementResize = exports.useEventListener = exports.useClassNames = exports.appendTooltip = exports.scrollTopAnimation = exports.reactToString = exports.composeFunctions = exports.shallowEqualArray = exports.shallowEqual = exports.mergeRefs = exports.getDOMNode = exports.placementPolyfill = exports.clone = exports.getDataGroupBy = exports.previewFile = exports.ajaxUpload = exports.tplTransform = exports.ReactChildren = exports.isOneOf = exports.createChainedFunction = exports.prefix = exports.guid = void 0;
50
+ exports.TypeChecker = exports.DateUtils = exports.globalKey = exports.getClassNamePrefix = exports.defaultClassPrefix = exports.useIsMounted = exports.useUpdateEffect = exports.useWillUnmount = exports.useUpdatedRef = exports.useEventCallback = exports.stringToObject = exports.getSafeRegExpString = exports.useRootClose = exports.useControlled = exports.useTimeout = exports.createComponent = exports.usePortal = exports.useCustom = exports.useElementResize = exports.useEventListener = exports.useClassNames = exports.appendTooltip = exports.scrollTopAnimation = exports.reactToString = exports.composeFunctions = exports.shallowEqualArray = exports.shallowEqual = exports.mergeRefs = exports.getDOMNode = exports.placementPolyfill = exports.clone = exports.getDataGroupBy = exports.previewFile = exports.ajaxUpload = exports.tplTransform = exports.ReactChildren = exports.isOneOf = exports.createChainedFunction = exports.prefix = exports.guid = void 0;
50
51
 
51
52
  var _BrowserDetection = require("./BrowserDetection");
52
53
 
@@ -229,4 +230,8 @@ exports.useWillUnmount = _useWillUnmount.default;
229
230
 
230
231
  var _useUpdateEffect = _interopRequireDefault(require("./useUpdateEffect"));
231
232
 
232
- exports.useUpdateEffect = _useUpdateEffect.default;
233
+ exports.useUpdateEffect = _useUpdateEffect.default;
234
+
235
+ var _useIsMounted = _interopRequireDefault(require("./useIsMounted"));
236
+
237
+ exports.useIsMounted = _useIsMounted.default;
@@ -5,19 +5,19 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  exports.__esModule = true;
6
6
  exports.default = scrollTopAnimation;
7
7
 
8
- var _domLib = require("dom-lib");
8
+ var _scrollTop = _interopRequireDefault(require("dom-lib/scrollTop"));
9
9
 
10
- var _requestAnimationFramePolyfill = _interopRequireDefault(require("dom-lib/lib/animation/requestAnimationFramePolyfill"));
10
+ var _requestAnimationFramePolyfill = _interopRequireDefault(require("dom-lib/requestAnimationFramePolyfill"));
11
11
 
12
12
  function scrollTopAnimation(target, nextTop, animation, callback) {
13
13
  if (animation === void 0) {
14
14
  animation = true;
15
15
  }
16
16
 
17
- var top = (0, _domLib.scrollTop)(target);
17
+ var top = (0, _scrollTop.default)(target);
18
18
 
19
19
  var step = function step() {
20
- (0, _domLib.scrollTop)(target, top > nextTop ? nextTop : top);
20
+ (0, _scrollTop.default)(target, top > nextTop ? nextTop : top);
21
21
 
22
22
  if (top <= nextTop) {
23
23
  (0, _requestAnimationFramePolyfill.default)(step);
@@ -30,6 +30,6 @@ function scrollTopAnimation(target, nextTop, animation, callback) {
30
30
  if (animation) {
31
31
  (0, _requestAnimationFramePolyfill.default)(step);
32
32
  } else {
33
- (0, _domLib.scrollTop)(target, nextTop);
33
+ (0, _scrollTop.default)(target, nextTop);
34
34
  }
35
35
  }
@@ -210,7 +210,7 @@ interface TreeSearchProps {
210
210
  searchKeyword: string;
211
211
  data: ItemDataType[];
212
212
  searchBy: (keyword: any, label: any, item: any) => boolean;
213
- callback?: (keyword: string, data: ItemDataType[], event: React.SyntheticEvent<any>) => void;
213
+ callback?: (keyword: string, data: ItemDataType[], event: React.SyntheticEvent) => void;
214
214
  }
215
215
  /**
216
216
  * A hook that handles tree search filter options
@@ -221,7 +221,7 @@ export declare function useTreeSearch(props: TreeSearchProps): {
221
221
  filteredData: ItemDataType[];
222
222
  setFilteredData: (data: ItemDataType[], searchKeyword: string) => void;
223
223
  setSearchKeyword: React.Dispatch<React.SetStateAction<string>>;
224
- handleSearch: (searchKeyword: string, event: React.SyntheticEvent<any>) => void;
224
+ handleSearch: (searchKeyword: string, event: React.SyntheticEvent) => void;
225
225
  };
226
226
  export declare function useGetTreeNodeChildren(treeData: ItemDataType[], valueKey: string, childrenKey: string): {
227
227
  data: ItemDataType[];
@@ -5,4 +5,4 @@
5
5
  * @param eventTarget The target to listen for events on
6
6
  * @param listener An event handler
7
7
  */
8
- export default function useElementResize(eventTarget: EventTarget | (() => EventTarget), listener: EventListenerOrEventListenerObject): void;
8
+ export default function useElementResize(eventTarget: Element | (() => Element), listener: ResizeObserverCallback): void;
@@ -1,13 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  exports.__esModule = true;
6
4
  exports.default = useElementResize;
7
5
 
8
6
  var _react = require("react");
9
7
 
10
- var _elementResizeEvent = _interopRequireWildcard(require("element-resize-event"));
8
+ var _resizeObserver = require("@juggle/resize-observer");
11
9
 
12
10
  /**
13
11
  * Attach the event handler directly to the specified DOM element,
@@ -17,11 +15,18 @@ var _elementResizeEvent = _interopRequireWildcard(require("element-resize-event"
17
15
  * @param listener An event handler
18
16
  */
19
17
  function useElementResize(eventTarget, listener) {
18
+ var resizeObserver = (0, _react.useRef)();
20
19
  (0, _react.useEffect)(function () {
21
- var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;
22
- (0, _elementResizeEvent.default)(target, listener);
20
+ if (!resizeObserver.current) {
21
+ var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;
22
+ resizeObserver.current = new _resizeObserver.ResizeObserver(listener);
23
+ resizeObserver.current.observe(target);
24
+ }
25
+
23
26
  return function () {
24
- return (0, _elementResizeEvent.unbind)(target);
27
+ var _resizeObserver$curre;
28
+
29
+ (_resizeObserver$curre = resizeObserver.current) === null || _resizeObserver$curre === void 0 ? void 0 : _resizeObserver$curre.disconnect();
25
30
  };
26
31
  }, [eventTarget, listener]);
27
32
  }
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  exports.__esModule = true;
4
6
  exports.default = useEventListener;
5
7
 
6
8
  var _react = require("react");
7
9
 
8
- var _domLib = require("dom-lib");
10
+ var _on = _interopRequireDefault(require("dom-lib/on"));
9
11
 
10
12
  /**
11
13
  * Attach the event handler directly to the specified DOM element.
@@ -22,7 +24,7 @@ function useEventListener(eventTarget, event, listener, capture) {
22
24
 
23
25
  (0, _react.useEffect)(function () {
24
26
  var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;
25
- var controller = target ? (0, _domLib.on)(target, event, listener, capture) : null;
27
+ var controller = target ? (0, _on.default)(target, event, listener, capture) : null;
26
28
  return function () {
27
29
  controller === null || controller === void 0 ? void 0 : controller.off();
28
30
  };
@@ -0,0 +1,2 @@
1
+ declare function useIsMounted(): () => boolean;
2
+ export default useIsMounted;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ var _react = require("react");
7
+
8
+ function useIsMounted() {
9
+ var isMounted = (0, _react.useRef)(false);
10
+ (0, _react.useEffect)(function () {
11
+ isMounted.current = true;
12
+ return function () {
13
+ isMounted.current = false;
14
+ };
15
+ }, []);
16
+ return (0, _react.useCallback)(function () {
17
+ return isMounted.current;
18
+ }, []);
19
+ }
20
+
21
+ var _default = useIsMounted;
22
+ exports.default = _default;
@@ -9,7 +9,7 @@ var _react = require("react");
9
9
 
10
10
  var _reactDom = require("react-dom");
11
11
 
12
- var _DOMHelper = _interopRequireDefault(require("../DOMHelper"));
12
+ var _canUseDOM = _interopRequireDefault(require("dom-lib/canUseDOM"));
13
13
 
14
14
  function usePortal(props) {
15
15
  if (props === void 0) {
@@ -19,7 +19,7 @@ function usePortal(props) {
19
19
  var _props = props,
20
20
  id = _props.id,
21
21
  container = _props.container;
22
- var rootElemRef = (0, _react.useRef)(_DOMHelper.default.canUseDOM ? document.body : null);
22
+ var rootElemRef = (0, _react.useRef)(_canUseDOM.default ? document.body : null);
23
23
  (0, _react.useEffect)(function () {
24
24
  var containerElement = typeof container === 'function' ? container() : container; // Look for existing target dom element to append to
25
25