@pingux/astro 2.32.0-alpha.1 → 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 (143) hide show
  1. package/lib/cjs/components/AccordionGroup/AccordionGroup.stories.js +1 -1
  2. package/lib/cjs/components/Badge/Badge.stories.js +1 -1
  3. package/lib/cjs/components/Badge/Convenience/ConvenienceBadges.stories.js +1 -1
  4. package/lib/cjs/components/Bracket/Bracket.stories.js +1 -1
  5. package/lib/cjs/components/Breadcrumbs/Breadcrumbs.stories.js +1 -1
  6. package/lib/cjs/components/Button/Button.stories.d.ts +1 -1
  7. package/lib/cjs/components/Button/Button.stories.js +1 -1
  8. package/lib/cjs/components/Calendar/Calendar.stories.js +1 -1
  9. package/lib/cjs/components/Calendar/Calendar.test.js +9 -32
  10. package/lib/cjs/components/Callout/Callout.stories.js +1 -1
  11. package/lib/cjs/components/Card/Card.stories.js +1 -1
  12. package/lib/cjs/components/CodeView/CodeView.stories.js +1 -1
  13. package/lib/cjs/components/CollapsiblePanel/CollapsiblePanel.stories.js +1 -1
  14. package/lib/cjs/components/CopyText/CopyText.stories.js +1 -1
  15. package/lib/cjs/components/HelpHint/HelpHint.stories.js +1 -1
  16. package/lib/cjs/components/Icon/Icon.stories.js +1 -1
  17. package/lib/cjs/components/IconBadge/IconBadge.stories.js +1 -1
  18. package/lib/cjs/components/IconButton/IconButton.stories.js +1 -1
  19. package/lib/cjs/components/ImageUploadField/ImageUploadField.test.js +47 -14
  20. package/lib/cjs/components/Label/Label.test.js +10 -7
  21. package/lib/cjs/components/Link/Link.stories.js +1 -1
  22. package/lib/cjs/components/Loader/Loader.stories.js +1 -1
  23. package/lib/cjs/components/Menu/Menu.stories.js +1 -1
  24. package/lib/cjs/components/Messages/Messages.js +42 -9
  25. package/lib/cjs/components/Messages/Messages.stories.js +1 -1
  26. package/lib/cjs/components/Messages/Messages.test.js +7 -4
  27. package/lib/cjs/components/Modal/Modal.stories.js +1 -1
  28. package/lib/cjs/components/NavBar/NavBar.stories.js +1 -1
  29. package/lib/cjs/components/OverlayPanel/OverlayPanel.stories.js +3 -17
  30. package/lib/cjs/components/PanelHeader/PanelHeader.stories.js +1 -1
  31. package/lib/cjs/components/PanelHeader/PanelHeader.test.js +7 -3
  32. package/lib/cjs/components/PopoverMenu/PopoverMenu.stories.js +1 -1
  33. package/lib/cjs/components/RequirementsList/RequirementsList.stories.js +1 -1
  34. package/lib/cjs/components/ScrollBox/ScrollBox.stories.js +1 -1
  35. package/lib/cjs/components/Separator/Separator.stories.js +1 -1
  36. package/lib/cjs/components/Stepper/Stepper.stories.js +1 -1
  37. package/lib/cjs/components/TreeView/TreeView.js +99 -11
  38. package/lib/cjs/components/TreeView/TreeView.stories.js +23 -10
  39. package/lib/cjs/components/TreeView/TreeView.styles.js +22 -2
  40. package/lib/cjs/components/TreeView/TreeView.test.js +91 -11
  41. package/lib/cjs/components/TreeView/TreeViewItem.js +112 -14
  42. package/lib/cjs/components/TreeView/TreeViewKeyboardDelegate.js +200 -0
  43. package/lib/cjs/components/TreeView/TreeViewKeyboardDelegate.test.js +511 -0
  44. package/lib/cjs/components/TreeView/TreeViewRow.js +20 -5
  45. package/lib/cjs/components/TreeView/TreeViewSection.js +164 -16
  46. package/lib/cjs/components/TreeView/TreeViewWrapper.js +40 -0
  47. package/lib/cjs/hooks/useComponentToggle/index.d.ts +1 -0
  48. package/lib/cjs/hooks/useComponentToggle/useComponentToggle.d.ts +32 -0
  49. package/lib/cjs/hooks/useComponentToggle/useComponentToggle.js +4 -20
  50. package/lib/cjs/hooks/useComponentToggle/useComponentToggle.test.d.ts +1 -0
  51. package/lib/cjs/hooks/useComponentToggle/useComponentToggle.test.js +8 -9
  52. package/lib/cjs/hooks/useFallbackImage/index.d.ts +1 -0
  53. package/lib/cjs/hooks/useFallbackImage/useFallbackImage.d.ts +10 -0
  54. package/lib/cjs/hooks/useFallbackImage/useFallbackImage.js +1 -2
  55. package/lib/cjs/hooks/useFallbackImage/useFallbackImage.test.d.ts +1 -0
  56. package/lib/cjs/hooks/useFallbackImage/useFallbackImage.test.js +9 -9
  57. package/lib/cjs/hooks/useImageUploadState/index.d.ts +1 -0
  58. package/lib/cjs/hooks/useImageUploadState/useImageUploadState.d.ts +28 -0
  59. package/lib/cjs/hooks/useImageUploadState/useImageUploadState.js +9 -6
  60. package/lib/cjs/hooks/useModalState/index.d.ts +1 -0
  61. package/lib/cjs/hooks/useModalState/useModalState.d.ts +21 -0
  62. package/lib/cjs/hooks/useModalState/useModalState.js +0 -9
  63. package/lib/cjs/hooks/useModalState/useModalState.test.d.ts +1 -0
  64. package/lib/cjs/recipes/AttributeMapping.stories.js +1 -1
  65. package/lib/cjs/recipes/ConditionFilter.stories.js +1 -1
  66. package/lib/cjs/recipes/MaskedValue.stories.js +1 -1
  67. package/lib/cjs/recipes/MultipagePopup.stories.js +1 -1
  68. package/lib/cjs/recipes/OneWayToBidirectionalArrow.stories.js +1 -1
  69. package/lib/cjs/recipes/PanelContent.stories.js +1 -1
  70. package/lib/cjs/recipes/Slider.stories.js +1 -1
  71. package/lib/cjs/recipes/TrialExperienceIndustryButtons.stories.js +1 -1
  72. package/lib/cjs/recipes/TrialExperienceStatusBar.stories.js +1 -1
  73. package/lib/cjs/utils/designUtils/figmaLinks.d.ts +7 -0
  74. package/lib/cjs/utils/testUtils/setupTests.d.ts +4 -0
  75. package/lib/cjs/utils/testUtils/testAxe.d.ts +2 -0
  76. package/lib/cjs/utils/testUtils/testTheme.d.ts +21 -0
  77. package/lib/cjs/utils/testUtils/testWrapper.d.ts +5 -0
  78. package/lib/cjs/utils/testUtils/testWrapper.js +3 -2
  79. package/lib/cjs/utils/testUtils/universalComponentTest.d.ts +5 -0
  80. package/lib/cjs/utils/testUtils/universalComponentTest.js +86 -0
  81. package/lib/components/AccordionGroup/AccordionGroup.stories.js +1 -1
  82. package/lib/components/Badge/Badge.stories.js +1 -1
  83. package/lib/components/Badge/Convenience/ConvenienceBadges.stories.js +1 -1
  84. package/lib/components/Bracket/Bracket.stories.js +1 -1
  85. package/lib/components/Breadcrumbs/Breadcrumbs.stories.js +1 -1
  86. package/lib/components/Button/Button.stories.js +1 -1
  87. package/lib/components/Calendar/Calendar.stories.js +1 -1
  88. package/lib/components/Calendar/Calendar.test.js +9 -32
  89. package/lib/components/Callout/Callout.stories.js +1 -1
  90. package/lib/components/Card/Card.stories.js +1 -1
  91. package/lib/components/CodeView/CodeView.stories.js +1 -1
  92. package/lib/components/CollapsiblePanel/CollapsiblePanel.stories.js +1 -1
  93. package/lib/components/CopyText/CopyText.stories.js +1 -1
  94. package/lib/components/HelpHint/HelpHint.stories.js +1 -1
  95. package/lib/components/Icon/Icon.stories.js +1 -1
  96. package/lib/components/IconBadge/IconBadge.stories.js +1 -1
  97. package/lib/components/IconButton/IconButton.stories.js +1 -1
  98. package/lib/components/ImageUploadField/ImageUploadField.test.js +47 -14
  99. package/lib/components/Label/Label.test.js +8 -5
  100. package/lib/components/Link/Link.stories.js +1 -1
  101. package/lib/components/Loader/Loader.stories.js +1 -1
  102. package/lib/components/Menu/Menu.stories.js +1 -1
  103. package/lib/components/Messages/Messages.js +47 -15
  104. package/lib/components/Messages/Messages.stories.js +1 -1
  105. package/lib/components/Messages/Messages.test.js +7 -4
  106. package/lib/components/Modal/Modal.stories.js +1 -1
  107. package/lib/components/NavBar/NavBar.stories.js +1 -1
  108. package/lib/components/OverlayPanel/OverlayPanel.stories.js +4 -18
  109. package/lib/components/PanelHeader/PanelHeader.stories.js +1 -1
  110. package/lib/components/PanelHeader/PanelHeader.test.js +7 -3
  111. package/lib/components/PopoverMenu/PopoverMenu.stories.js +1 -1
  112. package/lib/components/RequirementsList/RequirementsList.stories.js +1 -1
  113. package/lib/components/ScrollBox/ScrollBox.stories.js +1 -1
  114. package/lib/components/Separator/Separator.stories.js +1 -1
  115. package/lib/components/Stepper/Stepper.stories.js +1 -1
  116. package/lib/components/TreeView/TreeView.js +100 -12
  117. package/lib/components/TreeView/TreeView.stories.js +23 -10
  118. package/lib/components/TreeView/TreeView.styles.js +22 -2
  119. package/lib/components/TreeView/TreeView.test.js +92 -12
  120. package/lib/components/TreeView/TreeViewItem.js +111 -14
  121. package/lib/components/TreeView/TreeViewKeyboardDelegate.js +176 -0
  122. package/lib/components/TreeView/TreeViewKeyboardDelegate.test.js +496 -0
  123. package/lib/components/TreeView/TreeViewRow.js +20 -5
  124. package/lib/components/TreeView/TreeViewSection.js +161 -16
  125. package/lib/components/TreeView/TreeViewWrapper.js +31 -0
  126. package/lib/hooks/useComponentToggle/useComponentToggle.js +4 -21
  127. package/lib/hooks/useComponentToggle/useComponentToggle.test.js +8 -9
  128. package/lib/hooks/useFallbackImage/useFallbackImage.js +1 -2
  129. package/lib/hooks/useFallbackImage/useFallbackImage.test.js +6 -6
  130. package/lib/hooks/useImageUploadState/useImageUploadState.js +9 -6
  131. package/lib/hooks/useModalState/useModalState.js +0 -10
  132. package/lib/recipes/AttributeMapping.stories.js +1 -1
  133. package/lib/recipes/ConditionFilter.stories.js +1 -1
  134. package/lib/recipes/MaskedValue.stories.js +1 -1
  135. package/lib/recipes/MultipagePopup.stories.js +1 -1
  136. package/lib/recipes/OneWayToBidirectionalArrow.stories.js +1 -1
  137. package/lib/recipes/PanelContent.stories.js +1 -1
  138. package/lib/recipes/Slider.stories.js +1 -1
  139. package/lib/recipes/TrialExperienceIndustryButtons.stories.js +1 -1
  140. package/lib/recipes/TrialExperienceStatusBar.stories.js +1 -1
  141. package/lib/utils/testUtils/testWrapper.js +3 -2
  142. package/lib/utils/testUtils/universalComponentTest.js +74 -0
  143. package/package.json +5 -1
@@ -9,7 +9,7 @@ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object
9
9
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
10
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
11
11
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
- var _excluded = ["title", "mainIcon", "lastIcon", "item", "items", "isExpanded", "isSelected", "isDisabled", "iconButtonProps"];
12
+ var _excluded = ["title", "mainIcon", "lastIcon", "item", "items", "isExpanded", "isSelected", "isDisabled", "isParentFocused", "iconButtonProps"];
13
13
  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; }
14
14
  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; }
15
15
  import React, { forwardRef, useImperativeHandle, useRef } from 'react';
@@ -35,6 +35,7 @@ var TreeViewRow = /*#__PURE__*/forwardRef(function (props, ref) {
35
35
  isExpanded = props.isExpanded,
36
36
  isSelected = props.isSelected,
37
37
  isDisabled = props.isDisabled,
38
+ isParentFocused = props.isParentFocused,
38
39
  iconButtonProps = props.iconButtonProps,
39
40
  others = _objectWithoutProperties(props, _excluded);
40
41
  var treeRowRef = useRef();
@@ -73,13 +74,19 @@ var TreeViewRow = /*#__PURE__*/forwardRef(function (props, ref) {
73
74
  }),
74
75
  classNames = _useStatusClasses.classNames;
75
76
  var mergedProps = mergeProps(hoverProps, pressProps, others);
77
+
78
+ // console.log(`ROW: ${key} has parent focus: ${isParentFocused}`)
79
+
76
80
  return ___EmotionJSX(Box, _extends({
77
81
  ref: treeRowRef,
78
82
  isRow: true,
79
83
  alignItems: "center",
80
84
  gap: "xs",
81
85
  sx: {
82
- flexGrow: 1
86
+ flexGrow: 1,
87
+ '& :focus': {
88
+ border: 'none'
89
+ }
83
90
  },
84
91
  className: classNames,
85
92
  key: "".concat(key, " box")
@@ -92,15 +99,22 @@ var TreeViewRow = /*#__PURE__*/forwardRef(function (props, ref) {
92
99
  size: 25,
93
100
  title: "".concat(title, " expand or collapse button")
94
101
  },
95
- buttonProps: {
102
+ buttonProps: _objectSpread(_objectSpread({
96
103
  'aria-label': "".concat(title, " expand or collapse button")
97
- }
104
+ }, isParentFocused && {
105
+ tabIndex: 0
106
+ }), !isParentFocused && {
107
+ tabIndex: -1
108
+ })
98
109
  }), ___EmotionJSX(Box, {
99
110
  isRow: true,
100
111
  className: classNames,
101
112
  alignItems: "center",
102
113
  gap: "xs",
103
- variant: "treeView.treeRow"
114
+ variant: "treeView.treeRow",
115
+ sx: !items && {
116
+ ml: '36px'
117
+ }
104
118
  }, ___EmotionJSX(Icon, {
105
119
  color: "focus",
106
120
  icon: mainIcon,
@@ -121,6 +135,7 @@ TreeViewRow.propTypes = {
121
135
  isSelected: PropTypes.bool,
122
136
  isDisabled: PropTypes.bool,
123
137
  isExpanded: PropTypes.bool,
138
+ isParentFocused: PropTypes.bool,
124
139
  title: PropTypes.string,
125
140
  items: PropTypes.arrayOf(PropTypes.shape({})),
126
141
  iconButtonProps: PropTypes.shape({
@@ -1,19 +1,105 @@
1
1
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
+ import _someInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/some";
3
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
4
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
2
5
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
3
6
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
4
- import React, { forwardRef, useImperativeHandle, useRef } from 'react';
7
+ import React, { forwardRef, useEffect, useImperativeHandle, useRef } from 'react';
8
+ import { useFocusRing } from '@react-aria/focus';
5
9
  import { useOption } from '@react-aria/listbox';
10
+ import { mergeProps } from '@react-aria/utils';
6
11
  import PropTypes from 'prop-types';
7
12
  import { useTreeViewContext } from '../../context/TreeViewContext';
13
+ import { useStatusClasses } from '../../hooks';
8
14
  import { Box, TreeViewItem } from '../../index';
9
15
  import { SectionOrItemRender } from './TreeView';
16
+ import { sectionPressHandlers } from './TreeViewKeyboardDelegate';
10
17
  import TreeViewRow from './TreeViewRow';
11
18
  import { jsx as ___EmotionJSX } from "@emotion/react";
19
+ export var onKeyDownSection = function onKeyDownSection(e, state, key, tree, isSelected, isExpanded, focusManager, flatKeyArray, refArray, pageLength, isFocused) {
20
+ switch (e.which) {
21
+ case 9:
22
+ if (isFocused) {
23
+ sectionPressHandlers.onTabPress(e, refArray, focusManager, true, key);
24
+ }
25
+ break;
26
+ case 13:
27
+ sectionPressHandlers.onEnterPress(e, state, key);
28
+ break;
29
+ case 32:
30
+ sectionPressHandlers.onSpacePress(e, tree, key, isSelected);
31
+ break;
32
+ case 33:
33
+ sectionPressHandlers.onPageUpPress(e, key, flatKeyArray, refArray, pageLength);
34
+ break;
35
+ case 34:
36
+ sectionPressHandlers.onPageDownPress(e, key, flatKeyArray, refArray, pageLength);
37
+ break;
38
+ case 36:
39
+ sectionPressHandlers.onHomePress(key, flatKeyArray, refArray);
40
+ e.preventDefault();
41
+ e.stopPropagation();
42
+ break;
43
+ case 35:
44
+ sectionPressHandlers.onEndPress(key, flatKeyArray, refArray);
45
+ e.preventDefault();
46
+ e.stopPropagation();
47
+ break;
48
+ case 37:
49
+ sectionPressHandlers.onLeftPress(e, focusManager, state, key, isExpanded, refArray);
50
+ break;
51
+ case 38:
52
+ sectionPressHandlers.onUpPress(e, key, refArray, flatKeyArray);
53
+ e.preventDefault();
54
+ e.stopPropagation();
55
+ break;
56
+ case 39:
57
+ if (isFocused) {
58
+ sectionPressHandlers.onRightPress(e, focusManager, state, key, isExpanded, refArray);
59
+ }
60
+ break;
61
+ case 40:
62
+ sectionPressHandlers.onDownPress(e, key, refArray, flatKeyArray);
63
+ e.preventDefault();
64
+ e.stopPropagation();
65
+ break;
66
+ default:
67
+ /* istanbul ignore next */
68
+ break;
69
+ }
70
+ };
71
+ export var removeRefFromArrayHelper = function removeRefFromArrayHelper(prevState, keyToRemove) {
72
+ if (_someInstanceProperty(prevState).call(prevState, function (item) {
73
+ return item.key === keyToRemove;
74
+ })) {
75
+ var _context;
76
+ var newArray = _concatInstanceProperty(_context = []).call(_context, _filterInstanceProperty(prevState).call(prevState, function (_item) {
77
+ return _item.key !== keyToRemove;
78
+ }));
79
+ return newArray;
80
+ }
81
+ return prevState;
82
+ };
83
+ export var addRefToArrayHelper = function addRefToArrayHelper(prevState, keyToAdd, refToAdd) {
84
+ if (!_someInstanceProperty(prevState).call(prevState, function (i) {
85
+ return i.key === keyToAdd;
86
+ })) {
87
+ var _context2;
88
+ var thisObj = {
89
+ key: keyToAdd,
90
+ thisRef: refToAdd
91
+ };
92
+ return _concatInstanceProperty(_context2 = []).call(_context2, prevState, [thisObj]);
93
+ }
94
+ return prevState;
95
+ };
12
96
  var TreeViewSection = /*#__PURE__*/forwardRef(function (props, ref) {
13
- var _context;
97
+ var _context3;
14
98
  var item = props.item,
15
99
  items = props.items,
16
100
  title = props.title,
101
+ focusManager = props.focusManager,
102
+ onKeyDown = props.onKeyDown,
17
103
  level = props.level,
18
104
  position = props.position,
19
105
  setSize = props.setSize;
@@ -24,51 +110,107 @@ var TreeViewSection = /*#__PURE__*/forwardRef(function (props, ref) {
24
110
  return treeSectionRef.current;
25
111
  });
26
112
  var _useTreeViewContext = useTreeViewContext(),
27
- state = _useTreeViewContext.state;
113
+ state = _useTreeViewContext.state,
114
+ tree = _useTreeViewContext.tree,
115
+ refArray = _useTreeViewContext.refArray,
116
+ setRefs = _useTreeViewContext.setRefs,
117
+ flatKeyArray = _useTreeViewContext.flatKeyArray,
118
+ pageLength = _useTreeViewContext.pageLength,
119
+ setLastFocusedItem = _useTreeViewContext.setLastFocusedItem,
120
+ lastFocusedItem = _useTreeViewContext.lastFocusedItem;
28
121
  var _useOption = useOption({
29
122
  key: key
30
123
  }, state, treeSectionRef),
31
124
  optionProps = _useOption.optionProps,
32
125
  isDisabled = _useOption.isDisabled,
33
126
  isSelected = _useOption.isSelected;
127
+ var _useFocusRing = useFocusRing(),
128
+ focusProps = _useFocusRing.focusProps,
129
+ isFocused = _useFocusRing.isFocused;
130
+ var _useFocusRing2 = useFocusRing({
131
+ within: true
132
+ }),
133
+ focusPropsWithin = _useFocusRing2.focusProps,
134
+ isFocusedWithin = _useFocusRing2.isFocused;
34
135
  var isExpanded = state.expandedKeys.has(key);
136
+ var onKeyDownFunction = function onKeyDownFunction(e) {
137
+ onKeyDownSection(e, state, key, tree, isSelected, isExpanded, focusManager, flatKeyArray, refArray, pageLength, isFocused);
138
+ if (onKeyDown) {
139
+ onKeyDown(e, key);
140
+ }
141
+ };
142
+ var addRefToArray = function addRefToArray(thisKey, thisRef) {
143
+ setRefs(function (prev) {
144
+ return addRefToArrayHelper(prev, thisKey, thisRef);
145
+ });
146
+ };
147
+ var removeRefFromArray = function removeRefFromArray() {
148
+ setRefs(function (prev) {
149
+ return removeRefFromArrayHelper(prev, key);
150
+ });
151
+ };
152
+
153
+ // adds and removes refs on mount and dismount
154
+ useEffect(function () {
155
+ // this runs on mount
156
+ addRefToArray(key, treeSectionRef);
157
+ return function () {
158
+ // this runs on cleanup
159
+ removeRefFromArray(key, refArray);
160
+ };
161
+ }, []);
162
+ var mergedProps = mergeProps(focusPropsWithin, focusProps, optionProps, {
163
+ onFocus: function onFocus() {
164
+ return setLastFocusedItem(key);
165
+ }
166
+ });
167
+ var _useStatusClasses = useStatusClasses('', {
168
+ isFocused: isFocused
169
+ }),
170
+ classNames = _useStatusClasses.classNames;
35
171
  return ___EmotionJSX(Box, _extends({
36
172
  ref: treeSectionRef,
37
173
  as: "li",
38
- sx: {
39
- ':not(:last-child)': {
40
- pb: 'sm'
41
- }
42
- },
43
174
  "aria-expanded": isExpanded,
44
- "aria-disabled": isDisabled,
175
+ "aria-disabled": isDisabled
176
+ }, mergedProps, {
177
+ role: "treeitem",
178
+ variant: "treeView.wrapper",
179
+ className: classNames,
180
+ "aria-selected": isSelected,
45
181
  "aria-level": level,
46
182
  "aria-setsize": setSize,
47
- "aria-posinset": position + 1
48
- }, optionProps, {
49
- role: "treeitem",
50
- "aria-selected": isSelected
183
+ "aria-posinset": position + 1,
184
+ onKeyDown: function onKeyDown(e) {
185
+ return onKeyDownFunction(e);
186
+ },
187
+ tabIndex: lastFocusedItem === key ? 0 : -1
51
188
  }), ___EmotionJSX(TreeViewRow, {
52
189
  item: item,
53
190
  title: title,
54
191
  items: items,
55
192
  isExpanded: isExpanded,
56
193
  isSelected: isSelected,
57
- isDisabled: isDisabled
194
+ isDisabled: isDisabled,
195
+ isParentFocused: isFocusedWithin
58
196
  }), isExpanded && ___EmotionJSX(Box, {
59
197
  as: "ul",
60
198
  role: "group",
61
199
  key: "".concat(item.key, " ul"),
62
200
  sx: {
63
- pl: 'md'
201
+ pl: 'md',
202
+ '& :focus': {
203
+ border: 'none'
204
+ }
64
205
  }
65
- }, _mapInstanceProperty(_context = _Array$from(items)).call(_context, function (_item, _index) {
206
+ }, _mapInstanceProperty(_context3 = _Array$from(items)).call(_context3, function (_item, _index) {
66
207
  var _item$value$items;
67
208
  return SectionOrItemRender(((_item$value$items = _item.value.items) === null || _item$value$items === void 0 ? void 0 : _item$value$items.length) > 0, ___EmotionJSX(TreeViewSection, {
68
209
  item: _item,
69
210
  items: _item.children,
70
211
  title: _item.value.title,
71
212
  key: _item.value.title,
213
+ focusManager: focusManager,
72
214
  level: level + 1,
73
215
  position: _index,
74
216
  setSize: items.length
@@ -76,6 +218,7 @@ var TreeViewSection = /*#__PURE__*/forwardRef(function (props, ref) {
76
218
  item: _item,
77
219
  title: _item.value.title,
78
220
  key: _item.value.title,
221
+ focusManager: focusManager,
79
222
  level: level + 1,
80
223
  position: _index,
81
224
  setSize: items.length
@@ -88,6 +231,8 @@ TreeViewSection.propTypes = {
88
231
  key: PropTypes.string
89
232
  }),
90
233
  title: PropTypes.string,
234
+ focusManager: PropTypes.shape({}),
235
+ onKeyDown: PropTypes.func,
91
236
  level: PropTypes.number,
92
237
  position: PropTypes.number,
93
238
  setSize: PropTypes.number
@@ -0,0 +1,31 @@
1
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
2
+ import React from 'react';
3
+ import { FocusScope, useFocusManager } from '@react-aria/focus';
4
+ import { jsx as ___EmotionJSX } from "@emotion/react";
5
+ var TreeViewWrapper = function TreeViewWrapper(props) {
6
+ var children = props.children;
7
+ var items = _mapInstanceProperty(children).call(children, function (child) {
8
+ return {
9
+ item: child,
10
+ key: child.key
11
+ };
12
+ });
13
+ return ___EmotionJSX(FocusScope, {
14
+ restoreFocus: false,
15
+ contain: false
16
+ }, _mapInstanceProperty(items).call(items, function (_ref) {
17
+ var item = _ref.item,
18
+ key = _ref.key;
19
+ return ___EmotionJSX(FocusableItem, {
20
+ key: key
21
+ }, item);
22
+ }));
23
+ };
24
+ var FocusableItem = function FocusableItem(props) {
25
+ var focusManager = useFocusManager();
26
+ var childWithFocusHandle = /*#__PURE__*/React.cloneElement(props.children, {
27
+ focusManager: focusManager
28
+ });
29
+ return childWithFocusHandle;
30
+ };
31
+ export default TreeViewWrapper;
@@ -1,31 +1,14 @@
1
1
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
2
2
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
3
3
  import { useProgressiveState } from '../index';
4
-
5
- /**
6
- * Returns one of two components that are supplied via props.
7
- * A boolean value is used to determine which component to render.
8
- * State can be handled by either props or within this hook if props are not provided.
9
- * Also returns a function that inverts the boolean attribute, and calls a callback function.
10
- * @param {Object} [props] Properties provided to the state
11
- * @param {Boolean} [props.condition] Boolean that controls which component is returned.
12
- * @param {Component} [props.ComponentToRenderIfTrue]
13
- * Component that is returned when the condition is true.
14
- * @param {Component} [props.ComponentToRenderIfFalse]
15
- * Component that is returned when the condition is false.
16
- * @param {Function} [props.onConditionChange]
17
- * Callback function that is called, when the condition boolean changes, if it is provided .
18
- * @returns {Object} `{ isOpen: Boolean, open: Function, close: Function, toggle: Function }`
19
- * @returns {Object} `{ handleCondtionChange: Function, renderedComponent: Component, }`
20
- */
21
-
22
- var useComponentToggle = function useComponentToggle() {
23
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4
+ var useComponentToggle = function useComponentToggle(props) {
24
5
  var ComponentToRenderIfTrue = props.ComponentToRenderIfTrue,
25
6
  ComponentToRenderIfFalse = props.ComponentToRenderIfFalse,
26
7
  condition = props.condition,
27
8
  onConditionChange = props.onConditionChange;
28
- var _useProgressiveState = useProgressiveState(condition, function () {}),
9
+ var _useProgressiveState = useProgressiveState(condition, function () {
10
+ return null;
11
+ }),
29
12
  _useProgressiveState2 = _slicedToArray(_useProgressiveState, 2),
30
13
  isToggled = _useProgressiveState2[0],
31
14
  setIsToggled = _useProgressiveState2[1];
@@ -9,7 +9,6 @@ import _reverseInstanceProperty from "@babel/runtime-corejs3/core-js-stable/inst
9
9
  import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
10
10
  import _typeof from "@babel/runtime-corejs3/helpers/esm/typeof";
11
11
  import _asyncToGenerator from "@babel/runtime-corejs3/helpers/esm/asyncToGenerator";
12
- import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
13
12
  import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
14
13
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = _Object$defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof _Symbol ? _Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return _Object$defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = _Object$create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = _Object$getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = _Object$create(IteratorPrototype); function defineIteratorMethods(prototype) { var _context3; _forEachInstanceProperty(_context3 = ["next", "throw", "return"]).call(_context3, function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], _forEachInstanceProperty(tryLocsList).call(tryLocsList, pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return _Object$setPrototypeOf ? _Object$setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = _Object$create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = _Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return _reverseInstanceProperty(keys).call(keys), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { var _context4; if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, _forEachInstanceProperty(_context4 = this.tryEntries).call(_context4, resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+_sliceInstanceProperty(name).call(name, 1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
15
14
  import React, { useState } from 'react';
@@ -23,8 +22,8 @@ var condition = false;
23
22
  var defaultProps = {
24
23
  condition: condition,
25
24
  onConditionChange: callback,
26
- ComponentToRenderIfTrue: 'true-string',
27
- ComponentToRenderIfFalse: 'false-string'
25
+ ComponentToRenderIfTrue: ___EmotionJSX("span", null, "true-string"),
26
+ ComponentToRenderIfFalse: ___EmotionJSX("span", null, "false-string")
28
27
  };
29
28
  var TestComponent = function TestComponent() {
30
29
  var _useState = useState(false),
@@ -34,26 +33,26 @@ var TestComponent = function TestComponent() {
34
33
  var conditionalRenderProps = {
35
34
  condition: thisCondition,
36
35
  onConditionChange: setCondition,
37
- ComponentToRenderIfTrue: 'true-string',
38
- ComponentToRenderIfFalse: 'false-string',
36
+ ComponentToRenderIfTrue: ___EmotionJSX("span", null, "true-string"),
37
+ ComponentToRenderIfFalse: ___EmotionJSX("span", null, "false-string"),
39
38
  onConditionChangeProp: callback
40
39
  };
41
40
  var _useComponentToggle = useComponentToggle(conditionalRenderProps),
42
41
  handleConditionChange = _useComponentToggle.handleConditionChange,
43
42
  RenderedComponent = _useComponentToggle.RenderedComponent;
44
43
  return ___EmotionJSX("button", {
44
+ type: "button",
45
45
  "data-testid": "test-div",
46
46
  onClick: handleConditionChange,
47
47
  onKeyDown: handleConditionChange
48
48
  }, RenderedComponent);
49
49
  };
50
50
  var getComponent = function getComponent() {
51
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
52
- return render(___EmotionJSX(TestComponent, _extends({}, props, defaultProps)));
51
+ return render(___EmotionJSX(TestComponent, null));
53
52
  };
54
53
  test('default useField', function () {
55
54
  renderHook(function () {
56
- return useComponentToggle();
55
+ return useComponentToggle(defaultProps);
57
56
  });
58
57
  });
59
58
  test('callback function should call, if provided', function () {
@@ -76,7 +75,7 @@ test('expect hook to return correct data shape', /*#__PURE__*/_asyncToGenerator(
76
75
  }), result = _renderHook2.result;
77
76
  _result$current = result.current, handleConditionChange = _result$current.handleConditionChange, RenderedComponent = _result$current.RenderedComponent;
78
77
  expect(handleConditionChange).toEqual(expect.any(Function));
79
- expect(RenderedComponent).toEqual('false-string');
78
+ expect(RenderedComponent).toEqual(___EmotionJSX("span", null, "false-string"));
80
79
  case 4:
81
80
  case "end":
82
81
  return _context.stop();
@@ -19,8 +19,7 @@ var useFallbackImage = function useFallbackImage(_ref) {
19
19
  };
20
20
  }, []);
21
21
  useEffect(function () {
22
- var timeoutId = 0;
23
- timeoutId = _setTimeout(onFallbackTimeout, fallbackTimeout);
22
+ var timeoutId = _setTimeout(onFallbackTimeout, fallbackTimeout);
24
23
  return function () {
25
24
  return clearTimeout(timeoutId);
26
25
  };
@@ -10,21 +10,21 @@ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
10
10
  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; }
11
11
  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; }
12
12
  import { renderHook } from '@testing-library/react-hooks';
13
- import useFallbackImage from './useFallbackImage';
13
+ import useFallbackImage from '.';
14
14
  var defaultProps = {
15
15
  src: 'test-src',
16
- fallbackImage: 'test-fallback-src',
17
16
  onImageLoad: jest.fn(),
18
17
  onImageError: jest.fn(),
19
18
  fallbackTimeout: 5,
20
- onFallbackTimeout: jest.fn()
19
+ onFallbackTimeout: jest.fn(),
20
+ fallbackImage: 'test-fallback-src'
21
21
  };
22
- test('should return node if all props are correct ', function () {
22
+ test('should return node if all props are correct', function () {
23
23
  var _renderHook = renderHook(function () {
24
24
  return useFallbackImage(defaultProps);
25
25
  }),
26
- current = _renderHook.result.current;
27
- expect(current).toBeInstanceOf(HTMLImageElement);
26
+ result = _renderHook.result;
27
+ expect(result.current).toBeInstanceOf(HTMLImageElement);
28
28
  });
29
29
  test('should not trigger onImageLoad if no fallback passed', function () {
30
30
  renderHook(function () {
@@ -35,11 +35,15 @@ var useImageUploadState = function useImageUploadState(inputRef) {
35
35
  if (previewImage && previewImage !== defaultPreviewImage) {
36
36
  setIsMenuOpen(true);
37
37
  } else {
38
- inputRef.current.click();
38
+ var _inputRef$current;
39
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.click();
39
40
  }
40
41
  }, [defaultPreviewImage, previewImage, inputRef]);
41
42
  var handleInputChange = useCallback(function (event) {
42
43
  var _event$target;
44
+ if (!event.target.files) {
45
+ return;
46
+ }
43
47
  var eventFileType = (_event$target = event.target) === null || _event$target === void 0 || (_event$target = _event$target.files[0]) === null || _event$target === void 0 || (_event$target = _event$target.type) === null || _event$target === void 0 ? void 0 : _event$target.split('/')[0];
44
48
  if (fileTypes !== null && fileTypes !== void 0 && _includesInstanceProperty(fileTypes).call(fileTypes, eventFileType)) {
45
49
  if (onChange && typeof onChange === 'function') {
@@ -52,9 +56,8 @@ var useImageUploadState = function useImageUploadState(inputRef) {
52
56
  var _event$target2;
53
57
  setIsImageType(true);
54
58
  var reader = new FileReader();
55
- reader.onload = function (_ref) {
56
- var result = _ref.target.result;
57
- setPreviewImage(result);
59
+ reader.onload = function () {
60
+ setPreviewImage(reader.result);
58
61
  };
59
62
  reader.readAsDataURL((_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.files[0]);
60
63
  } else {
@@ -76,8 +79,8 @@ var useImageUploadState = function useImageUploadState(inputRef) {
76
79
  return setPreviewImage(defaultPreviewImage);
77
80
  }, [defaultPreviewImage]);
78
81
  var showFileDialog = useCallback(function () {
79
- var _inputRef$current;
80
- return inputRef === null || inputRef === void 0 || (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.click();
82
+ var _inputRef$current2;
83
+ return inputRef === null || inputRef === void 0 || (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.click();
81
84
  }, [inputRef]);
82
85
  var handleLabelClick = useCallback(function (e) {
83
86
  e.preventDefault();
@@ -1,14 +1,4 @@
1
1
  import { useOverlayTriggerState } from 'react-stately';
2
-
3
- /**
4
- * Returns state-related data and functions for use with a Modal component.
5
- * @param {Object} [props] Properties provided to the state
6
- * @param {Boolean} [props.isDefaultOpen] Whether the modal is open by default (uncontrolled).
7
- * @param {Boolean} [props.isOpen] Whether the modal is currently open (controlled).
8
- * @param {Function} [props.onOpenChange] Handler that is called when the open state changes.
9
- * `(isOpen: boolean) => void`
10
- * @returns {Object} `{ isOpen: Boolean, open: Function, close: Function, toggle: Function }`
11
- */
12
2
  var useModalState = function useModalState() {
13
3
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
14
4
  var isDefaultOpen = props.isDefaultOpen,
@@ -9,7 +9,7 @@ import CogsIcon from '@pingux/mdi-react/CogsIcon';
9
9
  import DeleteIcon from '@pingux/mdi-react/DeleteIcon';
10
10
  import { v4 as uuid } from 'uuid';
11
11
  import { Badge, Box, Callout, CheckboxField, ComboBoxField, Icon, IconButton, Item, Link, ScrollBox, Separator, Text, TextField } from '../index';
12
- import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.js';
12
+ import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.ts';
13
13
  import statuses from '../utils/devUtils/constants/statuses';
14
14
  import { jsx as ___EmotionJSX } from "@emotion/react";
15
15
  export default {
@@ -14,7 +14,7 @@ import React from 'react';
14
14
  import PlusIcon from '@pingux/mdi-react/PlusIcon';
15
15
  import TrashIcon from '@pingux/mdi-react/TrashIcon';
16
16
  import { Badge, Box, Bracket, Button, Icon, IconButton, Item, RockerButton, RockerButtonGroup, SelectField, Text, TextField } from '../index';
17
- import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.js';
17
+ import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.ts';
18
18
  import { jsx as ___EmotionJSX } from "@emotion/react";
19
19
  export default {
20
20
  title: 'Recipes/Condition Filter',
@@ -5,7 +5,7 @@ import EyeOffIcon from '@pingux/mdi-react/EyeOffOutlineIcon';
5
5
  import EyeIcon from '@pingux/mdi-react/EyeOutlineIcon';
6
6
  import { useStatusClasses } from '../hooks';
7
7
  import { Box, Icon, IconButton, Text } from '../index';
8
- import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.js';
8
+ import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.ts';
9
9
  import { jsx as ___EmotionJSX } from "@emotion/react";
10
10
  export default {
11
11
  title: 'Recipes/Masked Values',
@@ -22,7 +22,7 @@ import MenuUpIcon from '@pingux/mdi-react/MenuUpIcon';
22
22
  import { useLayoutEffect } from '@react-aria/utils';
23
23
  import { Box, Button, EnvironmentBreadcrumb, Icon, IconButton, Item, Link, Menu, NavBar, NavBarItem, NavBarItemButton, NavBarSection, OverlayProvider, PopoverContainer, PopoverMenu, Separator, Text } from '../index';
24
24
  import { data, logo, PersonIcon, secondData, thirdData } from '../styles/templates/Nav/NavData';
25
- import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.js';
25
+ import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.ts';
26
26
  import { jsx as ___EmotionJSX } from "@emotion/react";
27
27
  export default {
28
28
  title: 'Recipes/Multipage Popup',
@@ -4,7 +4,7 @@ import CogsIcon from '@pingux/mdi-react/CogsIcon';
4
4
  import DeleteIcon from '@pingux/mdi-react/DeleteIcon';
5
5
  import DragVerticalIcon from '@pingux/mdi-react/DragVerticalIcon';
6
6
  import { Box, ComboBoxField, Icon, IconButton, IconButtonToggle, Item } from '../index';
7
- import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.js';
7
+ import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.ts';
8
8
  import { jsx as ___EmotionJSX } from "@emotion/react";
9
9
  export default {
10
10
  title: 'Recipes/One Way to Bidirectional Arrow'
@@ -8,7 +8,7 @@ import PencilIcon from '@pingux/mdi-react/PencilIcon';
8
8
  import PlusIcon from '@pingux/mdi-react/PlusIcon';
9
9
  import { useOverlayPanelState } from '../hooks';
10
10
  import { AccordionGroup, Badge, Box, Button, ButtonBar, CheckboxField, EditButton, Icon, Image, ImageUploadField, NoticeIcon, OverlayPanel, OverlayProvider, PanelHeader, PanelHeaderCloseButton, PanelHeaderMenu, PanelHeaderSwitchField, SelectField, Tab, Tabs, Text, TextField } from '../index';
11
- import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.js';
11
+ import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.ts';
12
12
  import UserImage from '../utils/devUtils/assets/UserImage.png';
13
13
  import statuses from '../utils/devUtils/constants/statuses';
14
14
  import { jsx as ___EmotionJSX } from "@emotion/react";
@@ -18,7 +18,7 @@ import { useSliderState } from 'react-stately';
18
18
  import { useNumberFormatter } from '@react-aria/i18n';
19
19
  import { defaultFocus } from '../components/Button/Buttons.styles';
20
20
  import { Box } from '../index';
21
- import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.js';
21
+ import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.ts';
22
22
  import { jsx as ___EmotionJSX } from "@emotion/react";
23
23
  export default {
24
24
  title: 'Recipes/Slider'
@@ -4,7 +4,7 @@ import React from 'react';
4
4
  import CloseIcon from '@pingux/mdi-react/CloseIcon';
5
5
  import { useModalState } from '../hooks';
6
6
  import { Box, Button, Icon, IconButton, Modal, OverlayProvider, Text } from '../index';
7
- import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.js';
7
+ import { FIGMA_LINKS } from '../utils/designUtils/figmaLinks.ts';
8
8
  import { jsx as ___EmotionJSX } from "@emotion/react";
9
9
  export default {
10
10
  title: 'Recipes/Trial Experience Buttons'