rsuite 5.53.2 → 5.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/AutoComplete/styles/index.css +0 -2
  2. package/CHANGELOG.md +36 -0
  3. package/Cascader/styles/index.css +0 -2
  4. package/CheckPicker/styles/index.css +0 -2
  5. package/CheckTree/styles/index.css +0 -2
  6. package/CheckTreePicker/styles/index.css +0 -2
  7. package/DatePicker/styles/index.css +0 -2
  8. package/DateRangePicker/styles/index.css +0 -2
  9. package/FormGroup/styles/index.css +3 -0
  10. package/FormGroup/styles/index.less +2 -0
  11. package/InlineEdit/package.json +7 -0
  12. package/InlineEdit/styles/index.css +112 -0
  13. package/InlineEdit/styles/index.less +48 -0
  14. package/InputGroup/styles/index.css +0 -2
  15. package/InputGroup/styles/index.less +0 -2
  16. package/InputNumber/styles/index.css +0 -2
  17. package/InputPicker/styles/index.css +0 -2
  18. package/MultiCascader/styles/index.css +0 -2
  19. package/Pagination/styles/index.css +3 -2
  20. package/Pagination/styles/pagination-group.less +4 -0
  21. package/SelectPicker/styles/index.css +0 -2
  22. package/TagInput/styles/index.css +1 -4
  23. package/TagPicker/styles/index.css +1 -4
  24. package/TagPicker/styles/index.less +1 -2
  25. package/cjs/Calendar/CalendarContainer.d.ts +4 -0
  26. package/cjs/Calendar/CalendarContainer.js +3 -1
  27. package/cjs/Calendar/TableCell.js +3 -2
  28. package/cjs/Calendar/types.d.ts +1 -0
  29. package/cjs/Cascader/DropdownMenu.js +3 -1
  30. package/cjs/Cascader/TreeView.js +3 -1
  31. package/cjs/DOMHelper/index.d.ts +23 -32
  32. package/cjs/DatePicker/DatePicker.d.ts +6 -0
  33. package/cjs/DatePicker/DatePicker.js +4 -3
  34. package/cjs/DateRangePicker/DateRangePicker.js +8 -2
  35. package/cjs/InlineEdit/EditableControls.d.ts +8 -0
  36. package/cjs/InlineEdit/EditableControls.js +34 -0
  37. package/cjs/InlineEdit/InlineEdit.d.ts +56 -0
  38. package/cjs/InlineEdit/InlineEdit.js +98 -0
  39. package/cjs/InlineEdit/index.d.ts +3 -0
  40. package/cjs/InlineEdit/index.js +9 -0
  41. package/cjs/InlineEdit/renderChildren.d.ts +12 -0
  42. package/cjs/InlineEdit/renderChildren.js +40 -0
  43. package/cjs/InlineEdit/useEditState.d.ts +22 -0
  44. package/cjs/InlineEdit/useEditState.js +82 -0
  45. package/cjs/InlineEdit/useFocusEvent.d.ts +14 -0
  46. package/cjs/InlineEdit/useFocusEvent.js +61 -0
  47. package/cjs/Input/Input.js +6 -3
  48. package/cjs/InputNumber/InputNumber.d.ts +36 -11
  49. package/cjs/InputNumber/InputNumber.js +47 -28
  50. package/cjs/InputPicker/InputPicker.js +6 -5
  51. package/cjs/Pagination/LimitPicker.d.ts +15 -0
  52. package/cjs/Pagination/LimitPicker.js +51 -0
  53. package/cjs/Pagination/Pagination.js +7 -8
  54. package/cjs/Pagination/PaginationButton.js +3 -18
  55. package/cjs/Pagination/PaginationGroup.d.ts +35 -7
  56. package/cjs/Pagination/PaginationGroup.js +77 -98
  57. package/cjs/RangeSlider/RangeSlider.js +14 -11
  58. package/cjs/Slider/Handle.js +19 -62
  59. package/cjs/Slider/ProgressBar.js +2 -1
  60. package/cjs/Slider/Slider.d.ts +2 -0
  61. package/cjs/Slider/Slider.js +18 -12
  62. package/cjs/Slider/useDrag.d.ts +16 -0
  63. package/cjs/Slider/useDrag.js +88 -0
  64. package/cjs/Slider/utils.d.ts +6 -2
  65. package/cjs/Slider/utils.js +15 -1
  66. package/cjs/index.d.ts +2 -0
  67. package/cjs/index.js +3 -1
  68. package/cjs/internals/Overlay/positionUtils.d.ts +1 -6
  69. package/cjs/internals/Picker/Listbox.d.ts +5 -1
  70. package/cjs/internals/Picker/Listbox.js +6 -5
  71. package/cjs/internals/Picker/hooks/usePickerRef.js +2 -0
  72. package/cjs/internals/Picker/types.d.ts +2 -0
  73. package/cjs/internals/symbols.d.ts +2 -0
  74. package/cjs/internals/symbols.js +9 -0
  75. package/cjs/locales/cs_CZ.d.ts +120 -0
  76. package/cjs/locales/cs_CZ.js +88 -0
  77. package/cjs/locales/index.d.ts +1 -0
  78. package/cjs/locales/index.js +4 -2
  79. package/cjs/utils/getDataGroupBy.d.ts +0 -1
  80. package/cjs/utils/getDataGroupBy.js +3 -5
  81. package/dist/rsuite-no-reset-rtl.css +94 -4
  82. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  83. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  84. package/dist/rsuite-no-reset.css +94 -4
  85. package/dist/rsuite-no-reset.min.css +1 -1
  86. package/dist/rsuite-no-reset.min.css.map +1 -1
  87. package/dist/rsuite-rtl.css +94 -4
  88. package/dist/rsuite-rtl.min.css +1 -1
  89. package/dist/rsuite-rtl.min.css.map +1 -1
  90. package/dist/rsuite.css +94 -4
  91. package/dist/rsuite.js +171 -61
  92. package/dist/rsuite.js.map +1 -1
  93. package/dist/rsuite.min.css +1 -1
  94. package/dist/rsuite.min.css.map +1 -1
  95. package/dist/rsuite.min.js +1 -1
  96. package/dist/rsuite.min.js.map +1 -1
  97. package/esm/Calendar/CalendarContainer.d.ts +4 -0
  98. package/esm/Calendar/CalendarContainer.js +3 -1
  99. package/esm/Calendar/TableCell.js +5 -4
  100. package/esm/Calendar/types.d.ts +1 -0
  101. package/esm/Cascader/DropdownMenu.js +3 -1
  102. package/esm/Cascader/TreeView.js +3 -1
  103. package/esm/DOMHelper/index.d.ts +23 -32
  104. package/esm/DatePicker/DatePicker.d.ts +6 -0
  105. package/esm/DatePicker/DatePicker.js +4 -3
  106. package/esm/DateRangePicker/DateRangePicker.js +8 -2
  107. package/esm/InlineEdit/EditableControls.d.ts +8 -0
  108. package/esm/InlineEdit/EditableControls.js +28 -0
  109. package/esm/InlineEdit/InlineEdit.d.ts +56 -0
  110. package/esm/InlineEdit/InlineEdit.js +92 -0
  111. package/esm/InlineEdit/index.d.ts +3 -0
  112. package/esm/InlineEdit/index.js +3 -0
  113. package/esm/InlineEdit/renderChildren.d.ts +12 -0
  114. package/esm/InlineEdit/renderChildren.js +34 -0
  115. package/esm/InlineEdit/useEditState.d.ts +22 -0
  116. package/esm/InlineEdit/useEditState.js +76 -0
  117. package/esm/InlineEdit/useFocusEvent.d.ts +14 -0
  118. package/esm/InlineEdit/useFocusEvent.js +56 -0
  119. package/esm/Input/Input.js +6 -3
  120. package/esm/InputNumber/InputNumber.d.ts +36 -11
  121. package/esm/InputNumber/InputNumber.js +49 -30
  122. package/esm/InputPicker/InputPicker.js +6 -5
  123. package/esm/Pagination/LimitPicker.d.ts +15 -0
  124. package/esm/Pagination/LimitPicker.js +44 -0
  125. package/esm/Pagination/Pagination.js +7 -7
  126. package/esm/Pagination/PaginationButton.js +4 -18
  127. package/esm/Pagination/PaginationGroup.d.ts +35 -7
  128. package/esm/Pagination/PaginationGroup.js +79 -98
  129. package/esm/RangeSlider/RangeSlider.js +15 -12
  130. package/esm/Slider/Handle.js +19 -61
  131. package/esm/Slider/ProgressBar.js +2 -1
  132. package/esm/Slider/Slider.d.ts +2 -0
  133. package/esm/Slider/Slider.js +20 -14
  134. package/esm/Slider/useDrag.d.ts +16 -0
  135. package/esm/Slider/useDrag.js +82 -0
  136. package/esm/Slider/utils.d.ts +6 -2
  137. package/esm/Slider/utils.js +15 -3
  138. package/esm/index.d.ts +2 -0
  139. package/esm/index.js +1 -0
  140. package/esm/internals/Overlay/positionUtils.d.ts +1 -6
  141. package/esm/internals/Picker/Listbox.d.ts +5 -1
  142. package/esm/internals/Picker/Listbox.js +7 -6
  143. package/esm/internals/Picker/hooks/usePickerRef.js +2 -0
  144. package/esm/internals/Picker/types.d.ts +2 -0
  145. package/esm/internals/symbols.d.ts +2 -0
  146. package/esm/internals/symbols.js +3 -0
  147. package/esm/locales/cs_CZ.d.ts +120 -0
  148. package/esm/locales/cs_CZ.js +82 -0
  149. package/esm/locales/index.d.ts +1 -0
  150. package/esm/locales/index.js +2 -1
  151. package/esm/utils/getDataGroupBy.d.ts +0 -1
  152. package/esm/utils/getDataGroupBy.js +2 -3
  153. package/locales/cs_CZ/package.json +7 -0
  154. package/package.json +2 -2
  155. package/styles/color-modes/dark.less +3 -0
  156. package/styles/color-modes/high-contrast.less +3 -0
  157. package/styles/color-modes/light.less +3 -0
  158. package/styles/index.less +1 -0
@@ -1,73 +1,52 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- import React, { useCallback } from 'react';
4
+ import React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import classNames from 'classnames';
7
7
  import Pagination from './Pagination';
8
- import SelectPicker from '../SelectPicker';
9
8
  import Divider from '../Divider';
10
9
  import Input from '../Input';
11
- import { tplTransform, useClassNames, useCustom, useControlled } from '../utils';
12
- var LimitPicker = function LimitPicker(props) {
13
- var disabled = props.disabled,
14
- limitOptions = props.limitOptions,
15
- locale = props.locale,
16
- limit = props.limit,
17
- onChangeLimit = props.onChangeLimit,
18
- size = props.size,
19
- prefix = props.prefix;
20
- var disabledPicker = typeof disabled === 'function' ? disabled('picker') : Boolean(disabled);
21
- var formatlimitOptions = limitOptions.map(function (item) {
22
- return {
23
- value: item,
24
- label: locale.limit && tplTransform(locale.limit, item)
25
- };
26
- });
27
- return /*#__PURE__*/React.createElement("div", {
28
- className: prefix('limit')
29
- }, /*#__PURE__*/React.createElement(SelectPicker, {
30
- size: size,
31
- cleanable: false,
32
- searchable: false,
33
- placement: "topStart",
34
- data: formatlimitOptions,
35
- value: limit,
36
- onChange: onChangeLimit // fixme don't use any
37
- ,
38
- menuStyle: {
39
- minWidth: 'auto'
40
- },
41
- disabled: disabledPicker
42
- }));
43
- };
10
+ import { tplTransform, useClassNames, useCustom, useControlled, useEventCallback } from '../utils';
11
+ import LimitPicker from './LimitPicker';
12
+
13
+ /**
14
+ * The layout of the paging component.
15
+ */
16
+
44
17
  var defaultLayout = ['pager'];
45
18
  var defaultLimitOptions = [30, 50, 100];
19
+
20
+ /**
21
+ * Pagination component for displaying page numbers.
22
+ *
23
+ * @see https://rsuitejs.com/components/pagination
24
+ */
46
25
  var PaginationGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {
47
26
  var _props$as = props.as,
48
27
  Component = _props$as === void 0 ? 'div' : _props$as,
28
+ activePageProp = props.activePage,
49
29
  _props$classPrefix = props.classPrefix,
50
30
  classPrefix = _props$classPrefix === void 0 ? 'pagination-group' : _props$classPrefix,
31
+ className = props.className,
32
+ disabled = props.disabled,
51
33
  size = props.size,
34
+ style = props.style,
52
35
  total = props.total,
53
36
  prev = props.prev,
54
37
  next = props.next,
55
38
  first = props.first,
56
39
  last = props.last,
57
- maxButtons = props.maxButtons,
58
- className = props.className,
59
40
  _props$limitOptions = props.limitOptions,
60
41
  limitOptions = _props$limitOptions === void 0 ? defaultLimitOptions : _props$limitOptions,
61
42
  limitProp = props.limit,
62
- activePageProp = props.activePage,
63
- disabled = props.disabled,
64
- style = props.style,
65
43
  localeProp = props.locale,
66
44
  _props$layout = props.layout,
67
45
  layout = _props$layout === void 0 ? defaultLayout : _props$layout,
46
+ maxButtons = props.maxButtons,
68
47
  onChangePage = props.onChangePage,
69
48
  onChangeLimit = props.onChangeLimit,
70
- rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "size", "total", "prev", "next", "first", "last", "maxButtons", "className", "limitOptions", "limit", "activePage", "disabled", "style", "locale", "layout", "onChangePage", "onChangeLimit"]);
49
+ rest = _objectWithoutPropertiesLoose(props, ["as", "activePage", "classPrefix", "className", "disabled", "size", "style", "total", "prev", "next", "first", "last", "limitOptions", "limit", "locale", "layout", "maxButtons", "onChangePage", "onChangeLimit"]);
71
50
  var _useClassNames = useClassNames(classPrefix),
72
51
  merge = _useClassNames.merge,
73
52
  prefix = _useClassNames.prefix,
@@ -82,80 +61,82 @@ var PaginationGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {
82
61
  locale = _useCustom.locale;
83
62
  var pages = Math.floor(total / limit) + (total % limit ? 1 : 0);
84
63
  var classes = merge(className, withClassPrefix(size));
85
- var handleInputBlur = useCallback(function (event) {
64
+ var handleInputBlur = useEventCallback(function (event) {
86
65
  var value = parseInt(event.target.value);
87
66
  if (value > 0 && value <= pages) {
88
67
  onChangePage === null || onChangePage === void 0 ? void 0 : onChangePage(value);
89
68
  setActivePage(value);
90
69
  }
91
70
  event.target.value = '';
92
- }, [onChangePage, pages, setActivePage]);
93
- var handleInputPressEnter = useCallback(function (event) {
71
+ });
72
+ var handleInputPressEnter = useEventCallback(function (event) {
94
73
  var _event$target;
95
74
  (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.blur();
96
- }, []);
97
- var handleChangeLimit = useCallback(function (value) {
75
+ });
76
+ var handleChangeLimit = useEventCallback(function (value) {
98
77
  setLimit(value);
99
78
  onChangeLimit === null || onChangeLimit === void 0 ? void 0 : onChangeLimit(value);
100
- }, [onChangeLimit, setLimit]);
79
+ });
101
80
  return /*#__PURE__*/React.createElement(Component, {
102
81
  ref: ref,
103
82
  className: classes,
104
83
  style: style
105
84
  }, layout.map(function (key, index) {
106
85
  var onlyKey = "" + key + index;
107
- if (key === '-') {
108
- return /*#__PURE__*/React.createElement("div", {
109
- className: prefix('grow'),
110
- key: onlyKey
111
- });
112
- } else if (key === '|') {
113
- return /*#__PURE__*/React.createElement(Divider, {
114
- vertical: true,
115
- key: onlyKey
116
- });
117
- } else if (key === 'pager') {
118
- return /*#__PURE__*/React.createElement(Pagination, _extends({
119
- key: onlyKey,
120
- size: size,
121
- prev: prev,
122
- next: next,
123
- first: first,
124
- last: last,
125
- maxButtons: maxButtons,
126
- pages: pages,
127
- disabled: disabled,
128
- onSelect: onChangePage // fixme don't use any
129
- ,
130
- activePage: activePage
131
- }, rest));
132
- } else if (key === 'total') {
133
- return /*#__PURE__*/React.createElement("div", {
134
- key: onlyKey,
135
- className: prefix('total')
136
- }, locale.total && tplTransform(locale.total, total));
137
- } else if (key === 'skip') {
138
- return /*#__PURE__*/React.createElement("div", {
139
- key: onlyKey,
140
- className: classNames(prefix('skip'))
141
- }, locale.skip && tplTransform(locale.skip, /*#__PURE__*/React.createElement(Input, {
142
- size: size,
143
- onBlur: handleInputBlur,
144
- onPressEnter: handleInputPressEnter
145
- })));
146
- } else if (key === 'limit') {
147
- return /*#__PURE__*/React.createElement(LimitPicker, {
148
- key: onlyKey,
149
- size: size,
150
- locale: locale,
151
- limit: limit,
152
- onChangeLimit: handleChangeLimit,
153
- limitOptions: limitOptions,
154
- disabled: disabled,
155
- prefix: prefix
156
- });
86
+ switch (key) {
87
+ case '-':
88
+ return /*#__PURE__*/React.createElement("div", {
89
+ className: prefix('grow'),
90
+ key: onlyKey
91
+ });
92
+ case '|':
93
+ return /*#__PURE__*/React.createElement(Divider, {
94
+ vertical: true,
95
+ key: onlyKey
96
+ });
97
+ case 'pager':
98
+ return /*#__PURE__*/React.createElement(Pagination, _extends({
99
+ key: onlyKey,
100
+ size: size,
101
+ prev: prev,
102
+ next: next,
103
+ first: first,
104
+ last: last,
105
+ maxButtons: maxButtons,
106
+ pages: pages,
107
+ disabled: disabled,
108
+ onSelect: onChangePage // fixme don't use any
109
+ ,
110
+ activePage: activePage
111
+ }, rest));
112
+ case 'total':
113
+ return /*#__PURE__*/React.createElement("div", {
114
+ key: onlyKey,
115
+ className: prefix('total')
116
+ }, locale.total && tplTransform(locale.total, total));
117
+ case 'skip':
118
+ return /*#__PURE__*/React.createElement("div", {
119
+ key: onlyKey,
120
+ className: classNames(prefix('skip'))
121
+ }, locale.skip && tplTransform(locale.skip, /*#__PURE__*/React.createElement(Input, {
122
+ size: size,
123
+ onBlur: handleInputBlur,
124
+ onPressEnter: handleInputPressEnter
125
+ })));
126
+ case 'limit':
127
+ return /*#__PURE__*/React.createElement(LimitPicker, {
128
+ key: onlyKey,
129
+ size: size,
130
+ locale: locale,
131
+ limit: limit,
132
+ onChangeLimit: handleChangeLimit,
133
+ limitOptions: limitOptions,
134
+ disabled: disabled,
135
+ prefix: prefix
136
+ });
137
+ default:
138
+ return key;
157
139
  }
158
- return key;
159
140
  }));
160
141
  });
161
142
  PaginationGroup.displayName = 'PaginationGroup';
@@ -11,7 +11,7 @@ import { sliderPropTypes } from '../Slider/Slider';
11
11
  import ProgressBar from '../Slider/ProgressBar';
12
12
  import Handle from '../Slider/Handle';
13
13
  import Graduated from '../Slider/Graduated';
14
- import { precisionMath, checkValue } from '../Slider/utils';
14
+ import { precisionMath, checkValue, getPosition } from '../Slider/utils';
15
15
  import { tupleType } from '../internals/propTypes';
16
16
  var defaultDefaultValue = [0, 0];
17
17
 
@@ -27,17 +27,17 @@ var RangeSlider = /*#__PURE__*/React.forwardRef(function (props, ref) {
27
27
  Component = _props$as === void 0 ? 'div' : _props$as,
28
28
  barClassName = props.barClassName,
29
29
  className = props.className,
30
+ _props$classPrefix = props.classPrefix,
31
+ classPrefix = _props$classPrefix === void 0 ? 'slider' : _props$classPrefix,
30
32
  constraint = props.constraint,
31
33
  _props$defaultValue = props.defaultValue,
32
34
  defaultValue = _props$defaultValue === void 0 ? defaultDefaultValue : _props$defaultValue,
35
+ disabled = props.disabled,
33
36
  graduated = props.graduated,
34
37
  _props$progress = props.progress,
35
38
  progress = _props$progress === void 0 ? true : _props$progress,
36
39
  vertical = props.vertical,
37
- disabled = props.disabled,
38
40
  readOnly = props.readOnly,
39
- _props$classPrefix = props.classPrefix,
40
- classPrefix = _props$classPrefix === void 0 ? 'slider' : _props$classPrefix,
41
41
  _props$min = props.min,
42
42
  min = _props$min === void 0 ? 0 : _props$min,
43
43
  _props$max = props.max,
@@ -55,7 +55,7 @@ var RangeSlider = /*#__PURE__*/React.forwardRef(function (props, ref) {
55
55
  renderMark = props.renderMark,
56
56
  onChange = props.onChange,
57
57
  onChangeCommitted = props.onChangeCommitted,
58
- rest = _objectWithoutPropertiesLoose(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "barClassName", "className", "constraint", "defaultValue", "graduated", "progress", "vertical", "disabled", "readOnly", "classPrefix", "min", "max", "step", "value", "handleClassName", "handleStyle", "handleTitle", "tooltip", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
58
+ rest = _objectWithoutPropertiesLoose(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "barClassName", "className", "classPrefix", "constraint", "defaultValue", "disabled", "graduated", "progress", "vertical", "readOnly", "min", "max", "step", "value", "handleClassName", "handleStyle", "handleTitle", "tooltip", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
59
59
  var barRef = useRef(null);
60
60
 
61
61
  // Define the parameter position of the handle
@@ -116,7 +116,10 @@ var RangeSlider = /*#__PURE__*/React.forwardRef(function (props, ref) {
116
116
  }, [count, getBarHeight, getBarWidth, step, vertical]);
117
117
  var getValueByPosition = useCallback(function (event) {
118
118
  var barOffset = getOffset(barRef.current);
119
- var offset = vertical ? barOffset.top + barOffset.height - event.pageY : event.pageX - barOffset.left;
119
+ var _getPosition = getPosition(event),
120
+ pageX = _getPosition.pageX,
121
+ pageY = _getPosition.pageY;
122
+ var offset = vertical ? barOffset.top + barOffset.height - pageY : pageX - barOffset.left;
120
123
  var val = rtl && !vertical ? barOffset.width - offset : offset;
121
124
  return getValueByOffset(val) + min;
122
125
  }, [getValueByOffset, min, rtl, vertical]);
@@ -181,7 +184,7 @@ var RangeSlider = /*#__PURE__*/React.forwardRef(function (props, ref) {
181
184
  /**
182
185
  * Callback function that is fired when the mouseup is triggered
183
186
  */
184
- var handleChangeCommitted = useCallback(function (event, dataset) {
187
+ var handleChangeCommitted = useEventCallback(function (event, dataset) {
185
188
  if (disabled || readOnly) {
186
189
  return;
187
190
  }
@@ -190,8 +193,8 @@ var RangeSlider = /*#__PURE__*/React.forwardRef(function (props, ref) {
190
193
  setValue(nextValue);
191
194
  onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);
192
195
  }
193
- }, [disabled, readOnly, getNextValue, isRangeMatchingConstraint, setValue, onChangeCommitted]);
194
- var handleKeyDown = useCallback(function (event) {
196
+ });
197
+ var handleKeyDown = useEventCallback(function (event) {
195
198
  var _event$target;
196
199
  var _event$target$dataset = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target['dataset'],
197
200
  key = _event$target$dataset.key;
@@ -230,8 +233,8 @@ var RangeSlider = /*#__PURE__*/React.forwardRef(function (props, ref) {
230
233
  setValue(nextValue);
231
234
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
232
235
  }
233
- }, [max, min, onChange, rtl, isRangeMatchingConstraint, setValue, step, value]);
234
- var handleBarClick = useCallback(function (event) {
236
+ });
237
+ var handleBarClick = useEventCallback(function (event) {
235
238
  if (disabled || readOnly) {
236
239
  return;
237
240
  }
@@ -253,7 +256,7 @@ var RangeSlider = /*#__PURE__*/React.forwardRef(function (props, ref) {
253
256
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
254
257
  onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);
255
258
  }
256
- }, [disabled, readOnly, getValidValue, getValueByPosition, isRangeMatchingConstraint, onChange, onChangeCommitted, setValue, value]);
259
+ });
257
260
  var handleProps = useMemo(function () {
258
261
  return [{
259
262
  value: value[0],
@@ -1,14 +1,12 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- import React, { useState, useRef, useEffect, useCallback } from 'react';
4
+ import React from 'react';
5
5
  import PropTypes from 'prop-types';
6
- import DOMMouseMoveTracker from 'dom-lib/DOMMouseMoveTracker';
7
- import addStyle from 'dom-lib/addStyle';
8
- import getWidth from 'dom-lib/getWidth';
9
6
  import Tooltip from '../Tooltip';
10
7
  import { useClassNames, mergeRefs } from '../utils';
11
8
  import Input from './Input';
9
+ import useDrag from './useDrag';
12
10
  var Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {
13
11
  var _extends2;
14
12
  var _props$as = props.as,
@@ -34,80 +32,40 @@ var Handle = /*#__PURE__*/React.forwardRef(function (props, ref) {
34
32
  dataRange = props['data-range'],
35
33
  dateKey = props['data-key'],
36
34
  rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "className", "disabled", "style", "children", "position", "vertical", "tooltip", "rtl", "value", "role", "tabIndex", "renderTooltip", "onDragStart", "onDragMove", "onDragEnd", "onKeyDown", "data-range", "data-key"]);
37
- var _useState = useState(false),
38
- active = _useState[0],
39
- setActive = _useState[1];
40
- var rootRef = useRef(null);
41
35
  var horizontalKey = rtl ? 'right' : 'left';
42
36
  var direction = vertical ? 'bottom' : horizontalKey;
43
37
  var styles = _extends({}, style, (_extends2 = {}, _extends2[direction] = position + "%", _extends2));
44
38
  var _useClassNames = useClassNames(classPrefix),
45
39
  merge = _useClassNames.merge,
46
40
  prefix = _useClassNames.prefix;
41
+ var _useDrag = useDrag({
42
+ tooltip: tooltip,
43
+ disabled: disabled,
44
+ onDragStart: onDragStart,
45
+ onDragMove: onDragMove,
46
+ onDragEnd: onDragEnd
47
+ }),
48
+ active = _useDrag.active,
49
+ onMoveStart = _useDrag.onMoveStart,
50
+ onMouseEnter = _useDrag.onMouseEnter,
51
+ rootRef = _useDrag.rootRef,
52
+ tooltipRef = _useDrag.tooltipRef;
47
53
  var handleClasses = merge(className, prefix('handle'), {
48
54
  active: active
49
55
  });
50
- var tooltipRef = useRef(null);
51
- var mouseMoveTracker = useRef();
52
- var releaseMouseMoves = useCallback(function () {
53
- var _mouseMoveTracker$cur;
54
- (_mouseMoveTracker$cur = mouseMoveTracker.current) === null || _mouseMoveTracker$cur === void 0 ? void 0 : _mouseMoveTracker$cur.releaseMouseMoves();
55
- mouseMoveTracker.current = null;
56
- }, []);
57
- var setTooltipPosition = useCallback(function () {
58
- var tooltipElement = tooltipRef.current;
59
- if (tooltip && tooltipElement) {
60
- var width = getWidth(tooltipElement);
61
- addStyle(tooltipElement, 'left', "-" + width / 2 + "px");
62
- }
63
- }, [tooltip]);
64
- var handleDragMove = useCallback(function (_deltaX, _deltaY, event) {
65
- var _mouseMoveTracker$cur2;
66
- if ((_mouseMoveTracker$cur2 = mouseMoveTracker.current) !== null && _mouseMoveTracker$cur2 !== void 0 && _mouseMoveTracker$cur2.isDragging()) {
67
- var _rootRef$current;
68
- onDragMove === null || onDragMove === void 0 ? void 0 : onDragMove(event, (_rootRef$current = rootRef.current) === null || _rootRef$current === void 0 ? void 0 : _rootRef$current.dataset);
69
- setTooltipPosition();
70
- }
71
- }, [onDragMove, setTooltipPosition]);
72
- var handleDragEnd = useCallback(function (event) {
73
- var _rootRef$current2;
74
- setActive(false);
75
- releaseMouseMoves();
76
- onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, (_rootRef$current2 = rootRef.current) === null || _rootRef$current2 === void 0 ? void 0 : _rootRef$current2.dataset);
77
- }, [onDragEnd, releaseMouseMoves]);
78
- var getMouseMoveTracker = useCallback(function () {
79
- return mouseMoveTracker.current || new DOMMouseMoveTracker(handleDragMove, handleDragEnd, document.body);
80
- }, [handleDragEnd, handleDragMove]);
81
- var handleMouseDown = useCallback(function (event) {
82
- var _mouseMoveTracker$cur3, _rootRef$current3;
83
- if (disabled) {
84
- return;
85
- }
86
- mouseMoveTracker.current = getMouseMoveTracker();
87
- (_mouseMoveTracker$cur3 = mouseMoveTracker.current) === null || _mouseMoveTracker$cur3 === void 0 ? void 0 : _mouseMoveTracker$cur3.captureMouseMoves(event);
88
- (_rootRef$current3 = rootRef.current) === null || _rootRef$current3 === void 0 ? void 0 : _rootRef$current3.focus();
89
- setActive(true);
90
- onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event);
91
- }, [disabled, getMouseMoveTracker, onDragStart]);
92
- var handleMouseEnter = useCallback(function () {
93
- setTooltipPosition();
94
- }, [setTooltipPosition]);
95
- useEffect(function () {
96
- return function () {
97
- releaseMouseMoves();
98
- };
99
- }, [releaseMouseMoves]);
100
56
  return /*#__PURE__*/React.createElement(Component, {
101
57
  role: role,
102
58
  tabIndex: tabIndex,
103
59
  ref: mergeRefs(ref, rootRef),
104
60
  className: handleClasses,
105
- onMouseDown: handleMouseDown,
106
- onMouseEnter: handleMouseEnter,
61
+ onMouseDown: onMoveStart,
62
+ onMouseEnter: onMouseEnter,
63
+ onTouchStart: onMoveStart,
107
64
  onKeyDown: onKeyDown,
108
65
  style: styles,
109
66
  "data-range": dataRange,
110
- "data-key": dateKey
67
+ "data-key": dateKey,
68
+ "data-testid": "slider-handle"
111
69
  }, tooltip && /*#__PURE__*/React.createElement(Tooltip, {
112
70
  "aria-hidden": "true",
113
71
  ref: tooltipRef,
@@ -28,7 +28,8 @@ var ProgressBar = /*#__PURE__*/React.forwardRef(function (props, ref) {
28
28
  return /*#__PURE__*/React.createElement(Component, {
29
29
  ref: ref,
30
30
  style: styles,
31
- className: classes
31
+ className: classes,
32
+ "data-testid": "slider-progress-bar"
32
33
  });
33
34
  });
34
35
  ProgressBar.displayName = 'ProgressBar';
@@ -40,6 +40,8 @@ export interface SliderProps<T = number> extends WithAsProps, FormControlBasePro
40
40
  tooltip?: boolean;
41
41
  /** Show sliding progress bar */
42
42
  progress?: boolean;
43
+ /** Placeholder text */
44
+ placeholder?: React.ReactNode;
43
45
  /** Vertical Slide */
44
46
  vertical?: boolean;
45
47
  /** Customize labels on the render ruler */
@@ -9,8 +9,8 @@ import getOffset from 'dom-lib/getOffset';
9
9
  import ProgressBar from './ProgressBar';
10
10
  import Handle from './Handle';
11
11
  import Graduated from './Graduated';
12
- import { useClassNames, useControlled, useCustom } from '../utils';
13
- import { precisionMath, checkValue } from './utils';
12
+ import { useClassNames, useControlled, useCustom, useEventCallback } from '../utils';
13
+ import { precisionMath, checkValue, getPosition } from './utils';
14
14
  import Plaintext from '../internals/Plaintext';
15
15
  export var sliderPropTypes = {
16
16
  min: PropTypes.number,
@@ -73,12 +73,13 @@ var Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {
73
73
  valueProp = props.value,
74
74
  _props$max = props.max,
75
75
  maxProp = _props$max === void 0 ? 100 : _props$max,
76
+ placeholder = props.placeholder,
76
77
  getAriaValueText = props.getAriaValueText,
77
78
  renderTooltip = props.renderTooltip,
78
79
  renderMark = props.renderMark,
79
80
  onChange = props.onChange,
80
81
  onChangeCommitted = props.onChangeCommitted,
81
- rest = _objectWithoutPropertiesLoose(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "graduated", "className", "barClassName", "progress", "vertical", "disabled", "readOnly", "plaintext", "classPrefix", "min", "handleClassName", "handleStyle", "handleTitle", "tooltip", "step", "defaultValue", "value", "max", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
82
+ rest = _objectWithoutPropertiesLoose(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "graduated", "className", "barClassName", "progress", "vertical", "disabled", "readOnly", "plaintext", "classPrefix", "min", "handleClassName", "handleStyle", "handleTitle", "tooltip", "step", "defaultValue", "value", "max", "placeholder", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
82
83
  var barRef = useRef(null);
83
84
  var _useClassNames = useClassNames(classPrefix),
84
85
  merge = _useClassNames.merge,
@@ -138,7 +139,10 @@ var Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {
138
139
  */
139
140
  var getValueByPosition = useCallback(function (event) {
140
141
  var barOffset = getOffset(barRef.current);
141
- var offset = vertical ? barOffset.top + barOffset.height - event.pageY : event.pageX - barOffset.left;
142
+ var _getPosition = getPosition(event),
143
+ pageX = _getPosition.pageX,
144
+ pageY = _getPosition.pageY;
145
+ var offset = vertical ? barOffset.top + barOffset.height - pageY : pageX - barOffset.left;
142
146
  var offsetValue = rtl && !vertical ? barOffset.width - offset : offset;
143
147
  return getValueByOffset(offsetValue) + min;
144
148
  }, [getValueByOffset, min, rtl, vertical]);
@@ -146,30 +150,30 @@ var Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {
146
150
  /**
147
151
  * Callback function that is fired when the mousemove is triggered
148
152
  */
149
- var handleChangeValue = useCallback(function (event) {
153
+ var handleChangeValue = useEventCallback(function (event) {
150
154
  if (disabled || readOnly) {
151
155
  return;
152
156
  }
153
157
  var nextValue = getValidValue(getValueByPosition(event));
154
158
  setValue(nextValue);
155
159
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
156
- }, [disabled, getValidValue, getValueByPosition, onChange, readOnly, setValue]);
160
+ });
157
161
 
158
162
  /**
159
163
  * Callback function that is fired when the mouseup is triggered
160
164
  */
161
- var handleChangeCommitted = useCallback(function (event) {
165
+ var handleChangeCommitted = useEventCallback(function (event) {
162
166
  if (disabled || readOnly) {
163
167
  return;
164
168
  }
165
169
  var nextValue = getValidValue(getValueByPosition(event));
166
170
  onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);
167
- }, [disabled, getValidValue, getValueByPosition, onChangeCommitted, readOnly]);
168
- var handleClickBar = useCallback(function (event) {
171
+ });
172
+ var handleClickBar = useEventCallback(function (event) {
169
173
  handleChangeValue(event);
170
174
  handleChangeCommitted(event);
171
- }, [handleChangeCommitted, handleChangeValue]);
172
- var handleKeyDown = useCallback(function (event) {
175
+ });
176
+ var handleKeyDown = useEventCallback(function (event) {
173
177
  var nextValue;
174
178
  var increaseKey = rtl ? 'ArrowLeft' : 'ArrowRight';
175
179
  var decreaseKey = rtl ? 'ArrowRight' : 'ArrowLeft';
@@ -196,11 +200,12 @@ var Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {
196
200
  event.preventDefault();
197
201
  setValue(nextValue);
198
202
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
199
- }, [max, min, onChange, rtl, setValue, step, value]);
203
+ });
200
204
  if (plaintext) {
201
205
  return /*#__PURE__*/React.createElement(Plaintext, {
202
206
  localeKey: "notSelected",
203
- ref: ref
207
+ ref: ref,
208
+ placeholder: placeholder
204
209
  }, value);
205
210
  }
206
211
  return /*#__PURE__*/React.createElement(Componnet, _extends({}, rest, {
@@ -210,7 +215,8 @@ var Slider = /*#__PURE__*/React.forwardRef(function (props, ref) {
210
215
  }), /*#__PURE__*/React.createElement("div", {
211
216
  ref: barRef,
212
217
  className: merge(barClassName, prefix('bar')),
213
- onClick: handleClickBar
218
+ onClick: handleClickBar,
219
+ "data-testid": "slider-bar"
214
220
  }, progress && /*#__PURE__*/React.createElement(ProgressBar, {
215
221
  rtl: rtl,
216
222
  vertical: vertical,
@@ -0,0 +1,16 @@
1
+ /// <reference types="react" />
2
+ interface DragProps {
3
+ tooltip?: boolean;
4
+ disabled?: boolean;
5
+ onDragStart?: (event: React.MouseEvent) => void;
6
+ onDragMove?: (event: React.DragEvent, dataset?: DOMStringMap) => void;
7
+ onDragEnd?: (event: React.MouseEvent, dataset?: DOMStringMap) => void;
8
+ }
9
+ declare const useDrag: (props: DragProps) => {
10
+ active: boolean;
11
+ rootRef: import("react").RefObject<HTMLDivElement>;
12
+ tooltipRef: import("react").RefObject<HTMLDivElement>;
13
+ onMoveStart: (...args: any[]) => any;
14
+ onMouseEnter: (...args: any[]) => any;
15
+ };
16
+ export default useDrag;
@@ -0,0 +1,82 @@
1
+ 'use client';
2
+ import { useRef, useEffect, useCallback, useState } from 'react';
3
+ import PointerMoveTracker from 'dom-lib/PointerMoveTracker';
4
+ import addStyle from 'dom-lib/addStyle';
5
+ import getWidth from 'dom-lib/getWidth';
6
+ import { useEventCallback } from '../utils';
7
+ var useDrag = function useDrag(props) {
8
+ var rootRef = useRef(null);
9
+ var tooltipRef = useRef(null);
10
+ var tooltip = props.tooltip,
11
+ disabled = props.disabled,
12
+ onDragMove = props.onDragMove,
13
+ onDragEnd = props.onDragEnd,
14
+ onDragStart = props.onDragStart;
15
+ var _useState = useState(false),
16
+ active = _useState[0],
17
+ setActive = _useState[1];
18
+ var moveTracker = useRef();
19
+
20
+ // Release the move event
21
+ var releaseMoves = useCallback(function () {
22
+ var _moveTracker$current;
23
+ (_moveTracker$current = moveTracker.current) === null || _moveTracker$current === void 0 ? void 0 : _moveTracker$current.releaseMoves();
24
+ moveTracker.current = null;
25
+ }, []);
26
+ var setTooltipPosition = useCallback(function () {
27
+ var tooltipElement = tooltipRef.current;
28
+ if (tooltip && tooltipElement) {
29
+ var width = getWidth(tooltipElement);
30
+ // Set the position of the tooltip
31
+ addStyle(tooltipElement, 'left', "-" + width / 2 + "px");
32
+ }
33
+ }, [tooltip]);
34
+ var handleDragMove = useEventCallback(function (_deltaX, _deltaY, event) {
35
+ var _moveTracker$current2;
36
+ if ((_moveTracker$current2 = moveTracker.current) !== null && _moveTracker$current2 !== void 0 && _moveTracker$current2.isDragging()) {
37
+ var _rootRef$current;
38
+ onDragMove === null || onDragMove === void 0 ? void 0 : onDragMove(event, (_rootRef$current = rootRef.current) === null || _rootRef$current === void 0 ? void 0 : _rootRef$current.dataset);
39
+ setTooltipPosition();
40
+ }
41
+ });
42
+ var handleDragEnd = useEventCallback(function (event) {
43
+ var _rootRef$current2;
44
+ setActive(false);
45
+ releaseMoves();
46
+ onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, (_rootRef$current2 = rootRef.current) === null || _rootRef$current2 === void 0 ? void 0 : _rootRef$current2.dataset);
47
+ });
48
+ var getMouseMoveTracker = useCallback(function () {
49
+ return moveTracker.current || new PointerMoveTracker(document.body, {
50
+ onMove: handleDragMove,
51
+ onMoveEnd: handleDragEnd,
52
+ useTouchEvent: true
53
+ });
54
+ }, [handleDragEnd, handleDragMove]);
55
+ var onMoveStart = useEventCallback(function (event) {
56
+ var _moveTracker$current3, _rootRef$current3;
57
+ if (disabled) {
58
+ return;
59
+ }
60
+ moveTracker.current = getMouseMoveTracker();
61
+ (_moveTracker$current3 = moveTracker.current) === null || _moveTracker$current3 === void 0 ? void 0 : _moveTracker$current3.captureMoves(event);
62
+ (_rootRef$current3 = rootRef.current) === null || _rootRef$current3 === void 0 ? void 0 : _rootRef$current3.focus();
63
+ setActive(true);
64
+ onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event);
65
+ });
66
+ var onMouseEnter = useEventCallback(function () {
67
+ setTooltipPosition();
68
+ });
69
+ useEffect(function () {
70
+ return function () {
71
+ releaseMoves();
72
+ };
73
+ }, [releaseMoves]);
74
+ return {
75
+ active: active,
76
+ rootRef: rootRef,
77
+ tooltipRef: tooltipRef,
78
+ onMoveStart: onMoveStart,
79
+ onMouseEnter: onMouseEnter
80
+ };
81
+ };
82
+ export default useDrag;