@linzjs/step-ag-grid 23.0.1 → 25.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/dist/GridTheme.scss +1 -1
  2. package/dist/index.css +0 -13
  3. package/dist/src/components/ComponentLoadingWrapper.d.ts +1 -1
  4. package/dist/src/components/Grid.d.ts +17 -17
  5. package/dist/src/components/GridCell.d.ts +9 -9
  6. package/dist/src/components/GridCellFiller.d.ts +2 -2
  7. package/dist/src/components/GridCellMultiEditor.d.ts +6 -6
  8. package/dist/src/components/GridCellMultiSelectClassRules.d.ts +1 -1
  9. package/dist/src/components/GridIcon.d.ts +2 -2
  10. package/dist/src/components/GridNoRowsOverlay.d.ts +1 -1
  11. package/dist/src/components/GridPopoverHook.d.ts +2 -2
  12. package/dist/src/components/GridWrapper.d.ts +1 -1
  13. package/dist/src/components/PostSortRowsHook.d.ts +1 -1
  14. package/dist/src/components/clickInputWhenContainingCellClicked.d.ts +1 -1
  15. package/dist/src/components/gridFilter/GridFilterButtons.d.ts +5 -5
  16. package/dist/src/components/gridFilter/GridFilterColumnsToggle.d.ts +1 -1
  17. package/dist/src/components/gridFilter/GridFilterDownloadCsvButton.d.ts +1 -1
  18. package/dist/src/components/gridFilter/GridFilterHeaderIconButton.d.ts +2 -2
  19. package/dist/src/components/gridFilter/GridFilters.d.ts +1 -1
  20. package/dist/src/components/gridFilter/index.d.ts +7 -7
  21. package/dist/src/components/gridFilter/useGridFilter.d.ts +2 -2
  22. package/dist/src/components/gridForm/GridFormDropDown.d.ts +8 -8
  23. package/dist/src/components/gridForm/GridFormEditBearing.d.ts +2 -2
  24. package/dist/src/components/gridForm/GridFormMessage.d.ts +3 -3
  25. package/dist/src/components/gridForm/GridFormMultiSelect.d.ts +4 -4
  26. package/dist/src/components/gridForm/GridFormMultiSelectGrid.d.ts +4 -4
  27. package/dist/src/components/gridForm/GridFormPopoverMenu.d.ts +5 -5
  28. package/dist/src/components/gridForm/GridFormSubComponentTextArea.d.ts +4 -4
  29. package/dist/src/components/gridForm/GridFormSubComponentTextInput.d.ts +4 -4
  30. package/dist/src/components/gridForm/GridFormTextArea.d.ts +4 -4
  31. package/dist/src/components/gridForm/GridFormTextInput.d.ts +3 -3
  32. package/dist/src/components/gridForm/index.d.ts +10 -10
  33. package/dist/src/components/gridHeader/GridHeaderSelect.d.ts +1 -1
  34. package/dist/src/components/gridHeader/index.d.ts +1 -1
  35. package/dist/src/components/gridHook/index.d.ts +1 -1
  36. package/dist/src/components/gridHook/useGridContextMenu.d.ts +4 -4
  37. package/dist/src/components/gridPopoverEdit/GridButton.d.ts +5 -5
  38. package/dist/src/components/gridPopoverEdit/GridEditBoolean.d.ts +4 -4
  39. package/dist/src/components/gridPopoverEdit/GridPopoutEditMultiSelect.d.ts +4 -4
  40. package/dist/src/components/gridPopoverEdit/GridPopoutEditMultiSelectGrid.d.ts +4 -4
  41. package/dist/src/components/gridPopoverEdit/GridPopoverEditBearing.d.ts +4 -4
  42. package/dist/src/components/gridPopoverEdit/GridPopoverEditDropDown.d.ts +4 -4
  43. package/dist/src/components/gridPopoverEdit/GridPopoverMenu.d.ts +4 -4
  44. package/dist/src/components/gridPopoverEdit/GridPopoverMessage.d.ts +4 -4
  45. package/dist/src/components/gridPopoverEdit/GridPopoverTextArea.d.ts +4 -4
  46. package/dist/src/components/gridPopoverEdit/GridPopoverTextInput.d.ts +4 -4
  47. package/dist/src/components/gridPopoverEdit/index.d.ts +11 -11
  48. package/dist/src/components/gridRender/GridRenderGenericCell.d.ts +5 -5
  49. package/dist/src/components/gridRender/GridRenderPopoutMenuCell.d.ts +1 -1
  50. package/dist/src/components/gridRender/index.d.ts +2 -2
  51. package/dist/src/components/gridUtil.d.ts +1 -1
  52. package/dist/src/components/index.d.ts +19 -19
  53. package/dist/src/contexts/GridContext.d.ts +4 -4
  54. package/dist/src/contexts/GridContextProvider.d.ts +3 -3
  55. package/dist/src/contexts/GridPopoverContext.d.ts +3 -3
  56. package/dist/src/contexts/GridPopoverContextProvider.d.ts +4 -4
  57. package/dist/src/contexts/GridUpdatingContextProvider.d.ts +1 -1
  58. package/dist/src/index.d.ts +19 -17
  59. package/dist/src/lui/ActionButton.d.ts +9 -9
  60. package/dist/src/lui/FormError.d.ts +2 -2
  61. package/dist/src/lui/TextAreaInput.d.ts +1 -1
  62. package/dist/src/lui/TextInputFormatted.d.ts +2 -2
  63. package/dist/src/lui/reactUtils.d.ts +1 -1
  64. package/dist/src/lui/stateDeferredHook.d.ts +1 -1
  65. package/dist/src/react-menu3/components/ControlledMenu.d.ts +2 -2
  66. package/dist/src/react-menu3/components/FocusableItem.d.ts +3 -3
  67. package/dist/src/react-menu3/components/Menu.d.ts +3 -3
  68. package/dist/src/react-menu3/components/MenuButton.d.ts +2 -2
  69. package/dist/src/react-menu3/components/MenuDivider.d.ts +1 -1
  70. package/dist/src/react-menu3/components/MenuGroup.d.ts +2 -2
  71. package/dist/src/react-menu3/components/MenuHeader.d.ts +2 -2
  72. package/dist/src/react-menu3/components/MenuItem.d.ts +3 -3
  73. package/dist/src/react-menu3/components/MenuList.d.ts +1 -1
  74. package/dist/src/react-menu3/components/MenuRadioGroup.d.ts +2 -2
  75. package/dist/src/react-menu3/components/SubMenu.d.ts +5 -5
  76. package/dist/src/react-menu3/contexts/EventHandlersContext.d.ts +1 -1
  77. package/dist/src/react-menu3/contexts/MenuListContext.d.ts +2 -2
  78. package/dist/src/react-menu3/contexts/MenuListItemContext.d.ts +1 -1
  79. package/dist/src/react-menu3/contexts/RadioGroupContext.d.ts +1 -1
  80. package/dist/src/react-menu3/contexts/SettingsContext.d.ts +2 -2
  81. package/dist/src/react-menu3/hooks/index.d.ts +9 -9
  82. package/dist/src/react-menu3/hooks/useBEM.d.ts +1 -1
  83. package/dist/src/react-menu3/hooks/useCombinedRef.d.ts +1 -1
  84. package/dist/src/react-menu3/hooks/useIsomorphicLayoutEffect.d.ts +1 -1
  85. package/dist/src/react-menu3/hooks/useItemEffect.d.ts +1 -1
  86. package/dist/src/react-menu3/hooks/useItemState.d.ts +1 -1
  87. package/dist/src/react-menu3/hooks/useItems.d.ts +2 -2
  88. package/dist/src/react-menu3/hooks/useMenuChange.d.ts +1 -1
  89. package/dist/src/react-menu3/hooks/useMenuState.d.ts +1 -1
  90. package/dist/src/react-menu3/hooks/useMenuStateAndFocus.d.ts +1 -1
  91. package/dist/src/react-menu3/index.d.ts +11 -11
  92. package/dist/src/react-menu3/positionUtils/getPositionHelpers.d.ts +1 -1
  93. package/dist/src/react-menu3/positionUtils/index.d.ts +3 -3
  94. package/dist/src/react-menu3/positionUtils/placeArrowHorizontal.d.ts +1 -1
  95. package/dist/src/react-menu3/positionUtils/placeArrowVertical.d.ts +1 -1
  96. package/dist/src/react-menu3/positionUtils/placeLeftorRight.d.ts +4 -4
  97. package/dist/src/react-menu3/positionUtils/placeToporBottom.d.ts +5 -5
  98. package/dist/src/react-menu3/positionUtils/positionContextMenu.d.ts +2 -2
  99. package/dist/src/react-menu3/positionUtils/positionMenu.d.ts +5 -5
  100. package/dist/src/react-menu3/style-utils/index.d.ts +1 -1
  101. package/dist/src/react-menu3/types.d.ts +15 -15
  102. package/dist/src/react-menu3/utils/constants.d.ts +1 -1
  103. package/dist/src/react-menu3/utils/index.d.ts +3 -3
  104. package/dist/src/react-menu3/utils/utils.d.ts +5 -5
  105. package/dist/src/react-menu3/utils/withHovering.d.ts +1 -1
  106. package/{src/utils → dist/src/utils/__tests__}/storybookTestUtil.ts +2 -2
  107. package/{src/utils → dist/src/utils/__tests__}/testQuick.ts +15 -14
  108. package/{src/utils → dist/src/utils/__tests__}/testUtil.ts +31 -36
  109. package/dist/src/utils/__tests__/vitestUtil.ts +295 -0
  110. package/dist/src/utils/textValidator.d.ts +2 -2
  111. package/dist/{step-ag-grid.cjs.js → step-ag-grid.cjs} +969 -955
  112. package/dist/step-ag-grid.cjs.map +1 -0
  113. package/dist/step-ag-grid.esm.js +970 -958
  114. package/dist/step-ag-grid.esm.js.map +1 -1
  115. package/dist/vite.config.d.ts +1 -1
  116. package/package.json +38 -57
  117. package/src/components/ComponentLoadingWrapper.tsx +5 -6
  118. package/src/components/Grid.tsx +85 -83
  119. package/src/components/GridCell.test.tsx +17 -15
  120. package/src/components/GridCell.tsx +46 -44
  121. package/src/components/GridCellFiller.tsx +5 -4
  122. package/src/components/GridCellMultiEditor.tsx +7 -7
  123. package/src/components/GridCellMultiSelectClassRules.tsx +3 -3
  124. package/src/components/GridIcon.tsx +6 -7
  125. package/src/components/GridLoadableCell.tsx +2 -2
  126. package/src/components/GridNoRowsOverlay.tsx +8 -8
  127. package/src/components/GridPopoverHook.tsx +16 -16
  128. package/src/components/GridWrapper.tsx +2 -2
  129. package/src/components/PostSortRowsHook.ts +11 -11
  130. package/src/components/clickInputWhenContainingCellClicked.tsx +5 -5
  131. package/src/components/gridFilter/GridFilterButtons.tsx +8 -9
  132. package/src/components/gridFilter/GridFilterColumnsToggle.tsx +25 -26
  133. package/src/components/gridFilter/GridFilterDownloadCsvButton.tsx +12 -13
  134. package/src/components/gridFilter/GridFilterHeaderIconButton.tsx +9 -10
  135. package/src/components/gridFilter/GridFilterQuick.tsx +6 -6
  136. package/src/components/gridFilter/GridFilters.tsx +1 -1
  137. package/src/components/gridFilter/index.ts +7 -7
  138. package/src/components/gridFilter/useGridFilter.ts +3 -3
  139. package/src/components/gridForm/GridFormDropDown.tsx +56 -52
  140. package/src/components/gridForm/GridFormEditBearing.tsx +12 -12
  141. package/src/components/gridForm/GridFormMessage.tsx +10 -10
  142. package/src/components/gridForm/GridFormMultiSelect.tsx +53 -51
  143. package/src/components/gridForm/GridFormMultiSelectGrid.tsx +25 -26
  144. package/src/components/gridForm/GridFormPopoverMenu.tsx +32 -29
  145. package/src/components/gridForm/GridFormSubComponentTextArea.tsx +10 -10
  146. package/src/components/gridForm/GridFormSubComponentTextInput.tsx +8 -8
  147. package/src/components/gridForm/GridFormTextArea.tsx +11 -11
  148. package/src/components/gridForm/GridFormTextInput.tsx +11 -11
  149. package/src/components/gridForm/index.ts +10 -10
  150. package/src/components/gridHeader/GridHeaderSelect.tsx +9 -9
  151. package/src/components/gridHeader/index.ts +1 -1
  152. package/src/components/gridHook/index.ts +1 -1
  153. package/src/components/gridHook/useGridContextMenu.tsx +7 -7
  154. package/src/components/gridPopoverEdit/GridButton.tsx +13 -12
  155. package/src/components/gridPopoverEdit/GridEditBoolean.tsx +19 -18
  156. package/src/components/gridPopoverEdit/GridPopoutEditMultiSelect.ts +7 -6
  157. package/src/components/gridPopoverEdit/GridPopoutEditMultiSelectGrid.ts +7 -6
  158. package/src/components/gridPopoverEdit/GridPopoverEditBearing.ts +9 -9
  159. package/src/components/gridPopoverEdit/GridPopoverEditDropDown.ts +8 -7
  160. package/src/components/gridPopoverEdit/GridPopoverMenu.tsx +6 -6
  161. package/src/components/gridPopoverEdit/GridPopoverMessage.ts +4 -4
  162. package/src/components/gridPopoverEdit/GridPopoverTextArea.ts +4 -4
  163. package/src/components/gridPopoverEdit/GridPopoverTextInput.ts +4 -4
  164. package/src/components/gridPopoverEdit/index.ts +11 -11
  165. package/src/components/gridRender/GridRenderGenericCell.tsx +5 -5
  166. package/src/components/gridRender/GridRenderPopoutMenuCell.tsx +8 -9
  167. package/src/components/gridRender/index.ts +2 -2
  168. package/src/components/gridUtil.ts +3 -3
  169. package/src/components/index.ts +19 -19
  170. package/src/contexts/GridContext.tsx +52 -46
  171. package/src/contexts/GridContextProvider.test.tsx +15 -14
  172. package/src/contexts/GridContextProvider.tsx +42 -42
  173. package/src/contexts/GridPopoverContext.tsx +10 -7
  174. package/src/contexts/GridPopoverContextProvider.tsx +12 -10
  175. package/src/contexts/GridSubComponentContext.ts +6 -5
  176. package/src/contexts/GridUpdatingContext.tsx +5 -4
  177. package/src/contexts/GridUpdatingContextProvider.tsx +3 -3
  178. package/src/index.ts +19 -21
  179. package/src/lui/ActionButton.scss +2 -2
  180. package/src/lui/ActionButton.tsx +42 -41
  181. package/src/lui/FormError.scss +3 -4
  182. package/src/lui/FormError.tsx +4 -4
  183. package/src/lui/TextAreaInput.tsx +9 -9
  184. package/src/lui/TextInputFormatted.scss +1 -1
  185. package/src/lui/TextInputFormatted.tsx +11 -11
  186. package/src/lui/reactUtils.test.tsx +9 -8
  187. package/src/lui/reactUtils.tsx +2 -2
  188. package/src/lui/stateDeferredHook.tsx +3 -5
  189. package/src/lui/timeoutHook.test.tsx +12 -11
  190. package/src/lui/timeoutHook.tsx +1 -1
  191. package/src/react-app-env.d.ts +1 -1
  192. package/src/react-menu3/components/ControlledMenu.tsx +48 -48
  193. package/src/react-menu3/components/FocusableItem.tsx +7 -7
  194. package/src/react-menu3/components/Menu.tsx +11 -11
  195. package/src/react-menu3/components/MenuButton.tsx +4 -4
  196. package/src/react-menu3/components/MenuDivider.tsx +4 -4
  197. package/src/react-menu3/components/MenuGroup.tsx +5 -5
  198. package/src/react-menu3/components/MenuHeader.tsx +4 -4
  199. package/src/react-menu3/components/MenuItem.tsx +14 -14
  200. package/src/react-menu3/components/MenuList.tsx +55 -55
  201. package/src/react-menu3/components/MenuRadioGroup.tsx +7 -7
  202. package/src/react-menu3/components/SubMenu.tsx +24 -24
  203. package/src/react-menu3/contexts/EventHandlersContext.ts +2 -2
  204. package/src/react-menu3/contexts/HoverItemContext.ts +1 -1
  205. package/src/react-menu3/contexts/ItemSettingsContext.ts +1 -1
  206. package/src/react-menu3/contexts/MenuListContext.ts +2 -2
  207. package/src/react-menu3/contexts/MenuListItemContext.ts +2 -2
  208. package/src/react-menu3/contexts/RadioGroupContext.ts +2 -2
  209. package/src/react-menu3/contexts/SettingsContext.ts +2 -2
  210. package/src/react-menu3/hooks/index.ts +9 -9
  211. package/src/react-menu3/hooks/useBEM.ts +4 -4
  212. package/src/react-menu3/hooks/useCombinedRef.ts +2 -2
  213. package/src/react-menu3/hooks/useIsomorphicLayoutEffect.ts +4 -4
  214. package/src/react-menu3/hooks/useItemEffect.ts +3 -3
  215. package/src/react-menu3/hooks/useItemState.ts +5 -5
  216. package/src/react-menu3/hooks/useItems.ts +8 -8
  217. package/src/react-menu3/hooks/useMenuChange.ts +3 -3
  218. package/src/react-menu3/hooks/useMenuState.ts +5 -5
  219. package/src/react-menu3/hooks/useMenuStateAndFocus.ts +4 -4
  220. package/src/react-menu3/index.ts +11 -11
  221. package/src/react-menu3/positionUtils/getPositionHelpers.ts +2 -2
  222. package/src/react-menu3/positionUtils/index.ts +3 -3
  223. package/src/react-menu3/positionUtils/placeArrowHorizontal.ts +1 -1
  224. package/src/react-menu3/positionUtils/placeArrowVertical.ts +1 -1
  225. package/src/react-menu3/positionUtils/placeLeftorRight.ts +13 -13
  226. package/src/react-menu3/positionUtils/placeToporBottom.ts +15 -15
  227. package/src/react-menu3/positionUtils/positionContextMenu.ts +4 -4
  228. package/src/react-menu3/positionUtils/positionMenu.ts +14 -14
  229. package/src/react-menu3/style-utils/index.ts +24 -24
  230. package/src/react-menu3/types.ts +15 -15
  231. package/src/react-menu3/utils/constants.ts +33 -33
  232. package/src/react-menu3/utils/index.ts +3 -4
  233. package/src/react-menu3/utils/propTypes2.ts +10 -10
  234. package/src/react-menu3/utils/utils.ts +14 -14
  235. package/src/react-menu3/utils/withHovering.tsx +3 -3
  236. package/src/stories/components/ActionButton.stories.tsx +23 -24
  237. package/src/stories/grid/FormTest.tsx +15 -16
  238. package/src/stories/grid/GridDragRow.stories.tsx +33 -34
  239. package/src/stories/grid/GridFilterButtons.stories.tsx +32 -33
  240. package/src/stories/grid/GridNoRowsOverlay.stories.tsx +9 -10
  241. package/src/stories/grid/GridNonEditableRow.stories.tsx +40 -41
  242. package/src/stories/grid/GridPinnedRow.stories.tsx +25 -26
  243. package/src/stories/grid/GridPopoutContextMenu.stories.tsx +33 -32
  244. package/src/stories/grid/GridPopoutEditBoolean.stories.tsx +21 -22
  245. package/src/stories/grid/GridPopoutEditGeneric.stories.tsx +18 -19
  246. package/src/stories/grid/GridPopoutEditGenericTextArea.stories.tsx +50 -49
  247. package/src/stories/grid/GridPopoverEditBearing.stories.tsx +25 -26
  248. package/src/stories/grid/GridPopoverEditDropDown.stories.tsx +93 -94
  249. package/src/stories/grid/GridPopoverEditMultiSelect.stories.tsx +62 -63
  250. package/src/stories/grid/GridPopoverEditMultiSelectGrid.stories.tsx +28 -28
  251. package/src/stories/grid/GridReadOnly.stories.tsx +66 -67
  252. package/src/stories/grid/GridViewList.stories.tsx +37 -38
  253. package/src/stories/grid/gridFormInteraction/GridFormDropDownInteraction.stories.tsx +37 -38
  254. package/src/stories/grid/gridFormInteraction/GridFormEditBearingCorrectionInteraction.stories.tsx +25 -26
  255. package/src/stories/grid/gridFormInteraction/GridFormEditBearingInteraction.stories.tsx +25 -26
  256. package/src/stories/grid/gridFormInteraction/GridFormMultiSelectGridInteraction.stories.tsx +31 -31
  257. package/src/stories/grid/gridFormInteraction/GridFormMultiSelectInteraction.stories.tsx +47 -48
  258. package/src/stories/grid/gridFormInteraction/GridFormPopoverMenuInteraction.stories.tsx +44 -45
  259. package/src/stories/grid/gridFormInteraction/GridFormTextAreaInteraction.stories.tsx +19 -20
  260. package/src/stories/grid/gridFormInteraction/GridFormTextInputInteraction.stories.tsx +21 -22
  261. package/src/stories/grid/gridFormStatic/GridFormDropDown.stories.tsx +40 -41
  262. package/src/stories/grid/gridFormStatic/GridFormEditBearing.stories.tsx +14 -15
  263. package/src/stories/grid/gridFormStatic/GridFormEditBearingCorrection.stories.tsx +14 -15
  264. package/src/stories/grid/gridFormStatic/GridFormMessage.stories.tsx +10 -11
  265. package/src/stories/grid/gridFormStatic/GridFormMultiSelect.stories.tsx +20 -21
  266. package/src/stories/grid/gridFormStatic/GridFormPopoverMenu.stories.tsx +16 -17
  267. package/src/stories/grid/gridFormStatic/GridFormTextArea.stories.tsx +13 -14
  268. package/src/stories/grid/gridFormStatic/GridFormTextInput.stories.tsx +13 -14
  269. package/src/stories/grid/interactions/GridKeyboardInteractions.stories.tsx +68 -71
  270. package/src/stories/react-menu/ReactMenu.stories.tsx +26 -26
  271. package/src/styles/Grid.scss +9 -9
  272. package/src/styles/GridIcon.scss +6 -6
  273. package/src/styles/GridPopoverMenu.scss +3 -3
  274. package/src/styles/GridTheme.scss +1 -1
  275. package/src/styles/react-menu-customisations.scss +26 -41
  276. package/src/utils/__tests__/storybookTestUtil.ts +4 -0
  277. package/src/utils/__tests__/testQuick.ts +157 -0
  278. package/src/utils/__tests__/testUtil.ts +294 -0
  279. package/src/utils/__tests__/vitestUtil.ts +295 -0
  280. package/src/utils/bearing.test.ts +47 -45
  281. package/src/utils/bearing.ts +20 -20
  282. package/src/utils/deferredPromise.ts +1 -1
  283. package/src/utils/textMatcher.test.ts +10 -9
  284. package/src/utils/textMatcher.ts +8 -8
  285. package/src/utils/textValidator.test.ts +61 -62
  286. package/src/utils/textValidator.ts +11 -11
  287. package/src/utils/util.test.ts +21 -20
  288. package/src/utils/util.ts +7 -7
  289. package/dist/src/utils/storybookTestUtil.d.ts +0 -3
  290. package/dist/src/utils/testQuick.d.ts +0 -62
  291. package/dist/src/utils/testUtil.d.ts +0 -46
  292. package/dist/step-ag-grid.cjs.js.map +0 -1
@@ -1,18 +1,18 @@
1
- import { FocusEvent, ForwardedRef, MutableRefObject, forwardRef, useCallback, useEffect, useMemo, useRef } from "react";
2
- import { createPortal } from "react-dom";
3
-
4
- import { hasParentClass } from "../../utils/util";
5
- import { EventHandlersContext, EventHandlersContextType } from "../contexts/EventHandlersContext";
6
- import { ItemSettingsContext } from "../contexts/ItemSettingsContext";
7
- import { SettingsContext } from "../contexts/SettingsContext";
8
- import { useBEM } from "../hooks";
9
- import { ControlledMenuProps, PortalFieldType, RadioChangeEvent } from "../types";
10
- import { CloseReason, Keys, getTransition, isMenuOpen, menuContainerClass, mergeProps, safeCall } from "../utils";
11
- import { MenuList } from "./MenuList";
1
+ import { FocusEvent, ForwardedRef, forwardRef, MutableRefObject, useCallback, useEffect, useMemo, useRef } from 'react';
2
+ import { createPortal } from 'react-dom';
3
+
4
+ import { hasParentClass } from '../../utils/util';
5
+ import { EventHandlersContext, EventHandlersContextType } from '../contexts/EventHandlersContext';
6
+ import { ItemSettingsContext } from '../contexts/ItemSettingsContext';
7
+ import { SettingsContext } from '../contexts/SettingsContext';
8
+ import { useBEM } from '../hooks';
9
+ import { ControlledMenuProps, PortalFieldType, RadioChangeEvent } from '../types';
10
+ import { CloseReason, getTransition, isMenuOpen, Keys, menuContainerClass, mergeProps, safeCall } from '../utils';
11
+ import { MenuList } from './MenuList';
12
12
 
13
13
  export const ControlledMenuFr = (
14
14
  {
15
- "aria-label": ariaLabel,
15
+ 'aria-label': ariaLabel,
16
16
  className,
17
17
  containerProps,
18
18
  initialMounted,
@@ -21,11 +21,11 @@ export const ControlledMenuFr = (
21
21
  transitionTimeout,
22
22
  boundingBoxRef,
23
23
  boundingBoxPadding,
24
- reposition = "auto",
24
+ reposition = 'auto',
25
25
  submenuOpenDelay = 300,
26
26
  submenuCloseDelay = 150,
27
27
  skipOpen,
28
- viewScroll = "initial",
28
+ viewScroll = 'initial',
29
29
  portal,
30
30
  theming,
31
31
  onItemClick,
@@ -68,10 +68,10 @@ export const ControlledMenuFr = (
68
68
 
69
69
  const isWithinMenu = useCallback(
70
70
  (target: EventTarget | null) =>
71
- hasParentClass("szh-menu--state-open", target as Node) ||
71
+ hasParentClass('szh-menu--state-open', target as Node) ||
72
72
  // This is temporary, it will be removed when the overlay click is fixed
73
- hasParentClass("LuiModalPrefab", target as Node) ||
74
- hasParentClass("prefab-modal", target as Node),
73
+ hasParentClass('LuiModalPrefab', target as Node) ||
74
+ hasParentClass('prefab-modal', target as Node),
75
75
  [],
76
76
  );
77
77
 
@@ -85,7 +85,7 @@ export const ControlledMenuFr = (
85
85
  // This doesn't happen in React18
86
86
  // To work around it, I invoke the save by clicking on a passed in invisible button ref
87
87
  if (saveButtonRef?.current) {
88
- saveButtonRef.current.setAttribute("data-reason", CloseReason.BLUR);
88
+ saveButtonRef.current.setAttribute('data-reason', CloseReason.BLUR);
89
89
  saveButtonRef.current.click();
90
90
  } else safeCall(onClose, { reason: CloseReason.BLUR });
91
91
 
@@ -121,7 +121,7 @@ export const ControlledMenuFr = (
121
121
  const thisDocument = anchorRef?.current ? anchorRef?.current.ownerDocument : document;
122
122
  const activeElement = thisDocument.activeElement;
123
123
  if (!anchorRef?.current || !activeElement) return;
124
- if (ev.key !== "Tab" && ev.key !== "Enter") return;
124
+ if (ev.key !== 'Tab' && ev.key !== 'Enter') return;
125
125
 
126
126
  if (ev.repeat) {
127
127
  ev.preventDefault();
@@ -131,14 +131,14 @@ export const ControlledMenuFr = (
131
131
 
132
132
  const invokeSave = (reason: string) => {
133
133
  if (!saveButtonRef?.current) return;
134
- saveButtonRef.current?.setAttribute("data-reason", reason);
134
+ saveButtonRef.current?.setAttribute('data-reason', reason);
135
135
  saveButtonRef?.current?.click();
136
136
  };
137
137
 
138
138
  // data-allowtabtosave is used such that list filter inputs can use tab to save
139
- const allowTabToSave = activeElement.getAttribute("data-allowtabtosave") == "true";
139
+ const allowTabToSave = activeElement.getAttribute('data-allowtabtosave') == 'true';
140
140
 
141
- const inputElsIterator = thisDocument.querySelectorAll<HTMLElement>(".szh-menu--state-open input,textarea");
141
+ const inputElsIterator = thisDocument.querySelectorAll<HTMLElement>('.szh-menu--state-open input,textarea');
142
142
  let inputEls: HTMLElement[] = [];
143
143
  inputElsIterator.forEach((el) => inputEls.push(el));
144
144
  inputEls = inputEls.filter((el) => !(el as any).disabled);
@@ -146,10 +146,10 @@ export const ControlledMenuFr = (
146
146
  const firstInputEl = inputEls[0];
147
147
  const lastInputEl = inputEls[inputEls.length - 1];
148
148
 
149
- const isTextArea = activeElement.nodeName === "TEXTAREA";
150
- const suppressEnterAutoSave = activeElement.getAttribute("data-disableenterautosave") == "true" || isTextArea;
149
+ const isTextArea = activeElement.nodeName === 'TEXTAREA';
150
+ const suppressEnterAutoSave = activeElement.getAttribute('data-disableenterautosave') == 'true' || isTextArea;
151
151
 
152
- if (ev.key === "Tab") {
152
+ if (ev.key === 'Tab') {
153
153
  const tabDirection = ev.shiftKey ? CloseReason.TAB_BACKWARD : CloseReason.TAB_FORWARD;
154
154
  if (
155
155
  (activeElement === lastInputEl && !ev.shiftKey) ||
@@ -167,14 +167,14 @@ export const ControlledMenuFr = (
167
167
  }
168
168
  }
169
169
 
170
- const type = activeElement.getAttribute("type");
171
- const isTextInput = type === "text" || type == null || type === "textarea";
170
+ const type = activeElement.getAttribute('type');
171
+ const isTextInput = type === 'text' || type == null || type === 'textarea';
172
172
 
173
173
  switch (activeElement.nodeName) {
174
- case "INPUT":
174
+ case 'INPUT':
175
175
  {
176
176
  // If there's only one input element, we support tab and enter
177
- if (isTextInput && ev.key === "Enter" && !suppressEnterAutoSave) {
177
+ if (isTextInput && ev.key === 'Enter' && !suppressEnterAutoSave) {
178
178
  ev.preventDefault();
179
179
  ev.stopPropagation();
180
180
  if (isDown) {
@@ -196,19 +196,19 @@ export const ControlledMenuFr = (
196
196
  useEffect(() => {
197
197
  if (isMenuOpen(state)) {
198
198
  const thisDocument = anchorRef?.current ? anchorRef?.current.ownerDocument : document;
199
- thisDocument.addEventListener("keydown", handleKeydownTabAndEnter, true);
200
- thisDocument.addEventListener("keyup", handleKeyupTabAndEnter, true);
201
- thisDocument.addEventListener("mousedown", handleScreenEventForSave, true);
202
- thisDocument.addEventListener("mouseup", handleScreenEventForCancel, true);
203
- thisDocument.addEventListener("click", handleScreenEventForCancel, true);
204
- thisDocument.addEventListener("dblclick", handleScreenEventForCancel, true);
199
+ thisDocument.addEventListener('keydown', handleKeydownTabAndEnter, true);
200
+ thisDocument.addEventListener('keyup', handleKeyupTabAndEnter, true);
201
+ thisDocument.addEventListener('mousedown', handleScreenEventForSave, true);
202
+ thisDocument.addEventListener('mouseup', handleScreenEventForCancel, true);
203
+ thisDocument.addEventListener('click', handleScreenEventForCancel, true);
204
+ thisDocument.addEventListener('dblclick', handleScreenEventForCancel, true);
205
205
  return () => {
206
- thisDocument.removeEventListener("keydown", handleKeydownTabAndEnter, true);
207
- thisDocument.removeEventListener("keyup", handleKeyupTabAndEnter, true);
208
- thisDocument.removeEventListener("mousedown", handleScreenEventForSave, true);
209
- thisDocument.removeEventListener("mouseup", handleScreenEventForCancel, true);
210
- thisDocument.removeEventListener("click", handleScreenEventForCancel, true);
211
- thisDocument.removeEventListener("dblclick", handleScreenEventForCancel, true);
206
+ thisDocument.removeEventListener('keydown', handleKeydownTabAndEnter, true);
207
+ thisDocument.removeEventListener('keyup', handleKeyupTabAndEnter, true);
208
+ thisDocument.removeEventListener('mousedown', handleScreenEventForSave, true);
209
+ thisDocument.removeEventListener('mouseup', handleScreenEventForCancel, true);
210
+ thisDocument.removeEventListener('click', handleScreenEventForCancel, true);
211
+ thisDocument.removeEventListener('dblclick', handleScreenEventForCancel, true);
212
212
  };
213
213
  }
214
214
  return () => {};
@@ -248,7 +248,7 @@ export const ControlledMenuFr = (
248
248
  key: event.key,
249
249
  shiftKey: event.shiftKey,
250
250
  reason:
251
- event.key === "Tab"
251
+ event.key === 'Tab'
252
252
  ? event.shiftKey
253
253
  ? CloseReason.TAB_BACKWARD
254
254
  : CloseReason.TAB_FORWARD
@@ -295,7 +295,7 @@ export const ControlledMenuFr = (
295
295
  }
296
296
  };
297
297
 
298
- const itemTransition = getTransition(transition, "item");
298
+ const itemTransition = getTransition(transition, 'item');
299
299
  const modifiers = useMemo(() => ({ theme: theming, itemTransition }), [theming, itemTransition]);
300
300
 
301
301
  const menuList = (
@@ -306,7 +306,7 @@ export const ControlledMenuFr = (
306
306
  modifiers,
307
307
  className,
308
308
  })}
309
- style={{ ...containerProps?.style, position: "relative" }}
309
+ style={{ ...containerProps?.style, position: 'relative' }}
310
310
  ref={containerRef}
311
311
  >
312
312
  {state && (
@@ -315,7 +315,7 @@ export const ControlledMenuFr = (
315
315
  <EventHandlersContext.Provider value={eventHandlers}>
316
316
  <MenuList
317
317
  {...restProps}
318
- ariaLabel={ariaLabel || "Menu"}
318
+ ariaLabel={ariaLabel || 'Menu'}
319
319
  externalRef={externalRef}
320
320
  containerRef={containerRef}
321
321
  onClose={onClose}
@@ -328,7 +328,7 @@ export const ControlledMenuFr = (
328
328
  );
329
329
 
330
330
  if (portal === true && anchorRef?.current != null) {
331
- if (hasParentClass("react-menu-inline-test", anchorRef.current)) {
331
+ if (hasParentClass('react-menu-inline-test', anchorRef.current)) {
332
332
  portal = false;
333
333
  } else {
334
334
  portal = { target: anchorRef.current.ownerDocument.body } as PortalFieldType;
@@ -336,8 +336,8 @@ export const ControlledMenuFr = (
336
336
  }
337
337
 
338
338
  if (portal) {
339
- if (typeof portal === "boolean") {
340
- if (portal && typeof document !== "undefined") {
339
+ if (typeof portal === 'boolean') {
340
+ if (portal && typeof document !== 'undefined') {
341
341
  return createPortal(menuList, document.body);
342
342
  }
343
343
  } else {
@@ -1,10 +1,10 @@
1
- import { LegacyRef, ReactElement, useContext, useMemo, useRef } from "react";
1
+ import { LegacyRef, ReactElement, useContext, useMemo, useRef } from 'react';
2
2
 
3
- import { EventHandlersContext } from "../contexts/EventHandlersContext";
4
- import { useBEM, useCombinedRef, useItemState } from "../hooks";
5
- import { BaseProps } from "../types";
6
- import { commonProps, menuClass, menuItemClass, mergeProps, safeCall, withHovering } from "../utils";
7
- import { withHoveringResultProps } from "../utils/withHovering";
3
+ import { EventHandlersContext } from '../contexts/EventHandlersContext';
4
+ import { useBEM, useCombinedRef, useItemState } from '../hooks';
5
+ import { BaseProps } from '../types';
6
+ import { commonProps, menuClass, menuItemClass, mergeProps, safeCall, withHovering } from '../utils';
7
+ import { withHoveringResultProps } from '../utils/withHovering';
8
8
 
9
9
  export interface FocusableItemProps extends BaseProps, withHoveringResultProps {
10
10
  disabled?: boolean;
@@ -66,4 +66,4 @@ export const FocusableItemFr = ({
66
66
  );
67
67
  };
68
68
 
69
- export const FocusableItem = withHovering("FocusableItem", FocusableItemFr);
69
+ export const FocusableItem = withHovering('FocusableItem', FocusableItemFr);
@@ -1,18 +1,18 @@
1
1
  import {
2
+ cloneElement,
2
3
  ForwardedRef,
4
+ forwardRef,
3
5
  Fragment,
4
6
  ReactElement,
5
- cloneElement,
6
- forwardRef,
7
7
  useCallback,
8
8
  useImperativeHandle,
9
9
  useRef,
10
- } from "react";
10
+ } from 'react';
11
11
 
12
- import { useCombinedRef, useMenuChange, useMenuStateAndFocus } from "../hooks";
13
- import { MenuButtonModifiers, MenuCloseEvent, RenderProp, RootMenuProps, UncontrolledMenuProps } from "../types";
14
- import { FocusPositions, Keys, getName, isMenuOpen, mergeProps, safeCall } from "../utils";
15
- import { ControlledMenu } from "./ControlledMenu";
12
+ import { useCombinedRef, useMenuChange, useMenuStateAndFocus } from '../hooks';
13
+ import { MenuButtonModifiers, MenuCloseEvent, RenderProp, RootMenuProps, UncontrolledMenuProps } from '../types';
14
+ import { FocusPositions, getName, isMenuOpen, Keys, mergeProps, safeCall } from '../utils';
15
+ import { ControlledMenu } from './ControlledMenu';
16
16
 
17
17
  //
18
18
  // Menu
@@ -31,7 +31,7 @@ export interface MenuProps extends RootMenuProps, UncontrolledMenuProps {
31
31
  }
32
32
 
33
33
  export function MenuFr(
34
- { "aria-label": ariaLabel, menuButton, instanceRef, onMenuChange, ...restProps }: MenuProps,
34
+ { 'aria-label': ariaLabel, menuButton, instanceRef, onMenuChange, ...restProps }: MenuProps,
35
35
  externalRef: ForwardedRef<ReactElement>,
36
36
  ) {
37
37
  const [stateProps, toggleMenu, openMenu] = useMenuStateAndFocus(restProps);
@@ -72,14 +72,14 @@ export function MenuFr(
72
72
 
73
73
  // Too many mixed types here to figure out what to pick for button. Bad code.
74
74
  const button: any = safeCall(menuButton, { open: isOpen });
75
- if (!button || !button.type) throw new Error("Menu requires a menuButton prop.");
75
+ if (!button || !button.type) throw new Error('Menu requires a menuButton prop.');
76
76
 
77
77
  const buttonProps = {
78
78
  ref: useCombinedRef(button.ref, buttonRef),
79
79
  ...mergeProps({ onClick, onKeyDown }, button.props),
80
80
  isOpen: false,
81
81
  };
82
- if (getName(button.type) === "MenuButton") {
82
+ if (getName(button.type) === 'MenuButton') {
83
83
  buttonProps.isOpen = isOpen;
84
84
  }
85
85
  const renderButton = cloneElement(button, buttonProps);
@@ -97,7 +97,7 @@ export function MenuFr(
97
97
  <ControlledMenu
98
98
  {...restProps}
99
99
  {...stateProps}
100
- aria-label={ariaLabel || (typeof button.props.children === "string" ? button.props.children : "Menu")}
100
+ aria-label={ariaLabel || (typeof button.props.children === 'string' ? button.props.children : 'Menu')}
101
101
  anchorRef={buttonRef}
102
102
  ref={externalRef}
103
103
  onClose={handleClose}
@@ -1,8 +1,8 @@
1
- import { LegacyRef, ReactNode, forwardRef, useMemo } from "react";
1
+ import { forwardRef, LegacyRef, ReactNode, useMemo } from 'react';
2
2
 
3
- import { useBEM } from "../hooks";
4
- import { BaseProps, MenuButtonModifiers } from "../types";
5
- import { menuButtonClass } from "../utils";
3
+ import { useBEM } from '../hooks';
4
+ import { BaseProps, MenuButtonModifiers } from '../types';
5
+ import { menuButtonClass } from '../utils';
6
6
 
7
7
  export interface MenuButtonProps extends BaseProps<MenuButtonModifiers> {
8
8
  disabled?: boolean;
@@ -1,8 +1,8 @@
1
- import { LegacyRef, forwardRef, memo } from "react";
1
+ import { forwardRef, LegacyRef, memo } from 'react';
2
2
 
3
- import { useBEM } from "../hooks";
4
- import { BaseProps } from "../types";
5
- import { menuClass, menuDividerClass } from "../utils";
3
+ import { useBEM } from '../hooks';
4
+ import { BaseProps } from '../types';
5
+ import { menuClass, menuDividerClass } from '../utils';
6
6
 
7
7
  const MenuDividerFr = ({ className, ...restProps }: BaseProps, externalRef: LegacyRef<HTMLLIElement>) => {
8
8
  return (
@@ -1,9 +1,9 @@
1
- import { ForwardedRef, ReactNode, forwardRef, useContext, useRef, useState } from "react";
1
+ import { ForwardedRef, forwardRef, ReactNode, useContext, useRef, useState } from 'react';
2
2
 
3
- import { MenuListContext } from "../contexts/MenuListContext";
4
- import { useBEM, useCombinedRef, useLayoutEffect } from "../hooks";
5
- import { BaseProps, MenuOverflow } from "../types";
6
- import { menuClass, menuGroupClass } from "../utils";
3
+ import { MenuListContext } from '../contexts/MenuListContext';
4
+ import { useBEM, useCombinedRef, useLayoutEffect } from '../hooks';
5
+ import { BaseProps, MenuOverflow } from '../types';
6
+ import { menuClass, menuGroupClass } from '../utils';
7
7
 
8
8
  export interface MenuGroupProps extends BaseProps {
9
9
  children?: ReactNode;
@@ -1,8 +1,8 @@
1
- import { ForwardedRef, forwardRef, memo } from "react";
1
+ import { ForwardedRef, forwardRef, memo } from 'react';
2
2
 
3
- import { useBEM } from "../hooks";
4
- import { BasePropsWithChildren } from "../types";
5
- import { menuClass, menuHeaderClass } from "../utils";
3
+ import { useBEM } from '../hooks';
4
+ import { BasePropsWithChildren } from '../types';
5
+ import { menuClass, menuHeaderClass } from '../utils';
6
6
 
7
7
  export const MenuHeaderFr = (
8
8
  { className, ...restProps }: BasePropsWithChildren,
@@ -1,11 +1,11 @@
1
- import { KeyboardEvent, Ref, useContext, useMemo } from "react";
1
+ import { KeyboardEvent, Ref, useContext, useMemo } from 'react';
2
2
 
3
- import { EventHandlersContext } from "../contexts/EventHandlersContext";
4
- import { RadioGroupContext } from "../contexts/RadioGroupContext";
5
- import { useBEM, useCombinedRef, useItemState } from "../hooks";
6
- import { BaseProps, ClickEvent, EventHandler, Hoverable, MenuItemTypeProp, RenderProp } from "../types";
7
- import { Keys, RMEvent, commonProps, menuClass, menuItemClass, mergeProps, safeCall, withHovering } from "../utils";
8
- import { withHoveringResultProps } from "../utils/withHovering";
3
+ import { EventHandlersContext } from '../contexts/EventHandlersContext';
4
+ import { RadioGroupContext } from '../contexts/RadioGroupContext';
5
+ import { useBEM, useCombinedRef, useItemState } from '../hooks';
6
+ import { BaseProps, ClickEvent, EventHandler, Hoverable, MenuItemTypeProp, RenderProp } from '../types';
7
+ import { commonProps, Keys, menuClass, menuItemClass, mergeProps, RMEvent, safeCall, withHovering } from '../utils';
8
+ import { withHoveringResultProps } from '../utils/withHovering';
9
9
 
10
10
  //
11
11
  // MenuItem
@@ -33,7 +33,7 @@ export type MenuItemModifiers = Readonly<{
33
33
  anchor: boolean;
34
34
  }>;
35
35
 
36
- export interface MenuItemProps extends Omit<BaseProps<MenuItemModifiers>, "onClick">, Hoverable {
36
+ export interface MenuItemProps extends Omit<BaseProps<MenuItemModifiers>, 'onClick'>, Hoverable {
37
37
  /**
38
38
  * Any value provided to this prop will be available in the event object of click events.
39
39
  *
@@ -85,8 +85,8 @@ const MenuItemFr = ({
85
85
  const { setHover, ...restStateProps } = useItemState(menuItemRef, menuItemRef, isHovering, isDisabled);
86
86
  const eventHandlers = useContext(EventHandlersContext);
87
87
  const radioGroup = useContext(RadioGroupContext);
88
- const isRadio = type === "radio";
89
- const isCheckBox = type === "checkbox";
88
+ const isRadio = type === 'radio';
89
+ const isCheckBox = type === 'checkbox';
90
90
  const isAnchor = !!href && !isDisabled && !isRadio && !isCheckBox;
91
91
  const isChecked = isRadio ? radioGroup.value === value : isCheckBox ? !!checked : false;
92
92
 
@@ -122,7 +122,7 @@ const MenuItemFr = ({
122
122
 
123
123
  const handleKeyDown = (e: KeyboardEvent) => {
124
124
  // if tab is allowed the handleKeyUp event can't process the tab
125
- if (e.key === "Tab") {
125
+ if (e.key === 'Tab') {
126
126
  e.preventDefault();
127
127
  e.stopPropagation();
128
128
  }
@@ -176,8 +176,8 @@ const MenuItemFr = ({
176
176
  // 2. Merged outer and local props
177
177
  // 3. ref, className
178
178
  const menuItemProps = {
179
- role: isRadio ? "menuitemradio" : isCheckBox ? "menuitemcheckbox" : "menuitem",
180
- "aria-checked": isRadio || isCheckBox ? isChecked : undefined,
179
+ role: isRadio ? 'menuitemradio' : isCheckBox ? 'menuitemcheckbox' : 'menuitem',
180
+ 'aria-checked': isRadio || isCheckBox ? isChecked : undefined,
181
181
  ...mergedProps,
182
182
  ...commonProps(isDisabled, isHovering),
183
183
  ref: useCombinedRef(externalRef as Ref<any>, menuItemRef),
@@ -196,4 +196,4 @@ const MenuItemFr = ({
196
196
  }
197
197
  };
198
198
 
199
- export const MenuItem = withHovering("MenuItem", MenuItemFr);
199
+ export const MenuItem = withHovering('MenuItem', MenuItemFr);