@salutejs/plasma-new-hope 0.337.0-canary.2184.17907394393.0 → 0.337.0-canary.2184.17968380115.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 (156) hide show
  1. package/cjs/components/Autocomplete/Autocomplete.css +2 -2
  2. package/cjs/components/Combobox/ComboboxNew/Combobox.css +2 -2
  3. package/cjs/components/DatePicker/RangeDate/RangeDate.css +2 -2
  4. package/cjs/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.css +2 -2
  5. package/cjs/components/DatePicker/SingleDate/SingleDate.css +2 -2
  6. package/cjs/components/InformationWrapper/InformationWrapper.css +2 -2
  7. package/cjs/components/InformationWrapper/ui/Label/Label.css +2 -2
  8. package/cjs/components/Modal/Modal.js +4 -2
  9. package/cjs/components/Modal/Modal.js.map +1 -1
  10. package/cjs/components/Note/Note.css +1 -1
  11. package/cjs/components/Note/Note.js +1 -1
  12. package/cjs/components/Note/Note.js.map +1 -1
  13. package/cjs/components/Note/variations/_size/base.js +1 -1
  14. package/cjs/components/Note/variations/_size/base.js.map +1 -1
  15. package/cjs/components/Note/variations/_size/{base_111wwzs.css → base_12cn7f7.css} +1 -1
  16. package/cjs/components/Pagination/Pagination.css +2 -2
  17. package/cjs/components/Pagination/ui/PaginationSelectPerPage/PaginationSelectPerPage.css +2 -2
  18. package/cjs/components/Range/Range.css +2 -2
  19. package/cjs/components/Select/Select.css +2 -2
  20. package/cjs/components/Select/ui/Target/Target.css +2 -2
  21. package/cjs/components/Select/ui/Target/ui/Textfield/Textfield.css +2 -2
  22. package/cjs/components/Slider/Slider.css +2 -2
  23. package/cjs/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.css +2 -2
  24. package/cjs/components/Table/Table.css +2 -2
  25. package/cjs/components/Table/ui/Cell/Cell.css +2 -2
  26. package/cjs/components/Table/ui/EditableCell/EditableCell.css +2 -2
  27. package/cjs/components/Table/ui/HeadCell/HeadCell.css +2 -2
  28. package/cjs/components/Table/ui/HeadCell/ui/Filter/Filter.css +2 -2
  29. package/cjs/components/TextArea/ui/Hint/Hint.css +2 -2
  30. package/cjs/components/TextField/ui/Hint/Hint.css +2 -2
  31. package/cjs/components/TextField/ui/TextFieldChipNew/TextFieldChipNew.css +2 -2
  32. package/cjs/components/TimePicker/TimePicker.css +11 -7
  33. package/cjs/components/TimePicker/TimePicker.js +254 -6
  34. package/cjs/components/TimePicker/TimePicker.js.map +1 -1
  35. package/cjs/components/TimePicker/TimePicker.styles.js +27 -3
  36. package/cjs/components/TimePicker/TimePicker.styles.js.map +1 -1
  37. package/{es/components/TimePicker/TimePicker.styles_1ie9d7j.css → cjs/components/TimePicker/TimePicker.styles_7l6ler.css} +7 -3
  38. package/cjs/components/TimePicker/TimePicker.tokens.js +6 -2
  39. package/cjs/components/TimePicker/TimePicker.tokens.js.map +1 -1
  40. package/cjs/components/Tooltip/Tooltip.styles.js +5 -5
  41. package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
  42. package/cjs/components/Tooltip/Tooltip.styles_uldg0s.css +2 -0
  43. package/cjs/hooks/useFocusTrap.js +11 -5
  44. package/cjs/hooks/useFocusTrap.js.map +1 -1
  45. package/cjs/index.css +12 -8
  46. package/cjs/utils/scopeTab.js +2 -2
  47. package/cjs/utils/scopeTab.js.map +1 -1
  48. package/emotion/cjs/components/Modal/Modal.js +3 -2
  49. package/emotion/cjs/components/Note/Note.js +1 -1
  50. package/emotion/cjs/components/Note/variations/_size/base.js +1 -1
  51. package/emotion/cjs/components/TimePicker/TimePicker.js +259 -6
  52. package/emotion/cjs/components/TimePicker/TimePicker.styles.js +39 -11
  53. package/emotion/cjs/components/TimePicker/TimePicker.tokens.js +6 -2
  54. package/emotion/cjs/components/Tooltip/Tooltip.styles.js +5 -5
  55. package/emotion/cjs/examples/components/TimePicker/TimePicker.config.js +7 -7
  56. package/emotion/cjs/hooks/useFocusTrap.js +12 -5
  57. package/emotion/cjs/utils/scopeTab.js +2 -2
  58. package/emotion/es/components/Modal/Modal.js +3 -2
  59. package/emotion/es/components/Note/Note.js +1 -1
  60. package/emotion/es/components/Note/variations/_size/base.js +1 -1
  61. package/emotion/es/components/TimePicker/TimePicker.js +261 -8
  62. package/emotion/es/components/TimePicker/TimePicker.styles.js +27 -11
  63. package/emotion/es/components/TimePicker/TimePicker.tokens.js +6 -2
  64. package/emotion/es/components/Tooltip/Tooltip.styles.js +5 -5
  65. package/emotion/es/examples/components/TimePicker/TimePicker.config.js +7 -7
  66. package/emotion/es/hooks/useFocusTrap.js +12 -5
  67. package/emotion/es/utils/scopeTab.js +2 -2
  68. package/es/components/Autocomplete/Autocomplete.css +2 -2
  69. package/es/components/Combobox/ComboboxNew/Combobox.css +2 -2
  70. package/es/components/DatePicker/RangeDate/RangeDate.css +2 -2
  71. package/es/components/DatePicker/RangeDate/RangeDatePopover/RangeDatePopover.css +2 -2
  72. package/es/components/DatePicker/SingleDate/SingleDate.css +2 -2
  73. package/es/components/InformationWrapper/InformationWrapper.css +2 -2
  74. package/es/components/InformationWrapper/ui/Label/Label.css +2 -2
  75. package/es/components/Modal/Modal.js +4 -2
  76. package/es/components/Modal/Modal.js.map +1 -1
  77. package/es/components/Note/Note.css +1 -1
  78. package/es/components/Note/Note.js +1 -1
  79. package/es/components/Note/Note.js.map +1 -1
  80. package/es/components/Note/variations/_size/base.js +1 -1
  81. package/es/components/Note/variations/_size/base.js.map +1 -1
  82. package/es/components/Note/variations/_size/{base_111wwzs.css → base_12cn7f7.css} +1 -1
  83. package/es/components/Pagination/Pagination.css +2 -2
  84. package/es/components/Pagination/ui/PaginationSelectPerPage/PaginationSelectPerPage.css +2 -2
  85. package/es/components/Range/Range.css +2 -2
  86. package/es/components/Select/Select.css +2 -2
  87. package/es/components/Select/ui/Target/Target.css +2 -2
  88. package/es/components/Select/ui/Target/ui/Textfield/Textfield.css +2 -2
  89. package/es/components/Slider/Slider.css +2 -2
  90. package/es/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.css +2 -2
  91. package/es/components/Table/Table.css +2 -2
  92. package/es/components/Table/ui/Cell/Cell.css +2 -2
  93. package/es/components/Table/ui/EditableCell/EditableCell.css +2 -2
  94. package/es/components/Table/ui/HeadCell/HeadCell.css +2 -2
  95. package/es/components/Table/ui/HeadCell/ui/Filter/Filter.css +2 -2
  96. package/es/components/TextArea/ui/Hint/Hint.css +2 -2
  97. package/es/components/TextField/ui/Hint/Hint.css +2 -2
  98. package/es/components/TextField/ui/TextFieldChipNew/TextFieldChipNew.css +2 -2
  99. package/es/components/TimePicker/TimePicker.css +11 -7
  100. package/es/components/TimePicker/TimePicker.js +257 -9
  101. package/es/components/TimePicker/TimePicker.js.map +1 -1
  102. package/es/components/TimePicker/TimePicker.styles.js +24 -4
  103. package/es/components/TimePicker/TimePicker.styles.js.map +1 -1
  104. package/{cjs/components/TimePicker/TimePicker.styles_1ie9d7j.css → es/components/TimePicker/TimePicker.styles_7l6ler.css} +7 -3
  105. package/es/components/TimePicker/TimePicker.tokens.js +6 -2
  106. package/es/components/TimePicker/TimePicker.tokens.js.map +1 -1
  107. package/es/components/Tooltip/Tooltip.styles.js +5 -5
  108. package/es/components/Tooltip/Tooltip.styles.js.map +1 -1
  109. package/es/components/Tooltip/Tooltip.styles_uldg0s.css +2 -0
  110. package/es/hooks/useFocusTrap.js +11 -5
  111. package/es/hooks/useFocusTrap.js.map +1 -1
  112. package/es/index.css +12 -8
  113. package/es/utils/scopeTab.js +2 -2
  114. package/es/utils/scopeTab.js.map +1 -1
  115. package/package.json +2 -2
  116. package/styled-components/cjs/components/Modal/Modal.js +3 -2
  117. package/styled-components/cjs/components/Note/Note.js +1 -1
  118. package/styled-components/cjs/components/Note/variations/_size/base.js +1 -1
  119. package/styled-components/cjs/components/TimePicker/TimePicker.js +259 -6
  120. package/styled-components/cjs/components/TimePicker/TimePicker.styles.js +58 -18
  121. package/styled-components/cjs/components/TimePicker/TimePicker.tokens.js +6 -2
  122. package/styled-components/cjs/components/Tooltip/Tooltip.styles.js +9 -9
  123. package/styled-components/cjs/examples/components/TimePicker/TimePicker.config.js +16 -12
  124. package/styled-components/cjs/hooks/useFocusTrap.js +12 -5
  125. package/styled-components/cjs/utils/scopeTab.js +2 -2
  126. package/styled-components/es/components/Modal/Modal.js +3 -2
  127. package/styled-components/es/components/Note/Note.js +1 -1
  128. package/styled-components/es/components/Note/variations/_size/base.js +1 -1
  129. package/styled-components/es/components/TimePicker/TimePicker.js +261 -8
  130. package/styled-components/es/components/TimePicker/TimePicker.styles.js +46 -18
  131. package/styled-components/es/components/TimePicker/TimePicker.tokens.js +6 -2
  132. package/styled-components/es/components/Tooltip/Tooltip.styles.js +9 -9
  133. package/styled-components/es/examples/components/TimePicker/TimePicker.config.js +16 -12
  134. package/styled-components/es/hooks/useFocusTrap.js +12 -5
  135. package/styled-components/es/utils/scopeTab.js +2 -2
  136. package/types/components/Modal/Modal.d.ts.map +1 -1
  137. package/types/components/Modal/Modal.types.d.ts +5 -0
  138. package/types/components/Modal/Modal.types.d.ts.map +1 -1
  139. package/types/components/Note/Note.d.ts +4 -4
  140. package/types/components/Note/Note.d.ts.map +1 -1
  141. package/types/components/Note/Note.types.d.ts +2 -2
  142. package/types/components/Note/Note.types.d.ts.map +1 -1
  143. package/types/components/TimePicker/TimePicker.d.ts.map +1 -1
  144. package/types/components/TimePicker/TimePicker.styles.d.ts +4 -0
  145. package/types/components/TimePicker/TimePicker.styles.d.ts.map +1 -1
  146. package/types/components/TimePicker/TimePicker.tokens.d.ts +4 -0
  147. package/types/components/TimePicker/TimePicker.tokens.d.ts.map +1 -1
  148. package/types/components/Tooltip/Tooltip.styles.d.ts.map +1 -1
  149. package/types/examples/components/Note/Note.d.ts +2 -2
  150. package/types/examples/components/TimePicker/TimePicker.config.d.ts.map +1 -1
  151. package/types/hooks/useFocusTrap.d.ts +1 -1
  152. package/types/hooks/useFocusTrap.d.ts.map +1 -1
  153. package/types/utils/scopeTab.d.ts +1 -1
  154. package/types/utils/scopeTab.d.ts.map +1 -1
  155. package/cjs/components/Tooltip/Tooltip.styles_1bh0sd0.css +0 -2
  156. package/es/components/Tooltip/Tooltip.styles_1bh0sd0.css +0 -2
@@ -47,14 +47,14 @@ var processNode = function(node, firstFocusSelector, ref) {
47
47
  };
48
48
  var focusManager = new _focusManager.FocusManager();
49
49
  var useFocusTrap = function() {
50
- var active = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true, firstFocusSelector = arguments.length > 1 ? arguments[1] : void 0, focusAfterNode = arguments.length > 2 ? arguments[2] : void 0, focusAfterAnimation = arguments.length > 3 ? arguments[3] : void 0;
50
+ var active = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true, firstFocusSelector = arguments.length > 1 ? arguments[1] : void 0, focusAfterNode = arguments.length > 2 ? arguments[2] : void 0, focusAfterAnimation = arguments.length > 3 ? arguments[3] : void 0, enableOnFirstMount = arguments.length > 4 ? arguments[4] : void 0;
51
51
  var ref = (0, _react.useRef)();
52
52
  var setRef = (0, _react.useCallback)(function(node) {
53
53
  if (ref.current) {
54
54
  focusManager.teardownScopedFocus();
55
55
  focusManager.returnFocus();
56
56
  }
57
- if (active && node) {
57
+ if ((active || enableOnFirstMount) && node) {
58
58
  focusManager.setupScopedFocus(node);
59
59
  focusManager.markForFocusAfter(focusAfterNode);
60
60
  // Delay processing the HTML node by a frame. This ensures focus is assigned correctly.
@@ -73,15 +73,21 @@ var useFocusTrap = function() {
73
73
  ref.current = null;
74
74
  }, [
75
75
  active,
76
+ enableOnFirstMount,
76
77
  firstFocusSelector
77
78
  ]);
78
79
  (0, _react.useEffect)(function() {
79
- if (!active) {
80
+ if (!active && !enableOnFirstMount) {
80
81
  return;
81
82
  }
82
83
  var handleKeyDown = function(event) {
83
84
  if (event.key === 'Tab' && ref.current) {
84
- (0, _scopeTab.scopeTab)(ref.current, event);
85
+ (0, _scopeTab.scopeTab)(ref.current, event, active);
86
+ if (enableOnFirstMount) {
87
+ setTimeout(function() {
88
+ focusManager.teardownScopedFocus();
89
+ });
90
+ }
85
91
  }
86
92
  };
87
93
  document.addEventListener('keydown', handleKeyDown);
@@ -89,7 +95,8 @@ var useFocusTrap = function() {
89
95
  document.removeEventListener('keydown', handleKeyDown);
90
96
  };
91
97
  }, [
92
- active
98
+ active,
99
+ enableOnFirstMount
93
100
  ]);
94
101
  return setRef;
95
102
  };
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "scopeTab", {
9
9
  }
10
10
  });
11
11
  var _tabbable = require("./tabbable");
12
- var scopeTab = function(node, event) {
12
+ var scopeTab = function(node, event, activeFocusTrap) {
13
13
  var tabbable = (0, _tabbable.findTabbableDescendants)(node);
14
14
  if (!tabbable.length) {
15
15
  event.preventDefault();
@@ -19,7 +19,7 @@ var scopeTab = function(node, event) {
19
19
  var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];
20
20
  var leavingFinalTabbable = finalTabbable === document.activeElement || node === document.activeElement;
21
21
  // если не является, то передаем обработку таба самому браузеру
22
- if (!leavingFinalTabbable) {
22
+ if (!leavingFinalTabbable || !activeFocusTrap) {
23
23
  return;
24
24
  }
25
25
  // иначе зацкливаемся
@@ -74,7 +74,7 @@ var Popup = component(popupConfig);
74
74
  * Управляет показом/скрытием, подложкой и анимацией визуальной части модального окна.
75
75
  */ export var modalRoot = function(Root) {
76
76
  return /*#__PURE__*/ forwardRef(function(_param, outerRootRef) {
77
- var id = _param.id, withAnimation = _param.withAnimation, onClose = _param.onClose, onOverlayClick = _param.onOverlayClick, onEscKeyDown = _param.onEscKeyDown, _param_closeOnEsc = _param.closeOnEsc, closeOnEsc = _param_closeOnEsc === void 0 ? true : _param_closeOnEsc, _param_closeOnOverlayClick = _param.closeOnOverlayClick, closeOnOverlayClick = _param_closeOnOverlayClick === void 0 ? true : _param_closeOnOverlayClick, withBlur = _param.withBlur, initialFocusRef = _param.initialFocusRef, focusAfterRef = _param.focusAfterRef, zIndex = _param.zIndex, popupInfo = _param.popupInfo, children = _param.children, view = _param.view, opened = _param.opened, isOpen = _param.isOpen, hasBody = _param.hasBody, hasClose = _param.hasClose, resizable = _param.resizable, draggable = _param.draggable, rest = _object_without_properties(_param, [
77
+ var id = _param.id, withAnimation = _param.withAnimation, onClose = _param.onClose, onOverlayClick = _param.onOverlayClick, onEscKeyDown = _param.onEscKeyDown, _param_closeOnEsc = _param.closeOnEsc, closeOnEsc = _param_closeOnEsc === void 0 ? true : _param_closeOnEsc, _param_closeOnOverlayClick = _param.closeOnOverlayClick, closeOnOverlayClick = _param_closeOnOverlayClick === void 0 ? true : _param_closeOnOverlayClick, withBlur = _param.withBlur, _param_isFocusTrapped = _param.isFocusTrapped, isFocusTrapped = _param_isFocusTrapped === void 0 ? true : _param_isFocusTrapped, initialFocusRef = _param.initialFocusRef, focusAfterRef = _param.focusAfterRef, zIndex = _param.zIndex, popupInfo = _param.popupInfo, children = _param.children, view = _param.view, opened = _param.opened, isOpen = _param.isOpen, hasBody = _param.hasBody, hasClose = _param.hasClose, resizable = _param.resizable, draggable = _param.draggable, rest = _object_without_properties(_param, [
78
78
  "id",
79
79
  "withAnimation",
80
80
  "onClose",
@@ -83,6 +83,7 @@ var Popup = component(popupConfig);
83
83
  "closeOnEsc",
84
84
  "closeOnOverlayClick",
85
85
  "withBlur",
86
+ "isFocusTrapped",
86
87
  "initialFocusRef",
87
88
  "focusAfterRef",
88
89
  "zIndex",
@@ -98,7 +99,7 @@ var Popup = component(popupConfig);
98
99
  ]);
99
100
  var innerIsOpen = Boolean(isOpen || opened);
100
101
  var innerHasClose = hasClose === undefined && hasBody || hasClose;
101
- var trapRef = useFocusTrap(true, initialFocusRef, focusAfterRef, true);
102
+ var trapRef = useFocusTrap(isFocusTrapped, initialFocusRef, focusAfterRef, true, !isFocusTrapped);
102
103
  var popupController = usePopupContext();
103
104
  var innerRef = useForkRef(trapRef, outerRootRef);
104
105
  var uniqId = safeUseId();
@@ -160,7 +160,7 @@ export var noteRoot = function(Root) {
160
160
  var contentWidthWithOffsetToken = contentBefore ? "calc(100% - ".concat(contentBeforeWidth, " - var(").concat(contentGapToken, "))") : '100%';
161
161
  var setTruncatedText = function() {
162
162
  var _titleHelperRef_current;
163
- if (!canUseDOM || !text || !(contentWrapperRef === null || contentWrapperRef === void 0 ? void 0 : contentWrapperRef.current) || !(textRenderHelperRef === null || textRenderHelperRef === void 0 ? void 0 : textRenderHelperRef.current) || !width && !height) {
163
+ if (!canUseDOM || !text || typeof text !== 'string' || !(contentWrapperRef === null || contentWrapperRef === void 0 ? void 0 : contentWrapperRef.current) || !(textRenderHelperRef === null || textRenderHelperRef === void 0 ? void 0 : textRenderHelperRef.current) || !width && !height) {
164
164
  return;
165
165
  }
166
166
  var contentHeight = contentWrapperRef.current.offsetHeight;
@@ -1,4 +1,4 @@
1
1
  import { css } from "@emotion/react";
2
2
  import { classes, privateTokens, tokens } from "../../Note.tokens";
3
3
  import { ContentBefore, ContentWrapper, Text, TextHelper, Title, TitleHelper } from "../../Note.styles";
4
- export var base = /*#__PURE__*/ css("padding:var(", tokens.padding, ");border-radius:var(", tokens.borderRadius, ");height:var(", privateTokens.height, ");width:var(", privateTokens.width, ");gap:var(", tokens.gap, ");&.", classes.stretch, "{width:100%;height:100%;}", ContentBefore, "{width:var(", tokens.fixedContentBeforeWidth, ");height:var(", tokens.fixedContentBeforeHeight, ");padding:var(", tokens.fixedContentBeforePadding, ");box-sizing:border-box;}&.", classes.contentAlignCenter, "{align-items:center;padding:var(", tokens.paddingScalable, ");gap:var(", tokens.gapScalable, ");", ContentBefore, "{width:fit-content;height:fit-content;padding:unset;}}", ContentWrapper, "{width:var(", privateTokens.contentWidthWithOffset, ");gap:var(", tokens.contentGap, ");}", Title, ",", TitleHelper, "{width:100%;min-height:var(", tokens.titleLineHeight, ");font-family:var(", tokens.titleFontFamily, ");font-size:var(", tokens.titleFontSize, ");font-style:var(", tokens.titleFontStyle, ");font-weight:var(", tokens.titleFontWeight, ");letter-spacing:var(", tokens.titleLetterSpacing, ");line-height:var(", tokens.titleLineHeight, ");}", Text, ",", TextHelper, "{font-family:var(", tokens.textFontFamily, ");font-size:var(", tokens.textFontSize, ");font-style:var(", tokens.textFontStyle, ");font-weight:var(", tokens.textFontWeight, ");letter-spacing:var(", tokens.textLetterSpacing, ");line-height:var(", tokens.textLineHeight, ");word-break:break-all;}", "base", "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjLWVtb3Rpb24vY29tcG9uZW50cy9Ob3RlL3ZhcmlhdGlvbnMvX3NpemUvYmFzZS50cyIsInNvdXJjZXMiOlsic3JjLWVtb3Rpb24vY29tcG9uZW50cy9Ob3RlL3ZhcmlhdGlvbnMvX3NpemUvYmFzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IGNsYXNzZXMsIHByaXZhdGVUb2tlbnMsIHRva2VucyB9IGZyb20gJy4uLy4uL05vdGUudG9rZW5zJztcbmltcG9ydCB7IENvbnRlbnRCZWZvcmUsIENvbnRlbnRXcmFwcGVyLCBUZXh0LCBUZXh0SGVscGVyLCBUaXRsZSwgVGl0bGVIZWxwZXIgfSBmcm9tICcuLi8uLi9Ob3RlLnN0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBiYXNlID0gY3NzYFxuICAgIHBhZGRpbmc6IHZhcigke3Rva2Vucy5wYWRkaW5nfSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKCR7dG9rZW5zLmJvcmRlclJhZGl1c30pO1xuICAgIGhlaWdodDogdmFyKCR7cHJpdmF0ZVRva2Vucy5oZWlnaHR9KTtcbiAgICB3aWR0aDogdmFyKCR7cHJpdmF0ZVRva2Vucy53aWR0aH0pO1xuICAgIGdhcDogdmFyKCR7dG9rZW5zLmdhcH0pO1xuXG4gICAgJi4ke2NsYXNzZXMuc3RyZXRjaH0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgICR7Q29udGVudEJlZm9yZX0ge1xuICAgICAgICB3aWR0aDogdmFyKCR7dG9rZW5zLmZpeGVkQ29udGVudEJlZm9yZVdpZHRofSk7XG4gICAgICAgIGhlaWdodDogdmFyKCR7dG9rZW5zLmZpeGVkQ29udGVudEJlZm9yZUhlaWdodH0pO1xuICAgICAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMuZml4ZWRDb250ZW50QmVmb3JlUGFkZGluZ30pO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cblxuICAgICYuJHtjbGFzc2VzLmNvbnRlbnRBbGlnbkNlbnRlcn0ge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMucGFkZGluZ1NjYWxhYmxlfSk7XG4gICAgICAgIGdhcDogdmFyKCR7dG9rZW5zLmdhcFNjYWxhYmxlfSk7XG5cbiAgICAgICAgJHtDb250ZW50QmVmb3JlfSB7XG4gICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgICAgICAgICAgcGFkZGluZzogdW5zZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAke0NvbnRlbnRXcmFwcGVyfSB7XG4gICAgICAgIHdpZHRoOiB2YXIoJHtwcml2YXRlVG9rZW5zLmNvbnRlbnRXaWR0aFdpdGhPZmZzZXR9KTtcbiAgICAgICAgZ2FwOiB2YXIoJHt0b2tlbnMuY29udGVudEdhcH0pO1xuICAgIH1cblxuICAgICR7VGl0bGV9LCAke1RpdGxlSGVscGVyfSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiB2YXIoJHt0b2tlbnMudGl0bGVMaW5lSGVpZ2h0fSk7XG5cbiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigke3Rva2Vucy50aXRsZUZvbnRGYW1pbHl9KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoJHt0b2tlbnMudGl0bGVGb250U2l6ZX0pO1xuICAgICAgICBmb250LXN0eWxlOiB2YXIoJHt0b2tlbnMudGl0bGVGb250U3R5bGV9KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigke3Rva2Vucy50aXRsZUZvbnRXZWlnaHR9KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhcigke3Rva2Vucy50aXRsZUxldHRlclNwYWNpbmd9KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigke3Rva2Vucy50aXRsZUxpbmVIZWlnaHR9KTtcbiAgICB9XG5cbiAgICAke1RleHR9LCAke1RleHRIZWxwZXJ9IHtcbiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigke3Rva2Vucy50ZXh0Rm9udEZhbWlseX0pO1xuICAgICAgICBmb250LXNpemU6IHZhcigke3Rva2Vucy50ZXh0Rm9udFNpemV9KTtcbiAgICAgICAgZm9udC1zdHlsZTogdmFyKCR7dG9rZW5zLnRleHRGb250U3R5bGV9KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigke3Rva2Vucy50ZXh0Rm9udFdlaWdodH0pO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCR7dG9rZW5zLnRleHRMZXR0ZXJTcGFjaW5nfSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoJHt0b2tlbnMudGV4dExpbmVIZWlnaHR9KTtcblxuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICAgfVxuYDtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLb0IifQ== */");
4
+ export var base = /*#__PURE__*/ css("padding:var(", tokens.padding, ");border-radius:var(", tokens.borderRadius, ");height:var(", privateTokens.height, ");width:var(", privateTokens.width, ");gap:var(", tokens.gap, ");&.", classes.stretch, "{width:100%;height:100%;}", ContentBefore, "{width:var(", tokens.fixedContentBeforeWidth, ");height:var(", tokens.fixedContentBeforeHeight, ");padding:var(", tokens.fixedContentBeforePadding, ");box-sizing:border-box;}&.", classes.contentAlignCenter, "{align-items:center;padding:var(", tokens.paddingScalable, ");gap:var(", tokens.gapScalable, ");", ContentBefore, "{width:fit-content;height:fit-content;padding:unset;}}", ContentWrapper, "{width:var(", privateTokens.contentWidthWithOffset, ");gap:var(", tokens.contentGap, ");}", Title, ",", TitleHelper, "{width:100%;min-height:var(", tokens.titleLineHeight, ");font-family:var(", tokens.titleFontFamily, ");font-size:var(", tokens.titleFontSize, ");font-style:var(", tokens.titleFontStyle, ");font-weight:var(", tokens.titleFontWeight, ");letter-spacing:var(", tokens.titleLetterSpacing, ");line-height:var(", tokens.titleLineHeight, ");}", Text, ",", TextHelper, "{font-family:var(", tokens.textFontFamily, ");font-size:var(", tokens.textFontSize, ");font-style:var(", tokens.textFontStyle, ");font-weight:var(", tokens.textFontWeight, ");letter-spacing:var(", tokens.textLetterSpacing, ");line-height:var(", tokens.textLineHeight, ");overflow-wrap:break-word;}", "base", "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3JjLWVtb3Rpb24vY29tcG9uZW50cy9Ob3RlL3ZhcmlhdGlvbnMvX3NpemUvYmFzZS50cyIsInNvdXJjZXMiOlsic3JjLWVtb3Rpb24vY29tcG9uZW50cy9Ob3RlL3ZhcmlhdGlvbnMvX3NpemUvYmFzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IGNsYXNzZXMsIHByaXZhdGVUb2tlbnMsIHRva2VucyB9IGZyb20gJy4uLy4uL05vdGUudG9rZW5zJztcbmltcG9ydCB7IENvbnRlbnRCZWZvcmUsIENvbnRlbnRXcmFwcGVyLCBUZXh0LCBUZXh0SGVscGVyLCBUaXRsZSwgVGl0bGVIZWxwZXIgfSBmcm9tICcuLi8uLi9Ob3RlLnN0eWxlcyc7XG5cbmV4cG9ydCBjb25zdCBiYXNlID0gY3NzYFxuICAgIHBhZGRpbmc6IHZhcigke3Rva2Vucy5wYWRkaW5nfSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKCR7dG9rZW5zLmJvcmRlclJhZGl1c30pO1xuICAgIGhlaWdodDogdmFyKCR7cHJpdmF0ZVRva2Vucy5oZWlnaHR9KTtcbiAgICB3aWR0aDogdmFyKCR7cHJpdmF0ZVRva2Vucy53aWR0aH0pO1xuICAgIGdhcDogdmFyKCR7dG9rZW5zLmdhcH0pO1xuXG4gICAgJi4ke2NsYXNzZXMuc3RyZXRjaH0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cblxuICAgICR7Q29udGVudEJlZm9yZX0ge1xuICAgICAgICB3aWR0aDogdmFyKCR7dG9rZW5zLmZpeGVkQ29udGVudEJlZm9yZVdpZHRofSk7XG4gICAgICAgIGhlaWdodDogdmFyKCR7dG9rZW5zLmZpeGVkQ29udGVudEJlZm9yZUhlaWdodH0pO1xuICAgICAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMuZml4ZWRDb250ZW50QmVmb3JlUGFkZGluZ30pO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cblxuICAgICYuJHtjbGFzc2VzLmNvbnRlbnRBbGlnbkNlbnRlcn0ge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMucGFkZGluZ1NjYWxhYmxlfSk7XG4gICAgICAgIGdhcDogdmFyKCR7dG9rZW5zLmdhcFNjYWxhYmxlfSk7XG5cbiAgICAgICAgJHtDb250ZW50QmVmb3JlfSB7XG4gICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgICAgICAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICAgICAgICAgICAgcGFkZGluZzogdW5zZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAke0NvbnRlbnRXcmFwcGVyfSB7XG4gICAgICAgIHdpZHRoOiB2YXIoJHtwcml2YXRlVG9rZW5zLmNvbnRlbnRXaWR0aFdpdGhPZmZzZXR9KTtcbiAgICAgICAgZ2FwOiB2YXIoJHt0b2tlbnMuY29udGVudEdhcH0pO1xuICAgIH1cblxuICAgICR7VGl0bGV9LCAke1RpdGxlSGVscGVyfSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiB2YXIoJHt0b2tlbnMudGl0bGVMaW5lSGVpZ2h0fSk7XG5cbiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigke3Rva2Vucy50aXRsZUZvbnRGYW1pbHl9KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoJHt0b2tlbnMudGl0bGVGb250U2l6ZX0pO1xuICAgICAgICBmb250LXN0eWxlOiB2YXIoJHt0b2tlbnMudGl0bGVGb250U3R5bGV9KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigke3Rva2Vucy50aXRsZUZvbnRXZWlnaHR9KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhcigke3Rva2Vucy50aXRsZUxldHRlclNwYWNpbmd9KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigke3Rva2Vucy50aXRsZUxpbmVIZWlnaHR9KTtcbiAgICB9XG5cbiAgICAke1RleHR9LCAke1RleHRIZWxwZXJ9IHtcbiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigke3Rva2Vucy50ZXh0Rm9udEZhbWlseX0pO1xuICAgICAgICBmb250LXNpemU6IHZhcigke3Rva2Vucy50ZXh0Rm9udFNpemV9KTtcbiAgICAgICAgZm9udC1zdHlsZTogdmFyKCR7dG9rZW5zLnRleHRGb250U3R5bGV9KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigke3Rva2Vucy50ZXh0Rm9udFdlaWdodH0pO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKCR7dG9rZW5zLnRleHRMZXR0ZXJTcGFjaW5nfSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoJHt0b2tlbnMudGV4dExpbmVIZWlnaHR9KTtcblxuICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgIH1cbmA7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS29CIn0= */");
@@ -135,11 +135,11 @@ function _unsupported_iterable_to_array(o, minLen) {
135
135
  if (n === "Map" || n === "Set") return Array.from(n);
136
136
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
137
137
  }
138
- import React, { forwardRef, useRef, useState, useEffect } from "react";
138
+ import React, { forwardRef, useRef, useState, useEffect, useCallback } from "react";
139
139
  import cls from "classnames";
140
140
  import { getPlacements } from "../../utils";
141
141
  import { range, processTimeInput, animateScrollTo } from "./utils";
142
- import { base, StyledInput, StyledPopover, StyledTimeColumn, StyledTimeItem, StyledTimePicker } from "./TimePicker.styles";
142
+ import { base, StyledInput, StyledPopover, StyledTimeColumn, StyledTimeItem, StyledTimePicker, CustomScrollbar, ScrollbarTrack, ScrollbarThumb, StyledEmpty } from "./TimePicker.styles";
143
143
  import { classes } from "./TimePicker.tokens";
144
144
  import { base as sizeCSS } from "./variations/_size/base";
145
145
  import { base as viewCSS } from "./variations/_view/base";
@@ -187,6 +187,15 @@ export var timePickerRoot = function(Root) {
187
187
  var minutesColumnRef = useRef(null);
188
188
  var secondsColumnRef = useRef(null);
189
189
  var timeItemRefs = useRef({});
190
+ var hoursScrollbarRef = useRef(null);
191
+ var minutesScrollbarRef = useRef(null);
192
+ var secondsScrollbarRef = useRef(null);
193
+ var hoursThumbRef = useRef(null);
194
+ var minutesThumbRef = useRef(null);
195
+ var secondsThumbRef = useRef(null);
196
+ var hoursHideTimeoutRef = useRef(null);
197
+ var minutesHideTimeoutRef = useRef(null);
198
+ var secondsHideTimeoutRef = useRef(null);
190
199
  var _useState = _sliced_to_array(useState(opened), 2), isInnerOpen = _useState[0], setIsInnerOpen = _useState[1];
191
200
  var _useState1 = _sliced_to_array(useState(outerValue || ''), 2), innerTime = _useState1[0], setInnerTime = _useState1[1];
192
201
  var _useState2 = _sliced_to_array(useState({
@@ -197,11 +206,154 @@ export var timePickerRoot = function(Root) {
197
206
  }), 2), activeTime = _useState2[0], setActiveTime = _useState2[1];
198
207
  var _useState3 = _sliced_to_array(useState(0), 2), itemHeight = _useState3[0], setItemHeight = _useState3[1];
199
208
  var _useState4 = _sliced_to_array(useState(0), 2), gap = _useState4[0], setGap = _useState4[1];
209
+ var _useState5 = _sliced_to_array(useState({
210
+ isVisible: false,
211
+ thumbHeight: 0,
212
+ thumbPosition: 0,
213
+ isDragging: false
214
+ }), 2), hoursScrollbar = _useState5[0], setHoursScrollbar = _useState5[1];
215
+ var _useState6 = _sliced_to_array(useState({
216
+ isVisible: false,
217
+ thumbHeight: 0,
218
+ thumbPosition: 0,
219
+ isDragging: false
220
+ }), 2), minutesScrollbar = _useState6[0], setMinutesScrollbar = _useState6[1];
221
+ var _useState7 = _sliced_to_array(useState({
222
+ isVisible: false,
223
+ thumbHeight: 0,
224
+ thumbPosition: 0,
225
+ isDragging: false
226
+ }), 2), secondsScrollbar = _useState7[0], setSecondsScrollbar = _useState7[1];
200
227
  var viewValue = outerValue !== null && outerValue !== void 0 ? outerValue : innerTime;
201
228
  var format = columnsQuantity === 3 ? 'HH:mm:ss' : 'HH:mm';
202
229
  var hours = range(24);
203
230
  var minutes = range(60);
204
231
  var seconds = range(60);
232
+ var calculateScrollbar = useCallback(function(columnRef) {
233
+ if (!columnRef.current) return {
234
+ thumbHeight: 0,
235
+ thumbPosition: 0
236
+ };
237
+ var _columnRef_current = columnRef.current, scrollTop = _columnRef_current.scrollTop, scrollHeight = _columnRef_current.scrollHeight, clientHeight = _columnRef_current.clientHeight;
238
+ var trackHeight = clientHeight;
239
+ var thumbHeight = Math.max(trackHeight / scrollHeight * trackHeight, 20); // Минимальная высота 20px
240
+ var maxScroll = scrollHeight - clientHeight;
241
+ var thumbPosition = maxScroll > 0 ? scrollTop / maxScroll * (trackHeight - thumbHeight) : 0;
242
+ return {
243
+ thumbHeight: thumbHeight,
244
+ thumbPosition: thumbPosition
245
+ };
246
+ }, []);
247
+ var showScrollbarWithDelay = useCallback(function(setScrollbar, timeoutRef, columnRef) {
248
+ if (timeoutRef.current) {
249
+ clearTimeout(timeoutRef.current);
250
+ }
251
+ updateScrollbar(columnRef, setScrollbar, true);
252
+ timeoutRef.current = setTimeout(function() {
253
+ setScrollbar(function(prev) {
254
+ return _object_spread_props(_object_spread({}, prev), {
255
+ isVisible: false
256
+ });
257
+ });
258
+ timeoutRef.current = null;
259
+ }, 2000);
260
+ }, []);
261
+ var updateScrollbar = useCallback(function(columnRef, setScrollbar) {
262
+ var show = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
263
+ if (!columnRef.current) return;
264
+ var _calculateScrollbar = calculateScrollbar(columnRef), thumbHeight = _calculateScrollbar.thumbHeight, thumbPosition = _calculateScrollbar.thumbPosition;
265
+ setScrollbar(function(prev) {
266
+ return _object_spread_props(_object_spread({}, prev), {
267
+ thumbHeight: thumbHeight,
268
+ thumbPosition: thumbPosition,
269
+ isVisible: show || prev.isVisible
270
+ });
271
+ });
272
+ }, [
273
+ calculateScrollbar
274
+ ]);
275
+ var handleColumnScroll = useCallback(function(columnRef, setScrollbar, timeoutRef) {
276
+ showScrollbarWithDelay(setScrollbar, timeoutRef, columnRef);
277
+ }, [
278
+ showScrollbarWithDelay
279
+ ]);
280
+ var createScrollbarDragHandler = useCallback(function(columnRef, setScrollbar, timeoutRef) {
281
+ return function(e) {
282
+ e.preventDefault();
283
+ var thumb = e.currentTarget;
284
+ var track = thumb.parentElement;
285
+ if (!columnRef.current || !track) return;
286
+ if (timeoutRef.current) {
287
+ clearTimeout(timeoutRef.current);
288
+ timeoutRef.current = null;
289
+ }
290
+ var startY = e.clientY;
291
+ var startThumbPosition = parseFloat(thumb.style.top || '0');
292
+ var trackRect = track.getBoundingClientRect();
293
+ var trackHeight = trackRect.height;
294
+ var thumbHeight = thumb.offsetHeight;
295
+ var _columnRef_current = columnRef.current, scrollHeight = _columnRef_current.scrollHeight, clientHeight = _columnRef_current.clientHeight;
296
+ var maxScroll = scrollHeight - clientHeight;
297
+ var handleMouseMove = function(moveEvent) {
298
+ var deltaY = moveEvent.clientY - startY;
299
+ var newThumbPosition = Math.max(0, Math.min(trackHeight - thumbHeight, startThumbPosition + deltaY));
300
+ var scrollPercentage = newThumbPosition / (trackHeight - thumbHeight);
301
+ var newScrollTop = scrollPercentage * maxScroll;
302
+ if (columnRef.current) {
303
+ columnRef.current.scrollTop = newScrollTop;
304
+ }
305
+ setScrollbar(function(prev) {
306
+ return _object_spread_props(_object_spread({}, prev), {
307
+ thumbPosition: newThumbPosition,
308
+ isDragging: true,
309
+ isVisible: true
310
+ });
311
+ });
312
+ };
313
+ var handleMouseUp = function() {
314
+ document.removeEventListener('mousemove', handleMouseMove);
315
+ document.removeEventListener('mouseup', handleMouseUp);
316
+ setScrollbar(function(prev) {
317
+ return _object_spread_props(_object_spread({}, prev), {
318
+ isDragging: false
319
+ });
320
+ });
321
+ showScrollbarWithDelay(setScrollbar, timeoutRef, columnRef);
322
+ };
323
+ document.addEventListener('mousemove', handleMouseMove);
324
+ document.addEventListener('mouseup', handleMouseUp);
325
+ };
326
+ }, [
327
+ showScrollbarWithDelay
328
+ ]);
329
+ useEffect(function() {
330
+ return function() {
331
+ [
332
+ hoursHideTimeoutRef,
333
+ minutesHideTimeoutRef,
334
+ secondsHideTimeoutRef
335
+ ].forEach(function(timeoutRef) {
336
+ if (timeoutRef.current) {
337
+ clearTimeout(timeoutRef.current);
338
+ }
339
+ });
340
+ };
341
+ }, []);
342
+ useEffect(function() {
343
+ if (isInnerOpen) {
344
+ setTimeout(function() {
345
+ updateScrollbar(hoursColumnRef, setHoursScrollbar);
346
+ updateScrollbar(minutesColumnRef, setMinutesScrollbar);
347
+ if (columnsQuantity === 3) {
348
+ updateScrollbar(secondsColumnRef, setSecondsScrollbar);
349
+ }
350
+ }, 100);
351
+ }
352
+ }, [
353
+ isInnerOpen,
354
+ columnsQuantity,
355
+ updateScrollbar
356
+ ]);
205
357
  useEffect(function() {
206
358
  if (viewValue) {
207
359
  var timeString = viewValue;
@@ -250,6 +402,15 @@ export var timePickerRoot = function(Root) {
250
402
  if (columnRef.current && index !== null) {
251
403
  var scrollPosition = index * (itemHeight + gap);
252
404
  animateScrollTo(columnRef.current, scrollPosition);
405
+ setTimeout(function() {
406
+ if (columnRef === hoursColumnRef) {
407
+ updateScrollbar(hoursColumnRef, setHoursScrollbar);
408
+ } else if (columnRef === minutesColumnRef) {
409
+ updateScrollbar(minutesColumnRef, setMinutesScrollbar);
410
+ } else if (columnRef === secondsColumnRef) {
411
+ updateScrollbar(secondsColumnRef, setSecondsScrollbar);
412
+ }
413
+ }, 300);
253
414
  }
254
415
  };
255
416
  scrollToActiveItem(hoursColumnRef, activeTime.hours);
@@ -258,7 +419,83 @@ export var timePickerRoot = function(Root) {
258
419
  }, [
259
420
  activeTime,
260
421
  isInnerOpen,
261
- itemHeight
422
+ itemHeight,
423
+ gap,
424
+ updateScrollbar
425
+ ]);
426
+ useEffect(function() {
427
+ var hoursColumn = hoursColumnRef.current;
428
+ var minutesColumn = minutesColumnRef.current;
429
+ var secondsColumn = secondsColumnRef.current;
430
+ var handleHoursScroll = function() {
431
+ return handleColumnScroll(hoursColumnRef, setHoursScrollbar, hoursHideTimeoutRef);
432
+ };
433
+ var handleMinutesScroll = function() {
434
+ return handleColumnScroll(minutesColumnRef, setMinutesScrollbar, minutesHideTimeoutRef);
435
+ };
436
+ var handleSecondsScroll = function() {
437
+ return handleColumnScroll(secondsColumnRef, setSecondsScrollbar, secondsHideTimeoutRef);
438
+ };
439
+ if (hoursColumn) {
440
+ hoursColumn.addEventListener('scroll', handleHoursScroll);
441
+ }
442
+ if (minutesColumn) {
443
+ minutesColumn.addEventListener('scroll', handleMinutesScroll);
444
+ }
445
+ if (secondsColumn) {
446
+ secondsColumn.addEventListener('scroll', handleSecondsScroll);
447
+ }
448
+ return function() {
449
+ if (hoursColumn) {
450
+ hoursColumn.removeEventListener('scroll', handleHoursScroll);
451
+ }
452
+ if (minutesColumn) {
453
+ minutesColumn.removeEventListener('scroll', handleMinutesScroll);
454
+ }
455
+ if (secondsColumn) {
456
+ secondsColumn.removeEventListener('scroll', handleSecondsScroll);
457
+ }
458
+ };
459
+ }, [
460
+ isInnerOpen,
461
+ handleColumnScroll
462
+ ]);
463
+ useEffect(function() {
464
+ var hoursColumn = hoursColumnRef.current;
465
+ var minutesColumn = minutesColumnRef.current;
466
+ var secondsColumn = secondsColumnRef.current;
467
+ var handleHoursMouseEnter = function() {
468
+ return showScrollbarWithDelay(setHoursScrollbar, hoursHideTimeoutRef, hoursColumnRef);
469
+ };
470
+ var handleMinutesMouseEnter = function() {
471
+ return showScrollbarWithDelay(setMinutesScrollbar, minutesHideTimeoutRef, minutesColumnRef);
472
+ };
473
+ var handleSecondsMouseEnter = function() {
474
+ return showScrollbarWithDelay(setSecondsScrollbar, secondsHideTimeoutRef, secondsColumnRef);
475
+ };
476
+ if (hoursColumn) {
477
+ hoursColumn.addEventListener('mouseenter', handleHoursMouseEnter);
478
+ }
479
+ if (minutesColumn) {
480
+ minutesColumn.addEventListener('mouseenter', handleMinutesMouseEnter);
481
+ }
482
+ if (secondsColumn) {
483
+ secondsColumn.addEventListener('mouseenter', handleSecondsMouseEnter);
484
+ }
485
+ return function() {
486
+ if (hoursColumn) {
487
+ hoursColumn.removeEventListener('mouseenter', handleHoursMouseEnter);
488
+ }
489
+ if (minutesColumn) {
490
+ minutesColumn.removeEventListener('mouseenter', handleMinutesMouseEnter);
491
+ }
492
+ if (secondsColumn) {
493
+ secondsColumn.removeEventListener('mouseenter', handleSecondsMouseEnter);
494
+ }
495
+ };
496
+ }, [
497
+ isInnerOpen,
498
+ showScrollbarWithDelay
262
499
  ]);
263
500
  var handleToggle = function() {
264
501
  if (disabled || readonly) return;
@@ -503,11 +740,17 @@ export var timePickerRoot = function(Root) {
503
740
  labelPlacement: labelPlacement,
504
741
  keepPlaceholder: keepPlaceholder
505
742
  });
506
- var renderTimeColumn = function(values, column, columnRef) {
507
- return /*#__PURE__*/ React.createElement(StyledTimeColumn, {
743
+ var renderTimeColumn = function(values, column, columnRef, scrollbarState, setScrollbar, scrollbarRef, thumbRef, timeoutRef) {
744
+ return /*#__PURE__*/ React.createElement("div", {
745
+ style: {
746
+ position: 'relative',
747
+ width: '100%'
748
+ }
749
+ }, /*#__PURE__*/ React.createElement(StyledTimeColumn, {
508
750
  key: column,
509
751
  ref: columnRef,
510
- height: dropdownHeight
752
+ height: dropdownHeight,
753
+ className: classes.timeColumn
511
754
  }, values.map(function(value, index) {
512
755
  return /*#__PURE__*/ React.createElement(StyledTimeItem, {
513
756
  key: value,
@@ -522,7 +765,17 @@ export var timePickerRoot = function(Root) {
522
765
  return handleTimeItemKeyDown(e, column, value);
523
766
  }
524
767
  }, value);
525
- }));
768
+ }), /*#__PURE__*/ React.createElement(StyledEmpty, null)), /*#__PURE__*/ React.createElement(CustomScrollbar, {
769
+ ref: scrollbarRef,
770
+ className: cls(_define_property({}, classes.scrollbarVisible, scrollbarState.isVisible))
771
+ }, /*#__PURE__*/ React.createElement(ScrollbarTrack, null, /*#__PURE__*/ React.createElement(ScrollbarThumb, {
772
+ ref: thumbRef,
773
+ style: {
774
+ height: "".concat(scrollbarState.thumbHeight, "px"),
775
+ top: "".concat(scrollbarState.thumbPosition, "px")
776
+ },
777
+ onMouseDown: createScrollbarDragHandler(columnRef, setScrollbar, timeoutRef)
778
+ }))));
526
779
  };
527
780
  return /*#__PURE__*/ React.createElement(Root, _object_spread({
528
781
  stretched: stretched,
@@ -555,7 +808,7 @@ export var timePickerRoot = function(Root) {
555
808
  stretched: stretched
556
809
  }, /*#__PURE__*/ React.createElement(StyledTimePicker, {
557
810
  width: dropdownWidth
558
- }, renderTimeColumn(hours, 'hours', hoursColumnRef), renderTimeColumn(minutes, 'minutes', minutesColumnRef), columnsQuantity === 3 && renderTimeColumn(seconds, 'seconds', secondsColumnRef)))));
811
+ }, renderTimeColumn(hours, 'hours', hoursColumnRef, hoursScrollbar, setHoursScrollbar, hoursScrollbarRef, hoursThumbRef, hoursHideTimeoutRef), renderTimeColumn(minutes, 'minutes', minutesColumnRef, minutesScrollbar, setMinutesScrollbar, minutesScrollbarRef, minutesThumbRef, minutesHideTimeoutRef), columnsQuantity === 3 && renderTimeColumn(seconds, 'seconds', secondsColumnRef, secondsScrollbar, setSecondsScrollbar, secondsScrollbarRef, secondsThumbRef, secondsHideTimeoutRef)))));
559
812
  });
560
813
  };
561
814
  export var timePickerConfig = {