@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.
- package/.github/workflows/ci-branch.yml +21 -0
- package/.github/workflows/ci-pull-request.yml +16 -0
- package/.github/workflows/ci-reusable.yml +73 -0
- package/ActionGuide/ActionGuide.d.ts +5 -4
- package/ActionGuide/ActionGuide.module.css +1 -1
- package/Alert/Alert.d.ts +13 -2
- package/Alert/Alert.js +39 -5
- package/Alert/Alert.module.css +48 -1
- package/Alert/tests/Alert-specs.js +91 -0
- package/BodyText/BodyText.d.ts +5 -4
- package/BodyText/BodyText.module.css +7 -7
- package/Button/Button.d.ts +17 -12
- package/Button/Button.js +1 -1
- package/Button/Button.module.css +195 -268
- package/Button/tests/Button-specs.js +26 -0
- package/CHANGELOG.md +254 -0
- package/Card/Card.d.ts +40 -12
- package/Card/Card.js +164 -28
- package/Card/Card.module.css +277 -58
- package/Card/tests/Card-specs.js +67 -3
- package/Checkbox/Checkbox.d.ts +8 -7
- package/Checkbox/Checkbox.js +3 -1
- package/Checkbox/Checkbox.module.css +213 -120
- package/Checkbox/tests/Checkbox-specs.js +1 -1
- package/CheckboxItem/CheckboxItem.d.ts +22 -7
- package/CheckboxItem/CheckboxItem.js +71 -4
- package/Chips/Chip.js +72 -13
- package/Chips/Chip.module.css +3 -3
- package/Chips/Chips.js +37 -17
- package/Chips/Chips.module.css +1 -1
- package/Chips/tests/Chip-specs.js +43 -13
- package/Chips/tests/Chips-specs.js +31 -21
- package/ColorPicker/ColorPicker.js +27 -25
- package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +4 -5
- package/ContextualPopupDecorator/ContextualPopup.module.css +34 -34
- package/ContextualPopupDecorator/ContextualPopupDecorator.js +567 -549
- package/DatePicker/DatePicker.d.ts +4 -5
- package/DayPicker/DayPicker.d.ts +8 -7
- package/DayPicker/DaySelectorDecorator.js +12 -7
- package/Dropdown/Dropdown.d.ts +11 -13
- package/Dropdown/Dropdown.module.css +13 -9
- package/Dropdown/DropdownList.js +80 -54
- package/FixedPopupPanels/FixedPopupPanels.d.ts +4 -2
- package/FixedPopupPanels/FixedPopupPanels.module.css +18 -18
- package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +23 -23
- package/FlexiblePopupPanels/useNavButtonFocus.js +7 -10
- package/FormCheckboxItem/FormCheckboxItem.d.ts +5 -4
- package/Heading/Heading.d.ts +9 -8
- package/Heading/Heading.js +2 -2
- package/Heading/Heading.module.css +5 -5
- package/Icon/Icon.d.ts +15 -4
- package/Icon/Icon.js +49 -2
- package/Icon/Icon.module.css +1 -1
- package/Icon/IconList.js +27 -1
- package/IconItem/IconItem.d.ts +13 -12
- package/IconItem/IconItem.js +15 -0
- package/IconItem/IconItem.module.css +107 -1
- package/IconItem/tests/IconItem-specs.js +30 -1
- package/Image/Image.d.ts +5 -4
- package/Image/Image.js +6 -4
- package/ImageItem/ImageItem.d.ts +11 -10
- package/ImageItem/ImageItem.js +37 -31
- package/ImageItem/ImageItem.module.css +30 -30
- package/ImageItem/tests/ImageItem-specs.js +3 -10
- package/Input/Input.js +21 -3
- package/Input/Input.module.css +37 -8
- package/Input/InputField.js +79 -24
- package/Input/InputField.module.css +273 -41
- package/Input/InputFieldDecoratorIcon.js +1 -0
- package/Input/InputFieldSpotlightDecorator.js +257 -228
- package/Input/index.d.ts +120 -111
- package/Input/tests/Input-specs.js +26 -0
- package/Input/tests/InputField-specs.js +170 -3
- package/Input/tests/InputPopup-specs.js +1 -1
- package/Item/Item.d.ts +16 -9
- package/Item/Item.js +20 -2
- package/Item/Item.module.css +1 -1
- package/KeyGuide/KeyGuide.d.ts +8 -7
- package/KeyGuide/KeyGuide.js +29 -27
- package/KeyGuide/KeyGuide.module.css +25 -1
- package/Marquee/Marquee.d.ts +2 -4
- package/MediaOverlay/MediaOverlay.d.ts +12 -11
- package/MediaOverlay/MediaOverlay.js +43 -21
- package/MediaOverlay/MediaOverlay.module.css +114 -15
- package/MediaOverlay/tests/MediaOverlay-specs.js +29 -0
- package/MediaPlayer/MediaControls.js +195 -13
- package/MediaPlayer/MediaControls.module.css +3 -2
- package/MediaPlayer/MediaSlider.module.css +7 -20
- package/MediaPlayer/index.d.ts +59 -7
- package/MediaPlayer/tests/util-specs.js +4 -1
- package/PageViews/PageViews.js +232 -82
- package/PageViews/PageViews.module.css +3 -0
- package/PageViews/PageViewsRouter.js +100 -42
- package/PageViews/tests/PageViews-specs.js +171 -0
- package/Panels/Header.js +54 -34
- package/Panels/Header.module.css +83 -31
- package/Panels/Panel.module.css +1 -1
- package/Panels/index.d.ts +7 -8
- package/Picker/Picker.d.ts +4 -5
- package/Picker/Picker.module.css +2 -2
- package/Popup/Popup.js +245 -242
- package/Popup/Popup.module.css +24 -24
- package/PopupTabLayout/PopupTabLayout.d.ts +5 -7
- package/PopupTabLayout/PopupTabLayout.js +26 -18
- package/PopupTabLayout/PopupTabLayout.module.css +53 -16
- package/PopupTabLayout/PopupTabLayoutStateContext.js +8 -0
- package/ProgressBar/ProgressBar.d.ts +5 -4
- package/ProgressBar/ProgressBarTooltip.module.css +12 -12
- package/ProgressButton/ProgressButton.d.ts +4 -5
- package/QuickGuidePanels/QuickGuidePanels.module.css +2 -2
- package/RadioItem/RadioItem.d.ts +18 -5
- package/RadioItem/RadioItem.js +69 -2
- package/RadioItem/RadioItem.module.css +36 -36
- package/RangePicker/RangePicker.module.css +2 -2
- package/Scroller/EditableWrapper.js +28 -18
- package/Scroller/Scroller.d.ts +20 -16
- package/Scroller/Scroller.js +20 -13
- package/Scroller/Scroller.module.css +4 -4
- package/Scroller/useThemeScroller.js +3 -3
- package/Slider/Slider.d.ts +20 -14
- package/Slider/Slider.js +71 -14
- package/Slider/Slider.module.css +464 -91
- package/Slider/SliderBehaviorDecorator.js +16 -14
- package/Slider/tests/Slider-specs.js +53 -1
- package/Slider/utils.js +23 -7
- package/Spinner/Spinner.d.ts +5 -4
- package/Spinner/Spinner.js +10 -8
- package/Spinner/Spinner.module.css +9 -9
- package/Steps/Steps.d.ts +5 -4
- package/Steps/Steps.js +9 -5
- package/Switch/Switch.d.ts +8 -7
- package/Switch/Switch.module.css +100 -13
- package/SwitchItem/SwitchItem.d.ts +9 -6
- package/TabLayout/RefocusDecorator.js +26 -18
- package/TabLayout/TabGroup.js +3 -2
- package/TabLayout/TabGroup.module.css +2 -2
- package/TabLayout/TabLayout.d.ts +6 -0
- package/TabLayout/TabLayout.js +11 -1
- package/TabLayout/TabLayout.module.css +18 -0
- package/TabLayout/tests/TabGroup-specs.js +1 -1
- package/TabLayout/tests/TabLayout-specs.js +52 -0
- package/ThemeDecorator/AccessibilityDecorator.js +12 -11
- package/ThemeDecorator/I18nFontDecorator.js +6 -4
- package/ThemeDecorator/ThemeDecorator.d.ts +16 -10
- package/ThemeDecorator/ThemeDecorator.js +24 -9
- package/ThemeDecorator/fontGenerator.js +1 -1
- package/ThemeDecorator/screenTypes.json +1 -0
- package/TimePicker/TimePicker.module.css +1 -1
- package/TimePicker/TimePickerBase.js +5 -3
- package/TooltipDecorator/Tooltip.module.css +1 -2
- package/TooltipDecorator/TooltipDecorator.js +12 -7
- package/TooltipDecorator/tests/useTooltip-specs.js +5 -2
- package/TooltipDecorator/tests/util-specs.js +12 -0
- package/TooltipDecorator/useTooltip.js +1 -1
- package/TooltipDecorator/util.js +18 -11
- package/VideoPlayer/Feedback.js +3 -0
- package/VideoPlayer/Feedback.module.css +5 -9
- package/VideoPlayer/FeedbackIcons.js +1 -1
- package/VideoPlayer/FeedbackTooltip.module.css +55 -11
- package/VideoPlayer/VideoPlayer.d.ts +44 -18
- package/VideoPlayer/VideoPlayer.js +153 -47
- package/VideoPlayer/VideoPlayer.module.css +28 -11
- package/VirtualList/VirtualList.d.ts +9 -2
- package/VirtualList/VirtualList.js +51 -24
- package/VirtualList/tests/VirtualGridList-translate-specs.js +3 -0
- package/VirtualList/tests/VirtualList-specs.js +28 -1
- package/VirtualList/tests/VirtualList-translate-specs.js +4 -1
- package/VirtualList/useSpotlight.js +1 -1
- package/WizardPanels/WizardPanels.module.css +2 -2
- package/WizardPanels/index.d.ts +4 -2
- package/fonts/Limestone_Icons.ttf +0 -0
- package/internal/$L/$L.js +3 -3
- package/internal/AsyncRenderChildren/AsyncRenderChildren.js +9 -5
- package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +4 -1
- package/internal/DateComponentPicker/DateComponentPicker.module.css +2 -2
- package/internal/DateTime/DateTime.module.css +1 -0
- package/internal/DateTime/DateTimeDecorator.js +5 -4
- package/internal/Panels/PanelsRouter.js +48 -31
- package/internal/Panels/useAutoFocus.js +10 -6
- package/internal/Panels/useFocusOnTransition.js +4 -3
- package/internal/Picker/Picker.js +7 -5
- package/internal/Picker/Picker.module.css +2 -2
- package/internal/Picker/SpottablePicker.js +15 -13
- package/internal/SharedStateDecorator/SharedStateDecorator.js +78 -99
- package/internal/validators/validators.js +21 -2
- package/package.json +18 -15
- package/styles/colors-highcontrast.less +9 -1
- package/styles/colors.less +12 -7
- package/styles/motion-mixins.less +66 -0
- package/styles/motions.less +78 -0
- package/styles/variables.less +176 -150
- package/useScroll/HoverToScroll.js +23 -17
- package/useScroll/Scrollbar.js +14 -10
- package/useScroll/ScrollbarPlaceholder.js +3 -5
- package/useScroll/ScrollbarTrack.js +7 -5
- package/useScroll/ScrollbarTrack.module.css +8 -8
- package/useScroll/useEvent.js +14 -3
- package/useScroll/useScroll.js +12 -2
- package/useScroll/useScroll.module.css +6 -6
- 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.
|
|
52
|
-
vertical: 0.
|
|
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
|
|
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 =
|
|
153
|
-
|
|
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
|
-
|
|
233
|
-
|
|
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
|
|
247
|
-
|
|
248
|
-
|
|
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)(
|
|
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)(
|
|
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
|
-
|
|
262
|
-
|
|
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"] =
|
|
271
|
+
var _default = exports["default"] = _HoverToScroll;
|
package/useScroll/Scrollbar.js
CHANGED
|
@@ -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 (
|
|
96
|
-
var
|
|
97
|
-
css
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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(
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
|
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
|
-
|
|
136
|
-
|
|
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
|
-
|
|
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"] =
|
|
211
|
+
var _default = exports["default"] = _ScrollbarTrack;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
.scrollbarTrack {
|
|
2
|
-
--scrollbar-track-margin:
|
|
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:
|
|
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:
|
|
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:
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
135
|
+
top: calc(var(--primitive-spacing-6) / 2);
|
|
136
136
|
}
|
package/useScroll/useEvent.js
CHANGED
|
@@ -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
|
-
|
|
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;
|
package/useScroll/useScroll.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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 *
|
|
20
|
+
height: calc(100% - 2 * var(--primitive-spacing-12));
|
|
21
21
|
right: 0;
|
|
22
22
|
top: 0;
|
|
23
|
-
padding:
|
|
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 *
|
|
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
|
|
35
|
+
padding: 0 var(--primitive-spacing-12);
|
|
36
36
|
}
|
|
37
37
|
.scroll.bidirectional .verticalScrollbar {
|
|
38
|
-
height: calc(100% - 2 *
|
|
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 *
|
|
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"
|