@enact/limestone 1.3.0 → 1.10.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 (200) hide show
  1. package/.github/workflows/ci-branch.yml +21 -0
  2. package/.github/workflows/ci-pull-request.yml +16 -0
  3. package/.github/workflows/ci-reusable.yml +73 -0
  4. package/ActionGuide/ActionGuide.d.ts +5 -4
  5. package/ActionGuide/ActionGuide.module.css +1 -1
  6. package/Alert/Alert.d.ts +13 -2
  7. package/Alert/Alert.js +39 -5
  8. package/Alert/Alert.module.css +48 -1
  9. package/Alert/tests/Alert-specs.js +91 -0
  10. package/BodyText/BodyText.d.ts +5 -4
  11. package/BodyText/BodyText.module.css +7 -7
  12. package/Button/Button.d.ts +17 -12
  13. package/Button/Button.js +1 -1
  14. package/Button/Button.module.css +195 -268
  15. package/Button/tests/Button-specs.js +26 -0
  16. package/CHANGELOG.md +254 -0
  17. package/Card/Card.d.ts +40 -12
  18. package/Card/Card.js +164 -28
  19. package/Card/Card.module.css +277 -58
  20. package/Card/tests/Card-specs.js +67 -3
  21. package/Checkbox/Checkbox.d.ts +8 -7
  22. package/Checkbox/Checkbox.js +3 -1
  23. package/Checkbox/Checkbox.module.css +213 -120
  24. package/Checkbox/tests/Checkbox-specs.js +1 -1
  25. package/CheckboxItem/CheckboxItem.d.ts +22 -7
  26. package/CheckboxItem/CheckboxItem.js +71 -4
  27. package/Chips/Chip.js +72 -13
  28. package/Chips/Chip.module.css +3 -3
  29. package/Chips/Chips.js +37 -17
  30. package/Chips/Chips.module.css +1 -1
  31. package/Chips/tests/Chip-specs.js +43 -13
  32. package/Chips/tests/Chips-specs.js +31 -21
  33. package/ColorPicker/ColorPicker.js +27 -25
  34. package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +4 -5
  35. package/ContextualPopupDecorator/ContextualPopup.module.css +34 -34
  36. package/ContextualPopupDecorator/ContextualPopupDecorator.js +567 -549
  37. package/DatePicker/DatePicker.d.ts +4 -5
  38. package/DayPicker/DayPicker.d.ts +8 -7
  39. package/DayPicker/DaySelectorDecorator.js +12 -7
  40. package/Dropdown/Dropdown.d.ts +11 -13
  41. package/Dropdown/Dropdown.module.css +13 -9
  42. package/Dropdown/DropdownList.js +80 -54
  43. package/FixedPopupPanels/FixedPopupPanels.d.ts +4 -2
  44. package/FixedPopupPanels/FixedPopupPanels.module.css +18 -18
  45. package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +23 -23
  46. package/FlexiblePopupPanels/useNavButtonFocus.js +7 -10
  47. package/FormCheckboxItem/FormCheckboxItem.d.ts +5 -4
  48. package/Heading/Heading.d.ts +9 -8
  49. package/Heading/Heading.js +2 -2
  50. package/Heading/Heading.module.css +5 -5
  51. package/Icon/Icon.d.ts +15 -4
  52. package/Icon/Icon.js +49 -2
  53. package/Icon/Icon.module.css +1 -1
  54. package/Icon/IconList.js +27 -1
  55. package/IconItem/IconItem.d.ts +13 -12
  56. package/IconItem/IconItem.js +15 -0
  57. package/IconItem/IconItem.module.css +107 -1
  58. package/IconItem/tests/IconItem-specs.js +30 -1
  59. package/Image/Image.d.ts +5 -4
  60. package/Image/Image.js +6 -4
  61. package/ImageItem/ImageItem.d.ts +11 -10
  62. package/ImageItem/ImageItem.js +37 -31
  63. package/ImageItem/ImageItem.module.css +30 -30
  64. package/ImageItem/tests/ImageItem-specs.js +3 -10
  65. package/Input/Input.js +21 -3
  66. package/Input/Input.module.css +37 -8
  67. package/Input/InputField.js +79 -24
  68. package/Input/InputField.module.css +273 -41
  69. package/Input/InputFieldDecoratorIcon.js +1 -0
  70. package/Input/InputFieldSpotlightDecorator.js +257 -228
  71. package/Input/index.d.ts +120 -111
  72. package/Input/tests/Input-specs.js +26 -0
  73. package/Input/tests/InputField-specs.js +170 -3
  74. package/Input/tests/InputPopup-specs.js +1 -1
  75. package/Item/Item.d.ts +16 -9
  76. package/Item/Item.js +20 -2
  77. package/Item/Item.module.css +1 -1
  78. package/KeyGuide/KeyGuide.d.ts +8 -7
  79. package/KeyGuide/KeyGuide.js +29 -27
  80. package/KeyGuide/KeyGuide.module.css +25 -1
  81. package/Marquee/Marquee.d.ts +2 -4
  82. package/MediaOverlay/MediaOverlay.d.ts +12 -11
  83. package/MediaOverlay/MediaOverlay.js +43 -21
  84. package/MediaOverlay/MediaOverlay.module.css +114 -15
  85. package/MediaOverlay/tests/MediaOverlay-specs.js +29 -0
  86. package/MediaPlayer/MediaControls.js +195 -13
  87. package/MediaPlayer/MediaControls.module.css +3 -2
  88. package/MediaPlayer/MediaSlider.module.css +7 -20
  89. package/MediaPlayer/index.d.ts +59 -7
  90. package/MediaPlayer/tests/util-specs.js +4 -1
  91. package/PageViews/PageViews.js +232 -82
  92. package/PageViews/PageViews.module.css +3 -0
  93. package/PageViews/PageViewsRouter.js +100 -42
  94. package/PageViews/tests/PageViews-specs.js +171 -0
  95. package/Panels/Header.js +54 -34
  96. package/Panels/Header.module.css +83 -31
  97. package/Panels/Panel.module.css +1 -1
  98. package/Panels/index.d.ts +7 -8
  99. package/Picker/Picker.d.ts +4 -5
  100. package/Picker/Picker.module.css +2 -2
  101. package/Popup/Popup.js +245 -242
  102. package/Popup/Popup.module.css +24 -24
  103. package/PopupTabLayout/PopupTabLayout.d.ts +5 -7
  104. package/PopupTabLayout/PopupTabLayout.js +26 -18
  105. package/PopupTabLayout/PopupTabLayout.module.css +53 -16
  106. package/PopupTabLayout/PopupTabLayoutStateContext.js +8 -0
  107. package/ProgressBar/ProgressBar.d.ts +5 -4
  108. package/ProgressBar/ProgressBarTooltip.module.css +12 -12
  109. package/ProgressButton/ProgressButton.d.ts +4 -5
  110. package/QuickGuidePanels/QuickGuidePanels.module.css +2 -2
  111. package/RadioItem/RadioItem.d.ts +18 -5
  112. package/RadioItem/RadioItem.js +69 -2
  113. package/RadioItem/RadioItem.module.css +36 -36
  114. package/RangePicker/RangePicker.module.css +2 -2
  115. package/Scroller/EditableWrapper.js +28 -18
  116. package/Scroller/Scroller.d.ts +20 -16
  117. package/Scroller/Scroller.js +20 -13
  118. package/Scroller/Scroller.module.css +4 -4
  119. package/Scroller/useThemeScroller.js +3 -3
  120. package/Slider/Slider.d.ts +20 -14
  121. package/Slider/Slider.js +71 -14
  122. package/Slider/Slider.module.css +464 -91
  123. package/Slider/SliderBehaviorDecorator.js +16 -14
  124. package/Slider/tests/Slider-specs.js +53 -1
  125. package/Slider/utils.js +23 -7
  126. package/Spinner/Spinner.d.ts +5 -4
  127. package/Spinner/Spinner.js +10 -8
  128. package/Spinner/Spinner.module.css +9 -9
  129. package/Steps/Steps.d.ts +5 -4
  130. package/Steps/Steps.js +9 -5
  131. package/Switch/Switch.d.ts +8 -7
  132. package/Switch/Switch.module.css +100 -13
  133. package/SwitchItem/SwitchItem.d.ts +9 -6
  134. package/TabLayout/RefocusDecorator.js +26 -18
  135. package/TabLayout/TabGroup.js +3 -2
  136. package/TabLayout/TabGroup.module.css +2 -2
  137. package/TabLayout/TabLayout.d.ts +6 -0
  138. package/TabLayout/TabLayout.js +11 -1
  139. package/TabLayout/TabLayout.module.css +18 -0
  140. package/TabLayout/tests/TabGroup-specs.js +1 -1
  141. package/TabLayout/tests/TabLayout-specs.js +52 -0
  142. package/ThemeDecorator/AccessibilityDecorator.js +12 -11
  143. package/ThemeDecorator/I18nFontDecorator.js +6 -4
  144. package/ThemeDecorator/ThemeDecorator.d.ts +16 -10
  145. package/ThemeDecorator/ThemeDecorator.js +24 -9
  146. package/ThemeDecorator/fontGenerator.js +1 -1
  147. package/ThemeDecorator/screenTypes.json +1 -0
  148. package/TimePicker/TimePicker.module.css +1 -1
  149. package/TimePicker/TimePickerBase.js +5 -3
  150. package/TooltipDecorator/Tooltip.module.css +1 -2
  151. package/TooltipDecorator/TooltipDecorator.js +12 -7
  152. package/TooltipDecorator/tests/useTooltip-specs.js +5 -2
  153. package/TooltipDecorator/tests/util-specs.js +12 -0
  154. package/TooltipDecorator/useTooltip.js +1 -1
  155. package/TooltipDecorator/util.js +18 -11
  156. package/VideoPlayer/Feedback.js +3 -0
  157. package/VideoPlayer/Feedback.module.css +5 -9
  158. package/VideoPlayer/FeedbackIcons.js +1 -1
  159. package/VideoPlayer/FeedbackTooltip.module.css +55 -11
  160. package/VideoPlayer/VideoPlayer.d.ts +44 -18
  161. package/VideoPlayer/VideoPlayer.js +153 -47
  162. package/VideoPlayer/VideoPlayer.module.css +28 -11
  163. package/VirtualList/VirtualList.d.ts +9 -2
  164. package/VirtualList/VirtualList.js +51 -24
  165. package/VirtualList/tests/VirtualGridList-translate-specs.js +3 -0
  166. package/VirtualList/tests/VirtualList-specs.js +28 -1
  167. package/VirtualList/tests/VirtualList-translate-specs.js +4 -1
  168. package/VirtualList/useSpotlight.js +1 -1
  169. package/WizardPanels/WizardPanels.module.css +2 -2
  170. package/WizardPanels/index.d.ts +4 -2
  171. package/fonts/Limestone_Icons.ttf +0 -0
  172. package/internal/$L/$L.js +3 -3
  173. package/internal/AsyncRenderChildren/AsyncRenderChildren.js +9 -5
  174. package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +4 -1
  175. package/internal/DateComponentPicker/DateComponentPicker.module.css +2 -2
  176. package/internal/DateTime/DateTime.module.css +1 -0
  177. package/internal/DateTime/DateTimeDecorator.js +5 -4
  178. package/internal/Panels/PanelsRouter.js +48 -31
  179. package/internal/Panels/useAutoFocus.js +10 -6
  180. package/internal/Panels/useFocusOnTransition.js +4 -3
  181. package/internal/Picker/Picker.js +7 -5
  182. package/internal/Picker/Picker.module.css +2 -2
  183. package/internal/Picker/SpottablePicker.js +15 -13
  184. package/internal/SharedStateDecorator/SharedStateDecorator.js +78 -99
  185. package/internal/validators/validators.js +21 -2
  186. package/package.json +18 -15
  187. package/styles/colors-highcontrast.less +9 -1
  188. package/styles/colors.less +12 -7
  189. package/styles/motion-mixins.less +66 -0
  190. package/styles/motions.less +78 -0
  191. package/styles/variables.less +176 -150
  192. package/useScroll/HoverToScroll.js +23 -17
  193. package/useScroll/Scrollbar.js +14 -10
  194. package/useScroll/ScrollbarPlaceholder.js +3 -5
  195. package/useScroll/ScrollbarTrack.js +7 -5
  196. package/useScroll/ScrollbarTrack.module.css +8 -8
  197. package/useScroll/useEvent.js +14 -3
  198. package/useScroll/useScroll.js +12 -2
  199. package/useScroll/useScroll.module.css +6 -6
  200. package/.travis.yml +0 -40
@@ -48,9 +48,10 @@ var getBoundsPropertyNames = function getBoundsPropertyNames(direction) {
48
48
  };
49
49
  };
50
50
  var hoverToScrollMultiplier = {
51
- horizontal: 0.015,
52
- vertical: 0.04
51
+ horizontal: 0.008,
52
+ vertical: 0.02
53
53
  };
54
+ var hoverToScrollDelay = 0.7;
54
55
  var directionToFocus = {
55
56
  horizontal: {
56
57
  before: 'right',
@@ -70,7 +71,8 @@ var directionToFocus = {
70
71
  * @ui
71
72
  * @private
72
73
  */
73
- var HoverToScrollBase = function HoverToScrollBase(props) {
74
+ var _HoverToScrollBase = function HoverToScrollBase(props) {
75
+ (0, _util.checkPropTypes)(_HoverToScrollBase, props);
74
76
  var direction = props.direction,
75
77
  scrollContainer = props.scrollContainerHandle.current,
76
78
  _props$scrollObserver = props.scrollObserver,
@@ -147,13 +149,16 @@ var HoverToScrollBase = function HoverToScrollBase(props) {
147
149
  bounds[clientSize] *
148
150
  // scroll page size
149
151
  hoverToScrollMultiplier[direction]; // a scrolling speed factor
150
-
152
+ var startTime = (0, _util.perfNow)();
151
153
  mutableRef.current.hoveredPosition = position;
152
- mutableRef.current.stopScrollByHover = false;
153
- var _scrollByHover = function scrollByHover() {
154
+ mutableRef.current.stopScrollByHover = scrollContainer.scrolling; // stop scrollByHover when it is in scrolling
155
+
156
+ var _scrollByHover = function scrollByHover(currentTime) {
154
157
  if (!mutableRef.current.stopScrollByHover) {
158
+ var elapsed = (currentTime - startTime) / 1000;
159
+ var distanceMultiplier = elapsed < hoverToScrollDelay ? 0 : Math.min(elapsed - hoverToScrollDelay / 1.5, 1);
155
160
  scrollContainer.scrollTo({
156
- position: _defineProperty({}, axis, (0, _util.clamp)(0, bounds[maxPosition], scrollContainer[scrollPosition] + distance)),
161
+ position: _defineProperty({}, axis, (0, _util.clamp)(0, bounds[maxPosition], scrollContainer[scrollPosition] + distance * distanceMultiplier)),
157
162
  animate: false
158
163
  });
159
164
  startRaf(_scrollByHover);
@@ -229,8 +234,8 @@ var HoverToScrollBase = function HoverToScrollBase(props) {
229
234
  children: [before ? renderHoverArea('before') : null, after ? renderHoverArea('after') : null]
230
235
  });
231
236
  };
232
- HoverToScrollBase.displayName = 'HoverToScrollBase';
233
- HoverToScrollBase.propTypes = /** @lends limestone/useScroll.HoverToScroll.HoverToScrollBase.prototype */{
237
+ _HoverToScrollBase.displayName = 'HoverToScrollBase';
238
+ _HoverToScrollBase.propTypes = /** @lends limestone/useScroll.HoverToScroll.HoverToScrollBase.prototype */{
234
239
  direction: _propTypes["default"].string,
235
240
  scrollContainerHandle: _propTypes["default"].object
236
241
  };
@@ -243,23 +248,24 @@ HoverToScrollBase.propTypes = /** @lends limestone/useScroll.HoverToScroll.Hover
243
248
  * @ui
244
249
  * @private
245
250
  */
246
- var HoverToScroll = exports.HoverToScroll = function HoverToScroll(_ref2) {
247
- var scrollContainerHandle = _ref2.scrollContainerHandle,
248
- rest = _objectWithoutProperties(_ref2, _excluded);
251
+ var _HoverToScroll = exports.HoverToScroll = function HoverToScroll(props) {
252
+ (0, _util.checkPropTypes)(_HoverToScroll, props);
253
+ var scrollContainerHandle = props.scrollContainerHandle,
254
+ rest = _objectWithoutProperties(props, _excluded);
249
255
  return scrollContainerHandle ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
250
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(HoverToScrollBase, _objectSpread(_objectSpread({
256
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_HoverToScrollBase, _objectSpread(_objectSpread({
251
257
  scrollContainerHandle: scrollContainerHandle
252
258
  }, rest), {}, {
253
259
  direction: "horizontal"
254
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(HoverToScrollBase, _objectSpread(_objectSpread({
260
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_HoverToScrollBase, _objectSpread(_objectSpread({
255
261
  scrollContainerHandle: scrollContainerHandle
256
262
  }, rest), {}, {
257
263
  direction: "vertical"
258
264
  }))]
259
265
  }) : null;
260
266
  };
261
- HoverToScroll.displayName = 'HoverToScroll';
262
- HoverToScroll.propTypes = /** @lends limestone/useScroll.HoverToScroll.prototype */{
267
+ _HoverToScroll.displayName = 'HoverToScroll';
268
+ _HoverToScroll.propTypes = /** @lends limestone/useScroll.HoverToScroll.prototype */{
263
269
  scrollContainerHandle: _propTypes["default"].object
264
270
  };
265
- var _default = exports["default"] = HoverToScroll;
271
+ var _default = exports["default"] = _HoverToScroll;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = exports.ScrollbarBase = exports.Scrollbar = void 0;
7
7
  var _classnames = _interopRequireDefault(require("classnames"));
8
+ var _util = require("@enact/core/util");
8
9
  var _Scrollbar = require("@enact/ui/useScroll/Scrollbar");
9
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
11
  var _react = require("react");
@@ -92,20 +93,23 @@ var useThemeScrollbar = function useThemeScrollbar(props) {
92
93
  * @ui
93
94
  * @private
94
95
  */
95
- var ScrollbarBase = exports.ScrollbarBase = /*#__PURE__*/(0, _react.memo)(function (_ref) {
96
- var _ref$css = _ref.css,
97
- css = _ref$css === void 0 ? _ScrollbarModule["default"] : _ref$css,
98
- _ref$minThumbSize = _ref.minThumbSize,
99
- minThumbSize = _ref$minThumbSize === void 0 ? 120 : _ref$minThumbSize,
100
- _ref$vertical = _ref.vertical,
101
- vertical = _ref$vertical === void 0 ? true : _ref$vertical,
102
- rest = _objectWithoutProperties(_ref, _excluded3);
103
- var props = _objectSpread({
96
+ var ScrollbarBase = exports.ScrollbarBase = /*#__PURE__*/(0, _react.memo)(function (props) {
97
+ var scrollbarBaseProps = (0, _util.setDefaultProps)(props, {
98
+ css: _ScrollbarModule["default"],
99
+ minThumbSize: 120,
100
+ vertical: true
101
+ });
102
+ (0, _util.checkPropTypes)(ScrollbarBase, scrollbarBaseProps);
103
+ var css = scrollbarBaseProps.css,
104
+ minThumbSize = scrollbarBaseProps.minThumbSize,
105
+ vertical = scrollbarBaseProps.vertical,
106
+ rest = _objectWithoutProperties(scrollbarBaseProps, _excluded3);
107
+ var propsForHook = _objectSpread({
104
108
  css: css,
105
109
  minThumbSize: minThumbSize,
106
110
  vertical: vertical
107
111
  }, rest);
108
- var _useThemeScrollbar = useThemeScrollbar(props),
112
+ var _useThemeScrollbar = useThemeScrollbar(propsForHook),
109
113
  restProps = _useThemeScrollbar.restProps,
110
114
  scrollbarProps = _useThemeScrollbar.scrollbarProps,
111
115
  scrollbarTrackProps = _useThemeScrollbar.scrollbarTrackProps;
@@ -30,11 +30,9 @@ var ScrollbarPlaceholder = exports.ScrollbarPlaceholder = function ScrollbarPlac
30
30
  _useState2 = _slicedToArray(_useState, 2),
31
31
  showPlaceholder = _useState2[0],
32
32
  setShowPlaceholder = _useState2[1];
33
- (0, _react.useEffect)(function () {
34
- if (showPlaceholder) {
35
- setShowPlaceholder(false);
36
- }
37
- }, [showPlaceholder]);
33
+ if (showPlaceholder) {
34
+ setShowPlaceholder(false);
35
+ }
38
36
  var resetFocus = (0, _react.useCallback)(function () {
39
37
  setTimeout(function () {
40
38
  if (!_spotlight["default"].getPointerMode() && !_spotlight["default"].getCurrent()) {
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports["default"] = exports.ScrollbarTrackBase = exports.ScrollbarTrack = void 0;
7
7
  var _classnames = _interopRequireDefault(require("classnames"));
8
8
  var _keymap = require("@enact/core/keymap");
9
+ var _util = require("@enact/core/util");
9
10
  var _Accelerator = _interopRequireDefault(require("@enact/spotlight/Accelerator"));
10
11
  var _Spottable = _interopRequireDefault(require("@enact/spotlight/Spottable"));
11
12
  var _AnnounceDecorator = require("@enact/ui/AnnounceDecorator");
@@ -43,7 +44,8 @@ var SpottableDiv = (0, _Spottable["default"])('div');
43
44
  * @ui
44
45
  * @private
45
46
  */
46
- var ScrollbarTrack = exports.ScrollbarTrackBase = exports.ScrollbarTrack = function ScrollbarTrack(props) {
47
+ var _ScrollbarTrack = exports.ScrollbarTrackBase = exports.ScrollbarTrack = function ScrollbarTrack(props) {
48
+ (0, _util.checkPropTypes)(_ScrollbarTrack, props);
47
49
  var ariaLabel = props['aria-label'],
48
50
  cbAlertScrollbarTrack = props.cbAlertScrollbarTrack,
49
51
  focusableScrollbar = props.focusableScrollbar,
@@ -132,8 +134,8 @@ var ScrollbarTrack = exports.ScrollbarTrackBase = exports.ScrollbarTrack = funct
132
134
  }, "announce")]
133
135
  }));
134
136
  };
135
- ScrollbarTrack.displayName = 'ScrollbarTrack';
136
- ScrollbarTrack.propTypes = /** @lends limestone/useScroll.ScrollbarTrack.prototype */{
137
+ _ScrollbarTrack.displayName = 'ScrollbarTrack';
138
+ _ScrollbarTrack.propTypes = /** @lends limestone/useScroll.ScrollbarTrack.prototype */{
137
139
  /**
138
140
  * The aria label for the component.
139
141
  *
@@ -199,11 +201,11 @@ ScrollbarTrack.propTypes = /** @lends limestone/useScroll.ScrollbarTrack.prototy
199
201
  */
200
202
  vertical: _propTypes["default"].bool
201
203
  };
202
- ScrollbarTrack.defaultProps = {
204
+ _ScrollbarTrack.defaultProps = {
203
205
  cbAlertScrollbarTrack: nop,
204
206
  focusableScrollbar: false,
205
207
  onInteractionForScroll: nop,
206
208
  rtl: false,
207
209
  vertical: true
208
210
  };
209
- var _default = exports["default"] = ScrollbarTrack;
211
+ var _default = exports["default"] = _ScrollbarTrack;
@@ -1,5 +1,5 @@
1
1
  .scrollbarTrack {
2
- --scrollbar-track-margin: 0.25rem;
2
+ --scrollbar-track-margin: var(--primitive-spacing-12);
3
3
  --scrollbar-thumb-size-ratio: 1;
4
4
  --scrollbar-thumb-progress-ratio: 0;
5
5
  --scrollbar-thumb-size: calc(100% * var(--scrollbar-thumb-size-ratio));
@@ -20,7 +20,7 @@
20
20
  }
21
21
  .scrollbarTrack.focusableScrollbar {
22
22
  opacity: 1;
23
- --scrollbar-track-margin: 0.5rem;
23
+ --scrollbar-track-margin: var(--primitive-spacing-24);
24
24
  }
25
25
  .scrollbarTrack .thumb {
26
26
  background: var(--semantic-color-surface-scroll-handle);
@@ -87,12 +87,12 @@
87
87
  }
88
88
  .scrollbarTrack.vertical .thumb:focus .directionIndicator.backward {
89
89
  top: calc(9px - 0.25rem);
90
- left: 0.125rem;
90
+ left: var(--primitive-spacing-6);
91
91
  }
92
92
  .scrollbarTrack.vertical .thumb:focus .directionIndicator.forward {
93
93
  transform: rotate(180deg);
94
94
  bottom: calc(9px - 0.25rem);
95
- left: 0.125rem;
95
+ left: var(--primitive-spacing-6);
96
96
  }
97
97
  .scrollbarTrack:not(.vertical) {
98
98
  margin: var(--scrollbar-track-margin) 0;
@@ -113,13 +113,13 @@
113
113
  :global(.spotlight-input-mouse) .scrollbarTrack:not(.vertical) .thumb:global(.spottable):focus .directionIndicator.backward {
114
114
  transform: rotate(-90deg);
115
115
  left: calc(9px - 0.25rem);
116
- top: calc(0.125rem / 2);
116
+ top: calc(var(--primitive-spacing-6) / 2);
117
117
  }
118
118
  :global(.spotlight-input-key) .scrollbarTrack:not(.vertical) .thumb:global(.spottable):focus .directionIndicator.forward,
119
119
  :global(.spotlight-input-mouse) .scrollbarTrack:not(.vertical) .thumb:global(.spottable):focus .directionIndicator.forward {
120
120
  transform: rotate(90deg);
121
121
  right: calc(9px - 0.25rem);
122
- top: calc(0.125rem / 2);
122
+ top: calc(var(--primitive-spacing-6) / 2);
123
123
  }
124
124
  :global(.spotlight-input-touch) .scrollbarTrack:not(.vertical) .thumb:global(.spottable):active {
125
125
  height: 0.625rem;
@@ -127,10 +127,10 @@
127
127
  :global(.spotlight-input-touch) .scrollbarTrack:not(.vertical) .thumb:global(.spottable):active .directionIndicator.backward {
128
128
  transform: rotate(-90deg);
129
129
  left: calc(9px - 0.25rem);
130
- top: calc(0.125rem / 2);
130
+ top: calc(var(--primitive-spacing-6) / 2);
131
131
  }
132
132
  :global(.spotlight-input-touch) .scrollbarTrack:not(.vertical) .thumb:global(.spottable):active .directionIndicator.forward {
133
133
  transform: rotate(90deg);
134
134
  right: calc(9px - 0.25rem);
135
- top: calc(0.125rem / 2);
135
+ top: calc(var(--primitive-spacing-6) / 2);
136
136
  }
@@ -164,6 +164,12 @@ var useEventKey = exports.useEventKey = function useEventKey(props, instances, c
164
164
 
165
165
  // Functions
166
166
 
167
+ function applyLastInputType(ev) {
168
+ var keyCode = ev.keyCode;
169
+ if ((0, _spotlight.getDirection)(keyCode)) {
170
+ scrollContainerHandle.current.lastInputType = 'arrowKey';
171
+ }
172
+ }
167
173
  function handleKeyDown(ev) {
168
174
  var keyCode = ev.keyCode,
169
175
  repeat = ev.repeat,
@@ -188,7 +194,6 @@ var useEventKey = exports.useEventKey = function useEventKey(props, instances, c
188
194
  }
189
195
  } else if ((0, _spotlight.getDirection)(keyCode) && (scrollMode === 'translate' || scrollMode === 'native' && !_spotlight["default"].getPointerMode())) {
190
196
  var element = _spotlight["default"].getCurrent();
191
- scrollContainerHandle.current.lastInputType = 'arrowKey';
192
197
  direction = (0, _spotlight.getDirection)(keyCode);
193
198
  if (props.overscrollEffectOn.arrowKey && !(element ? (0, _target.getTargetByDirectionFromElement)(direction, element) : null)) {
194
199
  checkAndApplyOverscrollEffectByDirection(direction);
@@ -276,6 +281,7 @@ var useEventKey = exports.useEventKey = function useEventKey(props, instances, c
276
281
  // Return
277
282
 
278
283
  return {
284
+ applyLastInputType: applyLastInputType,
279
285
  handleKeyDown: handleKeyDown,
280
286
  lastPointer: lastPointer,
281
287
  scrollByPageOnPointerMode: scrollByPageOnPointerMode
@@ -342,10 +348,12 @@ var useEventMonitor = exports.useEventMonitor = function useEventMonitor(props,
342
348
  scrollByPageOnPointerMode: scrollByPageOnPointerMode
343
349
  }
344
350
  });
345
- lastPointer = lastPointerProp;
346
351
 
347
352
  // Hooks
348
353
 
354
+ (0, _react.useEffect)(function () {
355
+ lastPointer = lastPointerProp;
356
+ }, [lastPointerProp]);
349
357
  (0, _react.useEffect)(function () {
350
358
  var setMonitorEventTarget = function setMonitorEventTarget(target) {
351
359
  scrollers.set(mutableRef.current.pageKeyHandlerObj, target);
@@ -510,7 +518,10 @@ var useEventVoice = exports.useEventVoice = function useEventVoice(props, instan
510
518
  scrollVertically = verticalDirection.includes(scroll),
511
519
  direction = directionFactor ? -1 : 1,
512
520
  pageDistance = direction * (scrollVertically ? bounds.clientHeight : bounds.clientWidth) * paginationPageMultiplier;
513
- scrollContainerHandle.current.lastInputType = 'pageKey';
521
+ var handleRef = scrollContainerHandle;
522
+ if (handleRef.current) {
523
+ handleRef.current.lastInputType = 'pageKey';
524
+ }
514
525
  if (direction !== scrollContainerHandle.current.wheelDirection) {
515
526
  scrollContainerHandle.current.isScrollAnimationTargetAccumulated = false;
516
527
  scrollContainerHandle.current.wheelDirection = direction;
@@ -120,6 +120,7 @@ var useThemeScroll = function useThemeScroll(props, instances) {
120
120
  hasFocus: hasFocus,
121
121
  isContent: isContent
122
122
  }),
123
+ applyLastInputType = _useEventKey.applyLastInputType,
123
124
  handleKeyDown = _useEventKey.handleKeyDown,
124
125
  lastPointer = _useEventKey.lastPointer,
125
126
  scrollByPageOnPointerMode = _useEventKey.scrollByPageOnPointerMode;
@@ -181,7 +182,10 @@ var useThemeScroll = function useThemeScroll(props, instances) {
181
182
  direction = isForward ? 1 : -1,
182
183
  pageSize = isVerticalScrollBar ? bounds.clientHeight : bounds.clientWidth,
183
184
  distance = pageSize * (isPagination ? paginationPageMultiplier : arrowKeyMultiplier);
184
- scrollContainerHandle.current.lastInputType = inputType;
185
+ var handleRef = scrollContainerHandle;
186
+ if (handleRef.current) {
187
+ handleRef.current.lastInputType = inputType;
188
+ }
185
189
  if (direction !== wheelDirection) {
186
190
  scrollContainerHandle.current.isScrollAnimationTargetAccumulated = false;
187
191
  scrollContainerHandle.current.wheelDirection = direction;
@@ -257,7 +261,10 @@ var useThemeScroll = function useThemeScroll(props, instances) {
257
261
  // oddly, Scroller manages scrollContainerHandle.current.bounds so if we don't update it here (it is also
258
262
  // updated in calculateAndScrollTo, but we might not have made it to that point), it will be
259
263
  // out of date when we land back in this method next time.
260
- scrollContainerHandle.current.bounds.scrollHeight = scrollContainerHandle.current.getScrollBounds().scrollHeight;
264
+ var handleRef = scrollContainerHandle;
265
+ if (handleRef.current) {
266
+ handleRef.current.bounds.scrollHeight = scrollContainerHandle.current.getScrollBounds().scrollHeight;
267
+ }
261
268
  }
262
269
  function handleResizeWindow() {
263
270
  var focusedItem = _spotlight["default"].getCurrent();
@@ -272,6 +279,7 @@ var useThemeScroll = function useThemeScroll(props, instances) {
272
279
  function addEventListeners(ref) {
273
280
  // `ref` is always `scrollContentRef`.
274
281
  (0, _utilEvent["default"])('focusin').addEventListener(ref, handleFocus);
282
+ (0, _utilEvent["default"])('keydown').addEventListener(document, applyLastInputType);
275
283
  if (ref.current) {
276
284
  addVoiceEventListener(ref);
277
285
  }
@@ -466,6 +474,7 @@ var useScroll = exports.useScroll = function useScroll(props) {
466
474
  scrollContentWrapper = _useScrollBase.scrollContentWrapper,
467
475
  scrollObserver = _useScrollBase.scrollObserver;
468
476
  assignProperties('scrollContainerProps', {
477
+ // eslint-disable-line react-hooks/refs
469
478
  className: [className, _useScrollModule["default"].scroll, _OverscrollEffectModule["default"].scroll, focusableScrollbar ? _useScrollModule["default"].focusableScrollbar : null, focusableScrollbar && isVerticalScrollbarVisible ? _useScrollModule["default"].verticalPadding : null, isVerticalScrollbarVisible && isHorizontalScrollbarVisible ? _useScrollModule["default"].bidirectional : null],
470
479
  style: style,
471
480
  'data-spotlight-container': spotlightContainer,
@@ -510,6 +519,7 @@ var useScroll = exports.useScroll = function useScroll(props) {
510
519
  scrollbarHandle: verticalScrollbarHandle
511
520
  }));
512
521
  assignProperties('hoverToScrollProps', {
522
+ // eslint-disable-line react-hooks/refs
513
523
  scrollContainerHandle: scrollContainerHandle,
514
524
  scrollObserver: scrollObserver
515
525
  });
@@ -17,10 +17,10 @@
17
17
  .scroll .verticalScrollbar {
18
18
  position: absolute;
19
19
  width: var(--scroll-scrollbar-size);
20
- height: calc(100% - 2 * 0.25rem);
20
+ height: calc(100% - 2 * var(--primitive-spacing-12));
21
21
  right: 0;
22
22
  top: 0;
23
- padding: 0.25rem 0;
23
+ padding: var(--primitive-spacing-12) 0;
24
24
  }
25
25
  :global(.enact-locale-right-to-left) .scroll .verticalScrollbar {
26
26
  left: 0;
@@ -28,17 +28,17 @@
28
28
  }
29
29
  .scroll .horizontalScrollbar {
30
30
  position: absolute;
31
- width: calc(100% - 2 * 0.25rem);
31
+ width: calc(100% - 2 * var(--primitive-spacing-12));
32
32
  height: var(--scroll-scrollbar-size);
33
33
  left: 0;
34
34
  bottom: 0;
35
- padding: 0 0.25rem;
35
+ padding: 0 var(--primitive-spacing-12);
36
36
  }
37
37
  .scroll.bidirectional .verticalScrollbar {
38
- height: calc(100% - 2 * 0.25rem - var(--scroll-scrollbar-size));
38
+ height: calc(100% - 2 * var(--primitive-spacing-12) - var(--scroll-scrollbar-size));
39
39
  }
40
40
  .scroll.bidirectional .horizontalScrollbar {
41
- width: calc(100% - 2 * 0.25rem - var(--scroll-scrollbar-size));
41
+ width: calc(100% - 2 * var(--primitive-spacing-12) - var(--scroll-scrollbar-size));
42
42
  left: 0;
43
43
  }
44
44
  :global(.enact-locale-right-to-left) .scroll.bidirectional .horizontalScrollbar {
package/.travis.yml DELETED
@@ -1,40 +0,0 @@
1
- dist: jammy
2
- language: node_js
3
- node_js:
4
- - lts/*
5
- - node
6
- sudo: false
7
- before_install:
8
- - sudo apt-get update
9
- - sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev
10
- install:
11
- - npm config set prefer-offline false
12
- - npm install -g codecov
13
- - git clone --branch=develop --depth 1 https://github.com/enactjs/cli ../cli
14
- - pushd ../cli
15
- - npm install
16
- - npm link
17
- - popd
18
- - git clone --branch=develop --depth 1 https://github.com/enactjs/enact ../enact
19
- - pushd ../enact
20
- - npm uninstall @enact/ui-test-utils --prefix packages/i18n
21
- - npm install
22
- - npm run lerna exec -- --ignore enact-sampler --concurrency 1 -- npm --no-package-lock install
23
- - npm run lerna exec -- --ignore enact-sampler --concurrency 1 -- npm --no-package-lock link
24
- - npm run interlink
25
- - popd
26
- - rm -fr node_modules/@enact
27
- - npm uninstall @enact/ui-test-utils
28
- - npm install
29
- - enact link
30
- script:
31
- - echo -e "\x1b\x5b35;1m*** Starting tests...\x1b\x5b0m"
32
- - npm test -- --runInBand --coverage
33
- - codecov -t $CODECOV_TOKEN
34
- - echo -e "\x1b\x5b35;1m*** Tests complete\x1b\x5b0m"
35
- - echo -e "\x1b\x5b35;1m*** Starting eslint...\x1b\x5b0m"
36
- - npm run lint -- -- --report-unused-disable-directives --max-warnings 0 .
37
- - echo -e "\x1b\x5b35;1m*** eslint complete\x1b\x5b0m"
38
- - echo -e "\x1b\x5b35;1m*** Starting docs validation...\x1b\x5b0m"
39
- - npm run validate-docs
40
- - echo -e "\x1b\x5b35;1m*** Docs validation complete\x1b\x5b0m"