@pingux/astro 2.32.0-alpha.10 → 2.32.0-alpha.11

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 (32) hide show
  1. package/lib/cjs/components/ImageUploadField/ImageUploadField.test.js +47 -14
  2. package/lib/cjs/components/TreeView/TreeView.js +99 -11
  3. package/lib/cjs/components/TreeView/TreeView.stories.js +23 -10
  4. package/lib/cjs/components/TreeView/TreeView.styles.js +22 -2
  5. package/lib/cjs/components/TreeView/TreeView.test.js +91 -11
  6. package/lib/cjs/components/TreeView/TreeViewItem.js +112 -14
  7. package/lib/cjs/components/TreeView/TreeViewKeyboardDelegate.js +200 -0
  8. package/lib/cjs/components/TreeView/TreeViewKeyboardDelegate.test.js +511 -0
  9. package/lib/cjs/components/TreeView/TreeViewRow.js +20 -5
  10. package/lib/cjs/components/TreeView/TreeViewSection.js +164 -16
  11. package/lib/cjs/components/TreeView/TreeViewWrapper.js +40 -0
  12. package/lib/cjs/hooks/useImageUploadState/index.d.ts +1 -0
  13. package/lib/cjs/hooks/useImageUploadState/useImageUploadState.d.ts +28 -0
  14. package/lib/cjs/hooks/useImageUploadState/useImageUploadState.js +9 -6
  15. package/lib/cjs/hooks/useModalState/index.d.ts +1 -0
  16. package/lib/cjs/hooks/useModalState/useModalState.d.ts +21 -0
  17. package/lib/cjs/hooks/useModalState/useModalState.js +0 -9
  18. package/lib/cjs/hooks/useModalState/useModalState.test.d.ts +1 -0
  19. package/lib/components/ImageUploadField/ImageUploadField.test.js +47 -14
  20. package/lib/components/TreeView/TreeView.js +100 -12
  21. package/lib/components/TreeView/TreeView.stories.js +23 -10
  22. package/lib/components/TreeView/TreeView.styles.js +22 -2
  23. package/lib/components/TreeView/TreeView.test.js +92 -12
  24. package/lib/components/TreeView/TreeViewItem.js +111 -14
  25. package/lib/components/TreeView/TreeViewKeyboardDelegate.js +176 -0
  26. package/lib/components/TreeView/TreeViewKeyboardDelegate.test.js +496 -0
  27. package/lib/components/TreeView/TreeViewRow.js +20 -5
  28. package/lib/components/TreeView/TreeViewSection.js +161 -16
  29. package/lib/components/TreeView/TreeViewWrapper.js +31 -0
  30. package/lib/hooks/useImageUploadState/useImageUploadState.js +9 -6
  31. package/lib/hooks/useModalState/useModalState.js +0 -10
  32. package/package.json +1 -1
@@ -8,21 +8,68 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
8
8
  _Object$defineProperty(exports, "__esModule", {
9
9
  value: true
10
10
  });
11
- exports["default"] = void 0;
11
+ exports.onKeyDownItem = exports["default"] = void 0;
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _FileIcon = _interopRequireDefault(require("@pingux/mdi-react/FileIcon"));
15
+ var _focus = require("@react-aria/focus");
15
16
  var _listbox = require("@react-aria/listbox");
17
+ var _utils = require("@react-aria/utils");
16
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
19
  var _TreeViewContext = require("../../context/TreeViewContext");
20
+ var _hooks = require("../../hooks");
18
21
  var _index = require("../../index");
22
+ var _TreeViewKeyboardDelegate = require("./TreeViewKeyboardDelegate");
19
23
  var _TreeViewRow = _interopRequireDefault(require("./TreeViewRow"));
24
+ var _TreeViewSection = require("./TreeViewSection");
20
25
  var _react2 = require("@emotion/react");
21
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
27
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
+ var onKeyDownItem = function onKeyDownItem(e, state, key, tree, isSelected, isExpanded, focusManager, flatKeyArray, refArray, pageLength) {
29
+ switch (e.which) {
30
+ case 32:
31
+ _TreeViewKeyboardDelegate.itemPressHandlers.onSpacePress(e, tree, key, isSelected);
32
+ break;
33
+ case 38:
34
+ _TreeViewKeyboardDelegate.itemPressHandlers.onUpPress(e, key, refArray, flatKeyArray);
35
+ e.preventDefault();
36
+ e.stopPropagation();
37
+ break;
38
+ case 40:
39
+ _TreeViewKeyboardDelegate.itemPressHandlers.onDownPress(e, key, refArray, flatKeyArray);
40
+ e.preventDefault();
41
+ e.stopPropagation();
42
+ break;
43
+ case 37:
44
+ case 39:
45
+ _TreeViewKeyboardDelegate.itemPressHandlers.onRightLeftItemPress(e);
46
+ break;
47
+ case 33:
48
+ _TreeViewKeyboardDelegate.itemPressHandlers.onPageUpPress(e, key, flatKeyArray, refArray, pageLength);
49
+ break;
50
+ case 34:
51
+ _TreeViewKeyboardDelegate.itemPressHandlers.onPageDownPress(e, key, flatKeyArray, refArray, pageLength);
52
+ break;
53
+ case 36:
54
+ _TreeViewKeyboardDelegate.itemPressHandlers.onHomePress(key, flatKeyArray, refArray);
55
+ e.preventDefault();
56
+ e.stopPropagation();
57
+ break;
58
+ case 35:
59
+ _TreeViewKeyboardDelegate.itemPressHandlers.onEndPress(key, flatKeyArray, refArray);
60
+ e.preventDefault();
61
+ e.stopPropagation();
62
+ break;
63
+ default:
64
+ break;
65
+ }
66
+ };
67
+ exports.onKeyDownItem = onKeyDownItem;
23
68
  var TreeViewItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
24
69
  var item = props.item,
25
70
  title = props.title,
71
+ focusManager = props.focusManager,
72
+ onKeyDown = props.onKeyDown,
26
73
  level = props.level,
27
74
  position = props.position,
28
75
  setSize = props.setSize;
@@ -32,8 +79,16 @@ var TreeViewItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
32
79
  (0, _react.useImperativeHandle)(ref, function () {
33
80
  return treeItemRef.current;
34
81
  });
82
+
83
+ /* istanbul ignore next */
35
84
  var _useTreeViewContext = (0, _TreeViewContext.useTreeViewContext)(),
36
- state = _useTreeViewContext.state;
85
+ state = _useTreeViewContext.state,
86
+ tree = _useTreeViewContext.tree,
87
+ refArray = _useTreeViewContext.refArray,
88
+ setRefs = _useTreeViewContext.setRefs,
89
+ flatKeyArray = _useTreeViewContext.flatKeyArray,
90
+ pageLength = _useTreeViewContext.pageLength,
91
+ setLastFocusedItem = _useTreeViewContext.setLastFocusedItem;
37
92
  var _useOption = (0, _listbox.useOption)({
38
93
  key: key
39
94
  }, state, treeItemRef),
@@ -41,24 +96,65 @@ var TreeViewItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
41
96
  isSelected = _useOption.isSelected,
42
97
  isDisabled = _useOption.isDisabled;
43
98
  var isExpanded = state.expandedKeys.has(key);
99
+ var onKeyDownFunction = function onKeyDownFunction(e) {
100
+ /* istanbul ignore next */
101
+ onKeyDownItem(e, state, key, tree, isSelected, isExpanded, focusManager, flatKeyArray, refArray, pageLength);
102
+ if (onKeyDown) {
103
+ onKeyDown(e, key);
104
+ }
105
+ };
106
+
107
+ // ignoring from tests, but this is actually being unit tested
108
+ /* istanbul ignore next */
109
+ var removeRefFromArray = function removeRefFromArray() {
110
+ setRefs(function (prev) {
111
+ return (0, _TreeViewSection.removeRefFromArrayHelper)(prev, key);
112
+ });
113
+ };
114
+ var addRefToArray = function addRefToArray() {
115
+ setRefs(function (prev) {
116
+ return (0, _TreeViewSection.addRefToArrayHelper)(prev, key, treeItemRef);
117
+ });
118
+ };
119
+
120
+ // adds and removes refs on mount and dismount
121
+ /* istanbul ignore next */
122
+ (0, _react.useEffect)(function () {
123
+ // this runs on mount
124
+ addRefToArray();
125
+ return function () {
126
+ // this runs on cleanup
127
+ removeRefFromArray(key, refArray);
128
+ };
129
+ }, []);
130
+ var _useFocusRing = (0, _focus.useFocusRing)(),
131
+ isFocusVisible = _useFocusRing.isFocusVisible,
132
+ focusProps = _useFocusRing.focusProps;
133
+ var mergedProps = (0, _utils.mergeProps)(focusProps, optionProps, {
134
+ onFocus: function onFocus() {
135
+ return setLastFocusedItem(key);
136
+ }
137
+ });
138
+ var _useStatusClasses = (0, _hooks.useStatusClasses)('', {
139
+ isFocused: isFocusVisible
140
+ }),
141
+ classNames = _useStatusClasses.classNames;
44
142
  return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
45
143
  as: "li",
46
144
  isRow: true,
47
145
  ref: treeItemRef,
48
- "aria-disabled": isDisabled,
146
+ "aria-disabled": isDisabled
147
+ }, mergedProps, {
148
+ role: "treeitem",
149
+ variant: "treeView.wrapper",
150
+ className: classNames,
151
+ "aria-selected": isSelected,
49
152
  "aria-level": level,
50
153
  "aria-posinset": position + 1,
51
- "aria-setsize": setSize
52
- }, optionProps, {
53
- role: "treeitem",
54
- sx: {
55
- width: '100%',
56
- ml: '36px',
57
- ':not(:last-child)': {
58
- pb: 'sm'
59
- }
60
- },
61
- "aria-selected": isSelected
154
+ "aria-setsize": setSize,
155
+ onKeyDown: function onKeyDown(e) {
156
+ return onKeyDownFunction(e);
157
+ }
62
158
  }), (0, _react2.jsx)(_TreeViewRow["default"], {
63
159
  item: item,
64
160
  title: title,
@@ -72,8 +168,10 @@ TreeViewItem.propTypes = {
72
168
  item: _propTypes["default"].shape({
73
169
  key: _propTypes["default"].string
74
170
  }),
171
+ focusManager: _propTypes["default"].shape({}),
75
172
  name: _propTypes["default"].string,
76
173
  title: _propTypes["default"].string,
174
+ onKeyDown: _propTypes["default"].func,
77
175
  level: _propTypes["default"].number,
78
176
  position: _propTypes["default"].number,
79
177
  setSize: _propTypes["default"].number
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.verifyIndex = exports.sectionPressHandlers = exports.pageUpOrDown = exports.onUpPress = exports.onTabPress = exports.onSpacePress = exports.onRightPress = exports.onRightLeftItemPress = exports.onPageUpPress = exports.onPageDownPress = exports.onLeftPress = exports.onHomePress = exports.onEnterPress = exports.onEndPress = exports.onDownPress = exports.itemPressHandlers = void 0;
9
+ var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
10
+ var _findIndex = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find-index"));
11
+ var focusPrevious = function focusPrevious(index, refArray, flatKeyList) {
12
+ if (index !== 0) {
13
+ var key = flatKeyList[index - 1].key;
14
+ var _refArray$find = (0, _find["default"])(refArray).call(refArray, function (item) {
15
+ return item.key === key;
16
+ }),
17
+ thisRef = _refArray$find.thisRef;
18
+ thisRef.current.focus();
19
+ }
20
+ };
21
+ var focusNext = function focusNext(index, refArray, flatKeyList) {
22
+ if (index !== flatKeyList.length - 1) {
23
+ var key = flatKeyList[index + 1].key;
24
+ var _refArray$find2 = (0, _find["default"])(refArray).call(refArray, function (item) {
25
+ return item.key === key;
26
+ }),
27
+ thisRef = _refArray$find2.thisRef;
28
+ thisRef.current.focus();
29
+ }
30
+ };
31
+ var verifyIndex = function verifyIndex(thisIndex, interval, length) {
32
+ var newIndex = thisIndex + interval;
33
+ if (newIndex < 0) {
34
+ return 0;
35
+ }
36
+ if (newIndex >= length) {
37
+ return length - 1;
38
+ }
39
+ return newIndex;
40
+ };
41
+ exports.verifyIndex = verifyIndex;
42
+ var onHomePress = function onHomePress(key, flatKeyArray, refArray) {
43
+ var _thisRef$current;
44
+ var firstKey = flatKeyArray[0];
45
+ if (firstKey.key === key) {
46
+ return;
47
+ }
48
+ var _refArray$find3 = (0, _find["default"])(refArray).call(refArray, function (_item) {
49
+ return _item.key === firstKey.key;
50
+ }),
51
+ thisRef = _refArray$find3.thisRef;
52
+ (_thisRef$current = thisRef.current) === null || _thisRef$current === void 0 ? void 0 : _thisRef$current.focus();
53
+ };
54
+ exports.onHomePress = onHomePress;
55
+ var onEndPress = function onEndPress(key, flatKeyArray, refArray) {
56
+ var _thisRef$current2;
57
+ var lastKey = flatKeyArray[flatKeyArray.length - 1];
58
+ if (lastKey.key === key) {
59
+ return;
60
+ }
61
+ var _refArray$find4 = (0, _find["default"])(refArray).call(refArray, function (_item) {
62
+ return _item.key === lastKey.key;
63
+ }),
64
+ thisRef = _refArray$find4.thisRef;
65
+ (_thisRef$current2 = thisRef.current) === null || _thisRef$current2 === void 0 ? void 0 : _thisRef$current2.focus();
66
+ };
67
+ exports.onEndPress = onEndPress;
68
+ var pageUpOrDown = function pageUpOrDown(key, flatKeyArray, refArray, pageLength) {
69
+ var _thisRef$current3;
70
+ var thisIndex = (0, _findIndex["default"])(flatKeyArray).call(flatKeyArray, function (item) {
71
+ return item.key === key;
72
+ });
73
+ var newIndex = verifyIndex(thisIndex, pageLength, flatKeyArray.length);
74
+ var foundKey = flatKeyArray[newIndex].key;
75
+ var _refArray$find5 = (0, _find["default"])(refArray).call(refArray, function (_item) {
76
+ return _item.key === foundKey;
77
+ }),
78
+ thisRef = _refArray$find5.thisRef;
79
+ (_thisRef$current3 = thisRef.current) === null || _thisRef$current3 === void 0 ? void 0 : _thisRef$current3.focus();
80
+ };
81
+ exports.pageUpOrDown = pageUpOrDown;
82
+ var onEnterPress = function onEnterPress(e, state, key) {
83
+ state.toggleKey(key);
84
+ e.preventDefault();
85
+ e.stopPropagation();
86
+ };
87
+ exports.onEnterPress = onEnterPress;
88
+ var onLeftPress = function onLeftPress(e, focusManager, state, key, isExpanded, refArray) {
89
+ var isEventTargetAKey = (0, _find["default"])(refArray).call(refArray, function (_item) {
90
+ return _item.thisRef.current === e.target;
91
+ });
92
+ if (isExpanded && isEventTargetAKey) {
93
+ state.toggleKey(key);
94
+ }
95
+ if (isExpanded && !isEventTargetAKey) {
96
+ focusManager.focusPrevious();
97
+ }
98
+ e.preventDefault();
99
+ e.stopPropagation();
100
+ };
101
+ exports.onLeftPress = onLeftPress;
102
+ var onSpacePress = function onSpacePress(e, tree, key, isSelected) {
103
+ if (isSelected) {
104
+ tree.setSelectedKeys([]);
105
+ } else {
106
+ tree.setSelectedKeys([key]);
107
+ }
108
+ e.preventDefault();
109
+ e.stopPropagation();
110
+ };
111
+ exports.onSpacePress = onSpacePress;
112
+ var onUpPress = function onUpPress(e, key, refArray, flatKeyList) {
113
+ var foundIndex = (0, _findIndex["default"])(flatKeyList).call(flatKeyList, function (item) {
114
+ return item.key === key;
115
+ });
116
+ focusPrevious(foundIndex, refArray, flatKeyList);
117
+ e.preventDefault();
118
+ e.stopPropagation();
119
+ };
120
+ exports.onUpPress = onUpPress;
121
+ var onTabPress = function onTabPress(e, refArray, focusManager, isSection) {
122
+ var isEventTargetAKey = (0, _find["default"])(refArray).call(refArray, function (_item) {
123
+ return _item.thisRef.current === e.target;
124
+ });
125
+ if (isEventTargetAKey && isSection) {
126
+ focusManager.focusNext();
127
+ e.preventDefault();
128
+ e.stopPropagation();
129
+ }
130
+ };
131
+ exports.onTabPress = onTabPress;
132
+ var onRightPress = function onRightPress(e, focusManager, state, key, isExpanded, refArray) {
133
+ if (!isExpanded) {
134
+ state.toggleKey(key);
135
+ return;
136
+ }
137
+ var isEventTargetAKey = (0, _find["default"])(refArray).call(refArray, function (_item) {
138
+ return _item.thisRef.current === e.target;
139
+ });
140
+ if (isExpanded && isEventTargetAKey) {
141
+ focusManager.focusNext();
142
+ }
143
+ e.preventDefault();
144
+ e.stopPropagation();
145
+ };
146
+ exports.onRightPress = onRightPress;
147
+ var onDownPress = function onDownPress(e, key, refArray, flatKeyList) {
148
+ // find the key
149
+ var foundIndex = (0, _findIndex["default"])(flatKeyList).call(flatKeyList, function (item) {
150
+ return item.key === key;
151
+ });
152
+ focusNext(foundIndex, refArray, flatKeyList);
153
+ // check if first or last
154
+ e.preventDefault();
155
+ e.stopPropagation();
156
+ };
157
+ exports.onDownPress = onDownPress;
158
+ var onRightLeftItemPress = function onRightLeftItemPress(e) {
159
+ e.preventDefault();
160
+ e.stopPropagation();
161
+ };
162
+ exports.onRightLeftItemPress = onRightLeftItemPress;
163
+ var onPageUpPress = function onPageUpPress(e, key, flatKeyArray, refArray, pageLength) {
164
+ pageUpOrDown(key, flatKeyArray, refArray, -Math.abs(pageLength));
165
+ e.preventDefault();
166
+ e.stopPropagation();
167
+ };
168
+ exports.onPageUpPress = onPageUpPress;
169
+ var onPageDownPress = function onPageDownPress(e, key, flatKeyArray, refArray, pageLength) {
170
+ pageUpOrDown(key, flatKeyArray, refArray, Math.abs(pageLength));
171
+ e.preventDefault();
172
+ e.stopPropagation();
173
+ };
174
+ exports.onPageDownPress = onPageDownPress;
175
+ var sectionPressHandlers = {
176
+ onEnterPress: onEnterPress,
177
+ onSpacePress: onSpacePress,
178
+ onLeftPress: onLeftPress,
179
+ onRightPress: onRightPress,
180
+ onUpPress: onUpPress,
181
+ onDownPress: onDownPress,
182
+ onTabPress: onTabPress,
183
+ onPageUpPress: onPageUpPress,
184
+ onPageDownPress: onPageDownPress,
185
+ onHomePress: onHomePress,
186
+ onEndPress: onEndPress
187
+ };
188
+ exports.sectionPressHandlers = sectionPressHandlers;
189
+ var itemPressHandlers = {
190
+ onSpacePress: onSpacePress,
191
+ onDownPress: onDownPress,
192
+ onUpPress: onUpPress,
193
+ onRightLeftItemPress: onRightLeftItemPress,
194
+ onTabPress: onTabPress,
195
+ onPageUpPress: onPageUpPress,
196
+ onPageDownPress: onPageDownPress,
197
+ onHomePress: onHomePress,
198
+ onEndPress: onEndPress
199
+ };
200
+ exports.itemPressHandlers = itemPressHandlers;