rsuite 5.24.0 → 5.24.1

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 (55) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/Calendar/styles/index.less +15 -16
  3. package/DatePicker/styles/index.less +9 -0
  4. package/DatePicker/styles/mixin.less +8 -0
  5. package/Picker/styles/index.less +0 -1
  6. package/Picker/styles/mixin.less +1 -20
  7. package/TreePicker/styles/index.less +13 -0
  8. package/cjs/Calendar/TableHeaderRow.js +3 -3
  9. package/cjs/Cascader/Cascader.js +2 -2
  10. package/cjs/Cascader/utils.d.ts +1 -1
  11. package/cjs/Cascader/utils.js +2 -2
  12. package/cjs/Content/Content.d.ts +1 -1
  13. package/cjs/Footer/Footer.d.ts +1 -1
  14. package/cjs/Header/Header.d.ts +1 -1
  15. package/cjs/MultiCascader/MultiCascader.js +4 -4
  16. package/cjs/MultiCascader/utils.d.ts +1 -1
  17. package/cjs/MultiCascader/utils.js +2 -2
  18. package/cjs/Navbar/NavbarBrand.d.ts +1 -1
  19. package/cjs/TreePicker/TreeNode.d.ts +3 -3
  20. package/cjs/TreePicker/TreeNode.js +1 -11
  21. package/cjs/TreePicker/TreePicker.js +8 -1
  22. package/cjs/utils/createComponent.d.ts +3 -3
  23. package/cjs/utils/treeUtils.d.ts +12 -0
  24. package/cjs/utils/treeUtils.js +42 -0
  25. package/dist/rsuite-rtl.css +167 -95
  26. package/dist/rsuite-rtl.min.css +1 -1
  27. package/dist/rsuite-rtl.min.css.map +1 -1
  28. package/dist/rsuite.css +167 -95
  29. package/dist/rsuite.js +11 -11
  30. package/dist/rsuite.min.css +1 -1
  31. package/dist/rsuite.min.css.map +1 -1
  32. package/dist/rsuite.min.js +1 -1
  33. package/dist/rsuite.min.js.map +1 -1
  34. package/esm/Calendar/TableHeaderRow.js +3 -3
  35. package/esm/Cascader/Cascader.js +2 -2
  36. package/esm/Cascader/utils.d.ts +1 -1
  37. package/esm/Cascader/utils.js +2 -2
  38. package/esm/Content/Content.d.ts +1 -1
  39. package/esm/Footer/Footer.d.ts +1 -1
  40. package/esm/Header/Header.d.ts +1 -1
  41. package/esm/MultiCascader/MultiCascader.js +4 -4
  42. package/esm/MultiCascader/utils.d.ts +1 -1
  43. package/esm/MultiCascader/utils.js +2 -2
  44. package/esm/Navbar/NavbarBrand.d.ts +1 -1
  45. package/esm/TreePicker/TreeNode.d.ts +3 -3
  46. package/esm/TreePicker/TreeNode.js +2 -11
  47. package/esm/TreePicker/TreePicker.js +9 -2
  48. package/esm/utils/createComponent.d.ts +3 -3
  49. package/esm/utils/treeUtils.d.ts +12 -0
  50. package/esm/utils/treeUtils.js +36 -0
  51. package/package.json +2 -2
  52. package/styles/color-modes/dark.less +1 -0
  53. package/styles/color-modes/high-contrast.less +1 -0
  54. package/styles/color-modes/light.less +1 -0
  55. package/styles/variables.less +7 -8
@@ -38,15 +38,15 @@ var TableHeaderRow = /*#__PURE__*/React.forwardRef(function (props, ref) {
38
38
  ref: ref,
39
39
  className: classes
40
40
  }), showWeekNumbers && /*#__PURE__*/React.createElement("div", {
41
- className: prefix('cell'),
41
+ className: prefix('header-cell'),
42
42
  role: "columnheader"
43
43
  }), items.map(function (key) {
44
44
  return /*#__PURE__*/React.createElement("div", {
45
45
  key: key,
46
- className: prefix('cell'),
46
+ className: prefix('header-cell'),
47
47
  role: "columnheader"
48
48
  }, /*#__PURE__*/React.createElement("span", {
49
- className: prefix('cell-content')
49
+ className: prefix('header-cell-content')
50
50
  }, locale === null || locale === void 0 ? void 0 : locale[key]));
51
51
  }));
52
52
  });
@@ -94,7 +94,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
94
94
  valueToPaths = _usePaths.valueToPaths,
95
95
  columnData = _usePaths.columnData,
96
96
  addColumn = _usePaths.addColumn,
97
- romoveColumnByIndex = _usePaths.romoveColumnByIndex,
97
+ removeColumnByIndex = _usePaths.removeColumnByIndex,
98
98
  setValueToPaths = _usePaths.setValueToPaths,
99
99
  setColumnData = _usePaths.setColumnData,
100
100
  setSelectedPaths = _usePaths.setSelectedPaths,
@@ -285,7 +285,7 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
285
285
  addColumn(node[childrenKey], columnIndex);
286
286
  } else {
287
287
  // Removes subsequent columns of the current column when the clicked node is a leaf node.
288
- romoveColumnByIndex(columnIndex);
288
+ removeColumnByIndex(columnIndex);
289
289
  }
290
290
 
291
291
  if (isLeafNode) {
@@ -18,6 +18,6 @@ export declare function usePaths<T extends Record<string, unknown>>(params: UseP
18
18
  setColumnData: import("react").Dispatch<import("react").SetStateAction<T[][]>>;
19
19
  setSelectedPaths: import("react").Dispatch<import("react").SetStateAction<T[]>>;
20
20
  addColumn: (column: T[], index: number) => void;
21
- romoveColumnByIndex: (index: number) => void;
21
+ removeColumnByIndex: (index: number) => void;
22
22
  };
23
23
  export {};
@@ -117,7 +117,7 @@ export function usePaths(params) {
117
117
  */
118
118
 
119
119
 
120
- function romoveColumnByIndex(index) {
120
+ function removeColumnByIndex(index) {
121
121
  setColumnData([].concat(slice(columnData, 0, index)));
122
122
  }
123
123
  /**
@@ -156,6 +156,6 @@ export function usePaths(params) {
156
156
  setColumnData: setColumnData,
157
157
  setSelectedPaths: setSelectedPaths,
158
158
  addColumn: addColumn,
159
- romoveColumnByIndex: romoveColumnByIndex
159
+ removeColumnByIndex: removeColumnByIndex
160
160
  };
161
161
  }
@@ -4,5 +4,5 @@ export declare type ContentProps = ComponentProps;
4
4
  * For Internet Explorer 11 and lower, it's suggested that an ARIA role of "main"
5
5
  * be added to the <main> element to ensure it is accessible
6
6
  */
7
- declare const Content: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
7
+ declare const Content: import("../@types/common").RsRefForwardingComponent<"main", ComponentProps>;
8
8
  export default Content;
@@ -1,4 +1,4 @@
1
1
  import { ComponentProps } from '../utils/createComponent';
2
2
  export declare type FooterProps = ComponentProps;
3
- declare const Footer: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
3
+ declare const Footer: import("../@types/common").RsRefForwardingComponent<"footer", ComponentProps>;
4
4
  export default Footer;
@@ -1,4 +1,4 @@
1
1
  import { ComponentProps } from '../utils/createComponent';
2
2
  export declare type HeaderProps = ComponentProps;
3
- declare const Header: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
3
+ declare const Header: import("../@types/common").RsRefForwardingComponent<"header", ComponentProps>;
4
4
  export default Header;
@@ -103,7 +103,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
103
103
  columnData = _useColumnData.columnData,
104
104
  setColumnData = _useColumnData.setColumnData,
105
105
  addColumn = _useColumnData.addColumn,
106
- romoveColumnByIndex = _useColumnData.romoveColumnByIndex,
106
+ removeColumnByIndex = _useColumnData.removeColumnByIndex,
107
107
  enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
108
108
 
109
109
  useUpdateEffect(function () {
@@ -199,7 +199,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
199
199
  node.loading = false;
200
200
  node[childrenKey] = data;
201
201
 
202
- if (targetRef.current) {
202
+ if (targetRef.current || inline) {
203
203
  addFlattenData(data, node);
204
204
  addColumn(data, columnIndex);
205
205
  }
@@ -214,11 +214,11 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
214
214
  addColumn(node[childrenKey], columnIndex);
215
215
  } else {
216
216
  // Removes subsequent columns of the current column when the clicked node is a leaf node.
217
- romoveColumnByIndex(columnIndex);
217
+ removeColumnByIndex(columnIndex);
218
218
  }
219
219
 
220
220
  (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$u = _triggerRef$current.updatePosition) === null || _triggerRef$current$u === void 0 ? void 0 : _triggerRef$current$u.call(_triggerRef$current);
221
- }, [onSelect, getChildren, childrenKey, addFlattenData, addColumn, romoveColumnByIndex]);
221
+ }, [onSelect, getChildren, childrenKey, inline, addFlattenData, addColumn, removeColumnByIndex]);
222
222
  var handleCheck = useCallback(function (node, event, checked) {
223
223
  var nodeValue = node[valueKey];
224
224
  var nextValue = [];
@@ -51,7 +51,7 @@ export declare function useFlattenData<T>(data: T[], itemKeys: ItemKeys): {
51
51
  export declare function useColumnData<T extends MayHasParent<Record<string, unknown>>>(flattenData: T[]): {
52
52
  columnData: T[][];
53
53
  addColumn: (column: T[], index: number) => void;
54
- romoveColumnByIndex: (index: number) => void;
54
+ removeColumnByIndex: (index: number) => void;
55
55
  setColumnData: import("react").Dispatch<import("react").SetStateAction<T[][]>>;
56
56
  enforceUpdateColumnData: (nextData: T[]) => void;
57
57
  };
@@ -209,7 +209,7 @@ export function useColumnData(flattenData) {
209
209
  */
210
210
 
211
211
 
212
- function romoveColumnByIndex(index) {
212
+ function removeColumnByIndex(index) {
213
213
  setColumnData([].concat(slice(columnData, 0, index)));
214
214
  }
215
215
 
@@ -223,7 +223,7 @@ export function useColumnData(flattenData) {
223
223
  return {
224
224
  columnData: columnData,
225
225
  addColumn: addColumn,
226
- romoveColumnByIndex: romoveColumnByIndex,
226
+ removeColumnByIndex: removeColumnByIndex,
227
227
  setColumnData: setColumnData,
228
228
  enforceUpdateColumnData: enforceUpdateColumnData
229
229
  };
@@ -1,4 +1,4 @@
1
1
  import { ComponentProps } from '../utils/createComponent';
2
2
  export declare type NavbarBrandProps = ComponentProps;
3
- declare const NavbarBrand: import("../@types/common").RsRefForwardingComponent<"div", ComponentProps>;
3
+ declare const NavbarBrand: import("../@types/common").RsRefForwardingComponent<"a", ComponentProps>;
4
4
  export default NavbarBrand;
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
- import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
2
+ import { WithAsProps, RsRefForwardingComponent, ItemDataType } from '../@types/common';
3
3
  export interface TreeNodeProps extends WithAsProps {
4
4
  rtl?: boolean;
5
5
  layer: number;
6
- value?: any;
7
- label?: any;
6
+ value?: ItemDataType['value'];
7
+ label?: ItemDataType['label'];
8
8
  focus?: boolean;
9
9
  loading?: boolean;
10
10
  expand?: boolean;
@@ -5,9 +5,8 @@ import PropTypes from 'prop-types';
5
5
  import hasClass from 'dom-lib/hasClass';
6
6
  import ArrowDown from '@rsuite/icons/legacy/ArrowDown';
7
7
  import Spinner from '@rsuite/icons/legacy/Spinner';
8
- import reactToString from '../utils/reactToString';
9
8
  import { useClassNames } from '../utils';
10
- import { getTreeNodeIndent } from '../utils/treeUtils';
9
+ import { getTreeNodeIndent, stringifyTreeNodeLabel } from '../utils/treeUtils';
11
10
  var TreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
12
11
  var _ref$as = _ref.as,
13
12
  Component = _ref$as === void 0 ? 'div' : _ref$as,
@@ -49,14 +48,6 @@ var TreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
49
48
  merge = _useClassNames.merge,
50
49
  withClassPrefix = _useClassNames.withClassPrefix;
51
50
 
52
- var getTitle = useCallback(function () {
53
- if (typeof label === 'string') {
54
- return label;
55
- } else if ( /*#__PURE__*/React.isValidElement(label)) {
56
- var nodes = reactToString(label);
57
- return nodes.join('');
58
- }
59
- }, [label]);
60
51
  var handleExpand = useCallback(function (event) {
61
52
  var _event$nativeEvent, _event$nativeEvent$st;
62
53
 
@@ -145,7 +136,7 @@ var TreeNode = /*#__PURE__*/forwardRef(function (_ref, ref) {
145
136
  });
146
137
  return /*#__PURE__*/React.createElement("span", {
147
138
  className: prefix('label'),
148
- title: getTitle(),
139
+ title: stringifyTreeNodeLabel(label),
149
140
  "data-layer": layer,
150
141
  "data-key": (nodeData === null || nodeData === void 0 ? void 0 : nodeData.refKey) || '',
151
142
  role: "button",
@@ -9,7 +9,7 @@ import React, { useState, useRef, useEffect, useCallback, useContext } from 'rea
9
9
  import PropTypes from 'prop-types';
10
10
  import { List, AutoSizer } from '../Windowing';
11
11
  import TreeNode from './TreeNode';
12
- import { getTreeNodeIndent } from '../utils/treeUtils';
12
+ import { createDragPreview, getTreeNodeIndent, removeDragPreview, stringifyTreeNodeLabel } from '../utils/treeUtils';
13
13
  import { createChainedFunction, useClassNames, useCustom, useControlled, TREE_NODE_DROP_POSITION, KEY_VALUES, mergeRefs, shallowEqual } from '../utils';
14
14
  import { getExpandWhenSearching, hasVisibleChildren, getDragNodeKeys, calDropNodePosition, createUpdateTreeDataFunction, useTreeDrag, useFlattenTreeData, getTreeActiveNode, getDefaultExpandItemValues, useTreeNodeRefs, useTreeSearch, focusPreviousItem, getFocusableItems, focusNextItem, getActiveItem, toggleExpand, useGetTreeNodeChildren, focusToActiveTreeNode, leftArrowHandler, focusTreeNode, rightArrowHandler, isSearching } from '../utils/treeUtils';
15
15
  import { PickerToggle, PickerOverlay, SearchBar, PickerToggleTrigger, createConcatChildrenFunction, usePickerClassName, onMenuKeyDown as _onMenuKeyDown, usePublicMethods, listPickerPropTypes, pickTriggerPropKeys, omitTriggerPropKeys, useToggleKeyDownEvent } from '../Picker';
@@ -331,11 +331,15 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
331
331
  }, [valueKey, childrenKey, expandItemValues, getChildren, onExpand, setExpandItemValues, loadChildren]);
332
332
  var handleDragStart = useCallback(function (nodeData, event) {
333
333
  if (draggable) {
334
+ var _event$dataTransfer;
335
+
336
+ var dragMoverNode = createDragPreview(stringifyTreeNodeLabel(nodeData[labelKey]), treePrefix('drag-preview'));
337
+ (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.setDragImage(dragMoverNode, 0, 0);
334
338
  setDragNodeKeys(getDragNodeKeys(nodeData, childrenKey, valueKey));
335
339
  setDragNode(flattenNodes[nodeData.refKey]);
336
340
  onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(nodeData, event);
337
341
  }
338
- }, [draggable, childrenKey, flattenNodes, onDragStart, setDragNodeKeys, setDragNode, valueKey]);
342
+ }, [draggable, labelKey, treePrefix, setDragNodeKeys, childrenKey, valueKey, setDragNode, flattenNodes, onDragStart]);
339
343
  var handleDragEnter = useCallback(function (nodeData, event) {
340
344
  if (dragNodeKeys.some(function (d) {
341
345
  return shallowEqual(d, nodeData[valueKey]);
@@ -354,6 +358,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
354
358
  if (dragNodeKeys.some(function (d) {
355
359
  return shallowEqual(d, nodeData[valueKey]);
356
360
  })) {
361
+ event.dataTransfer.dropEffect = 'none';
357
362
  return;
358
363
  }
359
364
 
@@ -369,6 +374,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
369
374
  onDragLeave === null || onDragLeave === void 0 ? void 0 : onDragLeave(nodeData, event);
370
375
  }, [onDragLeave]);
371
376
  var handleDragEnd = useCallback(function (nodeData, event) {
377
+ removeDragPreview();
372
378
  setDragNode(null);
373
379
  setDragNodeKeys([]);
374
380
  setDragOverNodeKey(null);
@@ -384,6 +390,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
384
390
  onDrop === null || onDrop === void 0 ? void 0 : onDrop(dropData, event);
385
391
  }
386
392
 
393
+ removeDragPreview();
387
394
  setDragNode(null);
388
395
  setDragNodeKeys([]);
389
396
  setDragOverNodeKey(null);
@@ -1,13 +1,13 @@
1
1
  import React from 'react';
2
2
  import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
3
  export declare type ComponentProps = WithAsProps & React.HTMLAttributes<HTMLDivElement>;
4
- interface Props extends React.HTMLAttributes<HTMLDivElement> {
4
+ interface Props<TElement extends React.ElementType> extends React.HTMLAttributes<HTMLDivElement> {
5
5
  name: string;
6
- componentAs?: React.ElementType;
6
+ componentAs?: TElement;
7
7
  componentClassPrefix?: string;
8
8
  }
9
9
  /**
10
10
  * Create a component with `classPrefix` and `as` attributes.
11
11
  */
12
- declare function createComponent({ name, componentAs, componentClassPrefix, ...defaultProps }: Props): RsRefForwardingComponent<"div", ComponentProps>;
12
+ declare function createComponent<TElement extends React.ElementType = 'div'>({ name, componentAs, componentClassPrefix, ...defaultProps }: Props<TElement>): RsRefForwardingComponent<TElement, ComponentProps>;
13
13
  export default createComponent;
@@ -262,3 +262,15 @@ export declare function getTreeNodeIndent(rtl: any, layer: any, absolute?: boole
262
262
  * @returns
263
263
  */
264
264
  export declare function getNodeFormattedRefKey(value: string | number): string;
265
+ /**
266
+ * create drag preview when tree node start drag
267
+ * @param name
268
+ * @param className
269
+ * @returns
270
+ */
271
+ export declare function createDragPreview(name: string, className: string): HTMLDivElement;
272
+ /**
273
+ * remove drag preview when tree node drop
274
+ */
275
+ export declare function removeDragPreview(): void;
276
+ export declare function stringifyTreeNodeLabel(label: string | React.ReactNode): string;
@@ -1031,4 +1031,40 @@ export function getTreeNodeIndent(rtl, layer, absolute) {
1031
1031
 
1032
1032
  export function getNodeFormattedRefKey(value) {
1033
1033
  return "" + (typeof value === 'number' ? 'Number_' : 'String_') + value;
1034
+ }
1035
+ /**
1036
+ * create drag preview when tree node start drag
1037
+ * @param name
1038
+ * @param className
1039
+ * @returns
1040
+ */
1041
+
1042
+ export function createDragPreview(name, className) {
1043
+ var dragPreview = document.createElement('div');
1044
+ dragPreview.id = 'rs-tree-drag-preview';
1045
+ dragPreview.innerHTML = name;
1046
+ dragPreview.classList.add(className);
1047
+ document.body.appendChild(dragPreview);
1048
+ return dragPreview;
1049
+ }
1050
+ /**
1051
+ * remove drag preview when tree node drop
1052
+ */
1053
+
1054
+ export function removeDragPreview() {
1055
+ var _dragPreview$parentNo, _dragPreview$parentNo2;
1056
+
1057
+ var dragPreview = document.getElementById('rs-tree-drag-preview');
1058
+ dragPreview === null || dragPreview === void 0 ? void 0 : (_dragPreview$parentNo = dragPreview.parentNode) === null || _dragPreview$parentNo === void 0 ? void 0 : (_dragPreview$parentNo2 = _dragPreview$parentNo.removeChild) === null || _dragPreview$parentNo2 === void 0 ? void 0 : _dragPreview$parentNo2.call(_dragPreview$parentNo, dragPreview);
1059
+ }
1060
+ export function stringifyTreeNodeLabel(label) {
1061
+ if (typeof label === 'string') {
1062
+ return label;
1063
+ } else if ( /*#__PURE__*/React.isValidElement(label)) {
1064
+ var _nodes2 = reactToString(label);
1065
+
1066
+ return _nodes2.join('');
1067
+ }
1068
+
1069
+ return '';
1034
1070
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rsuite",
3
- "version": "5.24.0",
3
+ "version": "5.24.1",
4
4
  "description": "A suite of react components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -37,7 +37,7 @@
37
37
  "lodash": "^4.17.11",
38
38
  "prop-types": "^15.8.1",
39
39
  "react-window": "^1.8.8",
40
- "rsuite-table": "^5.8.1",
40
+ "rsuite-table": "^5.8.2",
41
41
  "schema-typed": "^2.0.3"
42
42
  },
43
43
  "peerDependencies": {
@@ -339,6 +339,7 @@
339
339
  --rs-calendar-range-bg: fade(@H900-dark, 50%);
340
340
  --rs-calendar-time-unit-bg: @B600-dark;
341
341
  --rs-calendar-date-selected-text: #fff;
342
+ --rs-calendar-cell-selected-hover-bg: @H700;
342
343
 
343
344
  // Popover
344
345
  --rs-popover-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
@@ -355,6 +355,7 @@
355
355
  --rs-calendar-range-bg: fade(@H900-high-contrast, 50%);
356
356
  --rs-calendar-time-unit-bg: @B900-high-contrast;
357
357
  --rs-calendar-date-selected-text: @B900-high-contrast;
358
+ --rs-calendar-cell-selected-hover-bg: @B050-high-contrast;
358
359
 
359
360
  // Popover
360
361
  --rs-popover-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
@@ -348,6 +348,7 @@
348
348
  --rs-calendar-range-bg: fade(@H100, 50%);
349
349
  --rs-calendar-time-unit-bg: @B050;
350
350
  --rs-calendar-date-selected-text: #fff;
351
+ --rs-calendar-cell-selected-hover-bg: @H700;
351
352
 
352
353
  // Popover
353
354
  --rs-popover-shadow: 0 1px 8px rgba(0, 0, 0, 0.12);
@@ -241,7 +241,7 @@
241
241
  @btn-border-radius-base: @border-radius; // @deprecated use @btn-border-radius instead
242
242
  @btn-border-radius: @btn-border-radius-base;
243
243
 
244
- @btn-transition: color 0.2s linear, background-color 0.3s linear;
244
+ @btn-transition: color 0.15s ease-out, background-color 0.15s ease-out;
245
245
  @btn-disabled-opacity: 0.3;
246
246
 
247
247
  // Ghost Button
@@ -312,7 +312,7 @@
312
312
  @input-padding-y: @padding-base-input-vertical;
313
313
  @input-padding-x: @padding-base-input-horizontal;
314
314
  @input-border-width: 1px;
315
- @input-transition: border-color ease-in-out 0.3s;
315
+ @input-transition: border-color ease-in-out 0.15s;
316
316
 
317
317
  // This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
318
318
  @input-border-radius: @border-radius;
@@ -368,7 +368,7 @@
368
368
  // Toggle
369
369
 
370
370
  @toggle-active-scale: 1.2;
371
- @toggle-transition: 0.2s ease-in-out;
371
+ @toggle-transition: 0.15s ease-out;
372
372
 
373
373
  @toggle-md-height: 24px;
374
374
  @toggle-md-handle-gap: 3px;
@@ -393,7 +393,7 @@
393
393
 
394
394
  // Navs
395
395
 
396
- @nav-item-transition: color 0.3s linear, background-color 0.3s linear;
396
+ @nav-item-transition: color 0.15s ease-out, background-color 0.15s ease-out;
397
397
 
398
398
  // Tab
399
399
  @nav-tab-bar-width: 1px;
@@ -432,7 +432,7 @@
432
432
  @sidenav-icon-spacing: 20px;
433
433
  @sidenav-icon-width: @sidenav-level1-item-font-size;
434
434
  @sidenav-dropdown-toggle-caret-width: 20px;
435
- @sidenav-collapse-transition-config: 0.2s ease-in;
435
+ @sidenav-collapse-transition-config: 0.15s ease-in;
436
436
 
437
437
  @sidenav-level-retract: 9px;
438
438
  @sidenav-level2-retract: (@sidenav-padding-horizontal + @sidenav-icon-width + @sidenav-icon-spacing);
@@ -648,7 +648,7 @@
648
648
  @panel-padding: 20px;
649
649
  @panel-header-font-size: 16px;
650
650
  @panel-split-line-color: @dropdown-divider-bg;
651
- @panel-accodion-transition: 0.3s linear;
651
+ @panel-accodion-transition: 0.15s linear;
652
652
  @panel-box-shadow: @box-shadow;
653
653
 
654
654
  // Timeline
@@ -717,7 +717,6 @@
717
717
 
718
718
  @picker-item-content-padding-vertical: 8px;
719
719
  @picker-item-content-padding-horizontal: @picker-menu-padding;
720
- @picker-item-transition: color 0.3s linear, background-color 0.3s linear;
721
720
 
722
721
  // group title
723
722
  @picker-group-children-padding-left: 26px;
@@ -806,7 +805,7 @@
806
805
  @slider-calibration-diameter: 8px;
807
806
  @slider-calibration-border-width: 2px;
808
807
  @slider-mark-margin-top: 9px;
809
- @slider-handle-transition: 0.3s ease-in-out;
808
+ @slider-handle-transition: 0.15s ease-in-out;
810
809
 
811
810
  // Breadcrumbs
812
811