@pingux/astro 2.0.4-alpha.2 → 2.0.4-alpha.3
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/lib/cjs/components/ListView/ListView.js +16 -1
- package/lib/cjs/components/ListView/ListView.test.js +14 -0
- package/lib/cjs/components/ListViewItem/ListViewItem.js +6 -2
- package/lib/components/ListView/ListView.js +17 -2
- package/lib/components/ListView/ListView.test.js +15 -1
- package/lib/components/ListViewItem/ListViewItem.js +6 -2
- package/package.json +1 -1
@@ -19,6 +19,7 @@ exports.useListLayout = useListLayout;
|
|
19
19
|
var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/values"));
|
20
20
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
21
21
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
22
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
22
23
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
23
24
|
var _react = _interopRequireWildcard(require("react"));
|
24
25
|
var _i18n = require("@react-aria/i18n");
|
@@ -91,6 +92,10 @@ var ListView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
91
92
|
selectionMode = props.selectionMode,
|
92
93
|
selectionStyle = props.selectionStyle,
|
93
94
|
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
95
|
+
var _useState = (0, _react.useState)(null),
|
96
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
97
|
+
hoveredItem = _useState2[0],
|
98
|
+
setHoveredItem = _useState2[1];
|
94
99
|
var isLoading = loadingState === _loadingStates["default"].LOADING_MORE || loadingState === _loadingStates["default"].LOADING;
|
95
100
|
var renderWrapper = function renderWrapper(parent, reusableView) {
|
96
101
|
return (0, _react2.jsx)(_virtualizer.VirtualizerItem, {
|
@@ -108,6 +113,10 @@ var ListView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
108
113
|
var state = (0, _list2.useListState)(_objectSpread(_objectSpread({}, props), {}, {
|
109
114
|
selectionBehavior: selectionStyle === 'highlight' ? 'replace' : 'toggle'
|
110
115
|
}));
|
116
|
+
state.hover = {
|
117
|
+
hoveredItem: hoveredItem,
|
118
|
+
setHoveredItem: setHoveredItem
|
119
|
+
};
|
111
120
|
var collection = state.collection,
|
112
121
|
selectionManager = state.selectionManager;
|
113
122
|
var layout = useListLayout(state);
|
@@ -127,6 +136,11 @@ var ListView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
127
136
|
others.onFocus(e);
|
128
137
|
}
|
129
138
|
};
|
139
|
+
|
140
|
+
// This code removes hover when scrolling ListView in the Firefox browser.
|
141
|
+
var resetHoverState = function resetHoverState() {
|
142
|
+
state.hover.setHoveredItem(null);
|
143
|
+
};
|
130
144
|
return (0, _react2.jsx)(_ListViewContext.ListViewContext.Provider, {
|
131
145
|
value: {
|
132
146
|
state: state
|
@@ -143,7 +157,8 @@ var ListView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
143
157
|
collection: collection,
|
144
158
|
transitionDuration: 0
|
145
159
|
}, others, {
|
146
|
-
onFocus: onFocus
|
160
|
+
onFocus: onFocus,
|
161
|
+
onScroll: resetHoverState
|
147
162
|
}), function (type, item) {
|
148
163
|
if (type === 'item') {
|
149
164
|
return (0, _react2.jsx)(_ListViewItem["default"], {
|
@@ -333,4 +333,18 @@ test('list view not receive focus when click on checkbox', function () {
|
|
333
333
|
expect(listItem[0]).not.toHaveClass('is-focused');
|
334
334
|
checkbox[0].click();
|
335
335
|
expect(listItem[0]).not.toHaveClass('is-focused');
|
336
|
+
});
|
337
|
+
test('list view reset hover on item when scroll', function () {
|
338
|
+
getComponent();
|
339
|
+
var listView = _testWrapper.screen.getAllByRole('grid');
|
340
|
+
var listItem = _testWrapper.screen.getAllByRole('gridcell');
|
341
|
+
expect(listItem[0]).not.toHaveClass('is-hovered');
|
342
|
+
_userEvent["default"].hover(listItem[0]);
|
343
|
+
expect(listItem[0]).toHaveClass('is-hovered');
|
344
|
+
_testWrapper.fireEvent.scroll(listView[0], {
|
345
|
+
target: {
|
346
|
+
scrollY: 100
|
347
|
+
}
|
348
|
+
});
|
349
|
+
expect(listItem[0]).not.toHaveClass('is-hovered');
|
336
350
|
});
|
@@ -45,7 +45,11 @@ var ListViewItem = function ListViewItem(props) {
|
|
45
45
|
var _useFocusRing2 = (0, _reactAria.useFocusRing)(),
|
46
46
|
focusProps = _useFocusRing2.focusProps,
|
47
47
|
isFocusVisible = _useFocusRing2.isFocusVisible;
|
48
|
-
var _useHover = (0, _interactions.useHover)({
|
48
|
+
var _useHover = (0, _interactions.useHover)({
|
49
|
+
onHoverStart: function onHoverStart() {
|
50
|
+
state.hover.setHoveredItem(item.key);
|
51
|
+
}
|
52
|
+
}),
|
49
53
|
hoverProps = _useHover.hoverProps,
|
50
54
|
isHovered = _useHover.isHovered;
|
51
55
|
var _useListItem = (0, _list.useListItem)({
|
@@ -58,7 +62,7 @@ var ListViewItem = function ListViewItem(props) {
|
|
58
62
|
var isSelected = state.selectionManager.isSelected(item.key);
|
59
63
|
var mergedProps = (0, _reactAria.mergeProps)(raRowProps, hoverProps, focusWithinProps, focusProps);
|
60
64
|
var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
|
61
|
-
isHovered: isSelectable && isHovered && isHoverable,
|
65
|
+
isHovered: isSelectable && isHovered && isHoverable && item.key === state.hover.hoveredItem,
|
62
66
|
isSelected: isSelected,
|
63
67
|
isFocused: isDisabled ? false : isFocusVisible || isFocusVisibleWithin,
|
64
68
|
hasSeparator: hasSeparator,
|
@@ -8,12 +8,13 @@ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/obje
|
|
8
8
|
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
9
9
|
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
10
10
|
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
11
|
+
import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
|
11
12
|
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
12
13
|
var _excluded = ["disabledKeys", "isHoverable", "loadingState", "onLoadMore", "onSelectionChange", "selectedKeys", "selectionMode", "selectionStyle"];
|
13
14
|
import _Object$values from "@babel/runtime-corejs3/core-js-stable/object/values";
|
14
15
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
15
16
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
16
|
-
import React, { forwardRef, useImperativeHandle, useMemo, useRef } from 'react';
|
17
|
+
import React, { forwardRef, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
17
18
|
import { useCollator } from '@react-aria/i18n';
|
18
19
|
import { useList } from '@react-aria/list';
|
19
20
|
import { Virtualizer, VirtualizerItem } from '@react-aria/virtualizer';
|
@@ -78,6 +79,10 @@ var ListView = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
78
79
|
selectionMode = props.selectionMode,
|
79
80
|
selectionStyle = props.selectionStyle,
|
80
81
|
others = _objectWithoutProperties(props, _excluded);
|
82
|
+
var _useState = useState(null),
|
83
|
+
_useState2 = _slicedToArray(_useState, 2),
|
84
|
+
hoveredItem = _useState2[0],
|
85
|
+
setHoveredItem = _useState2[1];
|
81
86
|
var isLoading = loadingState === loadingStates.LOADING_MORE || loadingState === loadingStates.LOADING;
|
82
87
|
var renderWrapper = function renderWrapper(parent, reusableView) {
|
83
88
|
return ___EmotionJSX(VirtualizerItem, {
|
@@ -95,6 +100,10 @@ var ListView = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
95
100
|
var state = useListState(_objectSpread(_objectSpread({}, props), {}, {
|
96
101
|
selectionBehavior: selectionStyle === 'highlight' ? 'replace' : 'toggle'
|
97
102
|
}));
|
103
|
+
state.hover = {
|
104
|
+
hoveredItem: hoveredItem,
|
105
|
+
setHoveredItem: setHoveredItem
|
106
|
+
};
|
98
107
|
var collection = state.collection,
|
99
108
|
selectionManager = state.selectionManager;
|
100
109
|
var layout = useListLayout(state);
|
@@ -114,6 +123,11 @@ var ListView = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
114
123
|
others.onFocus(e);
|
115
124
|
}
|
116
125
|
};
|
126
|
+
|
127
|
+
// This code removes hover when scrolling ListView in the Firefox browser.
|
128
|
+
var resetHoverState = function resetHoverState() {
|
129
|
+
state.hover.setHoveredItem(null);
|
130
|
+
};
|
117
131
|
return ___EmotionJSX(ListViewContext.Provider, {
|
118
132
|
value: {
|
119
133
|
state: state
|
@@ -130,7 +144,8 @@ var ListView = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
130
144
|
collection: collection,
|
131
145
|
transitionDuration: 0
|
132
146
|
}, others, {
|
133
|
-
onFocus: onFocus
|
147
|
+
onFocus: onFocus,
|
148
|
+
onScroll: resetHoverState
|
134
149
|
}), function (type, item) {
|
135
150
|
if (type === 'item') {
|
136
151
|
return ___EmotionJSX(ListViewItem, {
|
@@ -18,7 +18,7 @@ import { Item } from 'react-stately';
|
|
18
18
|
import userEvent from '@testing-library/user-event';
|
19
19
|
import _ from 'lodash';
|
20
20
|
import loadingStates from '../../utils/devUtils/constants/loadingStates';
|
21
|
-
import { render, screen } from '../../utils/testUtils/testWrapper';
|
21
|
+
import { fireEvent, render, screen } from '../../utils/testUtils/testWrapper';
|
22
22
|
import CheckboxField from '../CheckboxField';
|
23
23
|
import ListView from './ListView';
|
24
24
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
@@ -330,4 +330,18 @@ test('list view not receive focus when click on checkbox', function () {
|
|
330
330
|
expect(listItem[0]).not.toHaveClass('is-focused');
|
331
331
|
checkbox[0].click();
|
332
332
|
expect(listItem[0]).not.toHaveClass('is-focused');
|
333
|
+
});
|
334
|
+
test('list view reset hover on item when scroll', function () {
|
335
|
+
getComponent();
|
336
|
+
var listView = screen.getAllByRole('grid');
|
337
|
+
var listItem = screen.getAllByRole('gridcell');
|
338
|
+
expect(listItem[0]).not.toHaveClass('is-hovered');
|
339
|
+
userEvent.hover(listItem[0]);
|
340
|
+
expect(listItem[0]).toHaveClass('is-hovered');
|
341
|
+
fireEvent.scroll(listView[0], {
|
342
|
+
target: {
|
343
|
+
scrollY: 100
|
344
|
+
}
|
345
|
+
});
|
346
|
+
expect(listItem[0]).not.toHaveClass('is-hovered');
|
333
347
|
});
|
@@ -32,7 +32,11 @@ var ListViewItem = function ListViewItem(props) {
|
|
32
32
|
var _useFocusRing2 = useFocusRing(),
|
33
33
|
focusProps = _useFocusRing2.focusProps,
|
34
34
|
isFocusVisible = _useFocusRing2.isFocusVisible;
|
35
|
-
var _useHover = useHover({
|
35
|
+
var _useHover = useHover({
|
36
|
+
onHoverStart: function onHoverStart() {
|
37
|
+
state.hover.setHoveredItem(item.key);
|
38
|
+
}
|
39
|
+
}),
|
36
40
|
hoverProps = _useHover.hoverProps,
|
37
41
|
isHovered = _useHover.isHovered;
|
38
42
|
var _useListItem = useListItem({
|
@@ -45,7 +49,7 @@ var ListViewItem = function ListViewItem(props) {
|
|
45
49
|
var isSelected = state.selectionManager.isSelected(item.key);
|
46
50
|
var mergedProps = mergeProps(raRowProps, hoverProps, focusWithinProps, focusProps);
|
47
51
|
var _useStatusClasses = useStatusClasses(className, {
|
48
|
-
isHovered: isSelectable && isHovered && isHoverable,
|
52
|
+
isHovered: isSelectable && isHovered && isHoverable && item.key === state.hover.hoveredItem,
|
49
53
|
isSelected: isSelected,
|
50
54
|
isFocused: isDisabled ? false : isFocusVisible || isFocusVisibleWithin,
|
51
55
|
hasSeparator: hasSeparator,
|