@gooddata/sdk-ui-pivot 11.9.0-alpha.4 → 11.9.0-alpha.5

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 (58) hide show
  1. package/esm/next/components/Header/AttributeHeader.d.ts.map +1 -1
  2. package/esm/next/components/Header/AttributeHeader.js +14 -1
  3. package/esm/next/components/Header/AttributeHeader.js.map +1 -1
  4. package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts +6 -1
  5. package/esm/next/components/Header/HeaderCell/HeaderMenu.d.ts.map +1 -1
  6. package/esm/next/components/Header/HeaderCell/HeaderMenu.js +16 -3
  7. package/esm/next/components/Header/HeaderCell/HeaderMenu.js.map +1 -1
  8. package/esm/next/components/Header/MeasureGroupHeader.d.ts.map +1 -1
  9. package/esm/next/components/Header/MeasureGroupHeader.js +12 -1
  10. package/esm/next/components/Header/MeasureGroupHeader.js.map +1 -1
  11. package/esm/next/components/Header/MeasureHeader.d.ts.map +1 -1
  12. package/esm/next/components/Header/MeasureHeader.js +14 -1
  13. package/esm/next/components/Header/MeasureHeader.js.map +1 -1
  14. package/esm/next/components/Header/PivotGroupHeader.d.ts.map +1 -1
  15. package/esm/next/components/Header/PivotGroupHeader.js +14 -1
  16. package/esm/next/components/Header/PivotGroupHeader.js.map +1 -1
  17. package/esm/next/constants/agGridDefaultProps.d.ts.map +1 -1
  18. package/esm/next/constants/agGridDefaultProps.js +13 -2
  19. package/esm/next/constants/agGridDefaultProps.js.map +1 -1
  20. package/esm/next/hooks/header/useHeaderDrilling.d.ts +1 -1
  21. package/esm/next/hooks/header/useHeaderDrilling.d.ts.map +1 -1
  22. package/esm/next/hooks/header/useHeaderDrilling.js.map +1 -1
  23. package/esm/next/hooks/header/useHeaderGroupDrilling.d.ts +1 -1
  24. package/esm/next/hooks/header/useHeaderGroupDrilling.d.ts.map +1 -1
  25. package/esm/next/hooks/header/useHeaderGroupDrilling.js.map +1 -1
  26. package/esm/next/hooks/header/useHeaderMenu.d.ts +5 -5
  27. package/esm/next/hooks/header/useHeaderMenu.d.ts.map +1 -1
  28. package/esm/next/hooks/header/useHeaderMenu.js +2 -2
  29. package/esm/next/hooks/header/useHeaderMenu.js.map +1 -1
  30. package/esm/next/hooks/header/useHeaderMenuKeyboard.d.ts +20 -0
  31. package/esm/next/hooks/header/useHeaderMenuKeyboard.d.ts.map +1 -0
  32. package/esm/next/hooks/header/useHeaderMenuKeyboard.js +44 -0
  33. package/esm/next/hooks/header/useHeaderMenuKeyboard.js.map +1 -0
  34. package/esm/next/hooks/header/useHeaderMenuSorting.d.ts +2 -1
  35. package/esm/next/hooks/header/useHeaderMenuSorting.d.ts.map +1 -1
  36. package/esm/next/hooks/header/useHeaderMenuSorting.js +6 -3
  37. package/esm/next/hooks/header/useHeaderMenuSorting.js.map +1 -1
  38. package/esm/next/hooks/header/useHeaderSpaceKey.d.ts +20 -0
  39. package/esm/next/hooks/header/useHeaderSpaceKey.d.ts.map +1 -0
  40. package/esm/next/hooks/header/useHeaderSpaceKey.js +42 -0
  41. package/esm/next/hooks/header/useHeaderSpaceKey.js.map +1 -0
  42. package/esm/next/hooks/useAgGridReactProps.d.ts.map +1 -1
  43. package/esm/next/hooks/useAgGridReactProps.js +4 -0
  44. package/esm/next/hooks/useAgGridReactProps.js.map +1 -1
  45. package/esm/next/hooks/useFocusManagementProps.d.ts +16 -0
  46. package/esm/next/hooks/useFocusManagementProps.d.ts.map +1 -0
  47. package/esm/next/hooks/useFocusManagementProps.js +88 -0
  48. package/esm/next/hooks/useFocusManagementProps.js.map +1 -0
  49. package/esm/next/hooks/useInteractionProps.d.ts +8 -2
  50. package/esm/next/hooks/useInteractionProps.d.ts.map +1 -1
  51. package/esm/next/hooks/useInteractionProps.js +140 -5
  52. package/esm/next/hooks/useInteractionProps.js.map +1 -1
  53. package/package.json +12 -12
  54. package/styles/css/main.css +27 -11
  55. package/styles/css/main.css.map +1 -1
  56. package/styles/css/pivotTableNext.css +27 -11
  57. package/styles/css/pivotTableNext.css.map +1 -1
  58. package/styles/scss/pivotTableNext.scss +36 -17
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderMenuKeyboard.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderMenuKeyboard.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,qBAAqB,CACjC,MAAoD,EACpD,UAAsB,EACtB,YAAqB;IAErB,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,OAAO;QACX,CAAC;QAED,sFAAsF;QACtF,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAE,EAAE;YACvC,kCAAkC;YAClC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,EAAE,CAAC;gBAC1D,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,UAAU,EAAE,CAAC;YACjB,CAAC;QACL,CAAC,CAAC;QAEF,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE;YACR,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChE,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { MouseEvent } from "react";
1
2
  import { AgGridHeaderGroupParams, AgGridHeaderParams } from "../../types/agGrid.js";
2
3
  import { ISortingMenuItem } from "../../types/menu.js";
3
4
  /**
@@ -8,6 +9,6 @@ export declare function useHeaderMenuSorting(params: AgGridHeaderParams | AgGrid
8
9
  sortIndex: number | undefined;
9
10
  sortingItems: ISortingMenuItem[];
10
11
  handleSortingItemClick: (item: ISortingMenuItem) => void;
11
- handleProgressSort: () => void;
12
+ handleProgressSort: (event: MouseEvent<HTMLDivElement> | KeyboardEvent) => void;
12
13
  };
13
14
  //# sourceMappingURL=useHeaderMenuSorting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHeaderMenuSorting.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderMenuSorting.ts"],"names":[],"mappings":"AAQA,OAAO,EAEH,uBAAuB,EACvB,kBAAkB,EAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,uBAAuB,GAAG,IAAI;;;;mCA6CjF,gBAAgB;;EA4B9B"}
1
+ {"version":3,"file":"useHeaderMenuSorting.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderMenuSorting.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAe,MAAM,OAAO,CAAC;AAMhD,OAAO,EAEH,uBAAuB,EACvB,kBAAkB,EAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,kBAAkB,GAAG,uBAAuB,GAAG,IAAI;;;;mCA6CjF,gBAAgB;gCAiBf,UAAU,CAAC,cAAc,CAAC,GAAG,aAAa;EAiBzD"}
@@ -18,7 +18,7 @@ export function useHeaderMenuSorting(params) {
18
18
  const sortModel = isRegularHeader ? getSortModel(params.api) : [];
19
19
  const sortIndex = isRegularHeader ? (params.column.getSortIndex() ?? undefined) : undefined;
20
20
  const sanitizedSortIndex = sortModel.length > 1 ? sortIndex : undefined; // Show sort index only in case there is multi-sort
21
- // Direct sort setter for menu interactions
21
+ // Direct sort setter for menu interactions (always multisort)
22
22
  const handleSetSort = useCallback((direction) => {
23
23
  if (isRegularHeader) {
24
24
  params.setSort(direction, true);
@@ -52,9 +52,12 @@ export function useHeaderMenuSorting(params) {
52
52
  }
53
53
  handleSetSort(item.direction);
54
54
  }, [allowSorting, sortDirection, handleSetSort]);
55
- const handleProgressSort = useCallback(() => {
55
+ // Progress sort for header clicks (respects AG Grid default: regular sort, Shift+click for multisort)
56
+ const handleProgressSort = useCallback((event) => {
56
57
  if (isRegularHeader) {
57
- params.progressSort(true);
58
+ // Check if Shift key is pressed to enable multisort
59
+ const isShiftPressed = "shiftKey" in event ? event.shiftKey : false;
60
+ params.progressSort(isShiftPressed);
58
61
  }
59
62
  }, [params, isRegularHeader]);
60
63
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"useHeaderMenuSorting.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderMenuSorting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useHeaderMenuSorting.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderMenuSorting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type MouseEvent } from "react";
2
+ import { AgGridHeaderGroupParams, AgGridHeaderParams } from "../../types/agGrid.js";
3
+ /**
4
+ * Hook that handles Space and Enter key press on header cells.
5
+ *
6
+ * AG Grid manages focus on the header cell wrapper element, not on our custom
7
+ * header component's clickable areas. This hook attaches a keydown listener to
8
+ * the AG Grid header cell wrapper to handle Space and Enter key presses for the specific
9
+ * header cell only.
10
+ *
11
+ * - Space or Enter: Triggers sort/drill actions
12
+ * - Shift + Space or Shift + Enter: Triggers multi-sort (when Shift is pressed)
13
+ *
14
+ * @param params - AG Grid header params containing eGridHeader reference
15
+ * @param action - Handler to invoke when Space or Enter is pressed. Can accept either MouseEvent (from actual clicks) or KeyboardEvent (from keyboard)
16
+ *
17
+ * @internal
18
+ */
19
+ export declare function useHeaderSpaceKey(params: AgGridHeaderParams | AgGridHeaderGroupParams, action: (event: MouseEvent<HTMLDivElement> | KeyboardEvent) => void): void;
20
+ //# sourceMappingURL=useHeaderSpaceKey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderSpaceKey.d.ts","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderSpaceKey.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEpF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,kBAAkB,GAAG,uBAAuB,EACpD,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,aAAa,KAAK,IAAI,GACpE,IAAI,CA0BN"}
@@ -0,0 +1,42 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import { useEffect } from "react";
3
+ /**
4
+ * Hook that handles Space and Enter key press on header cells.
5
+ *
6
+ * AG Grid manages focus on the header cell wrapper element, not on our custom
7
+ * header component's clickable areas. This hook attaches a keydown listener to
8
+ * the AG Grid header cell wrapper to handle Space and Enter key presses for the specific
9
+ * header cell only.
10
+ *
11
+ * - Space or Enter: Triggers sort/drill actions
12
+ * - Shift + Space or Shift + Enter: Triggers multi-sort (when Shift is pressed)
13
+ *
14
+ * @param params - AG Grid header params containing eGridHeader reference
15
+ * @param action - Handler to invoke when Space or Enter is pressed. Can accept either MouseEvent (from actual clicks) or KeyboardEvent (from keyboard)
16
+ *
17
+ * @internal
18
+ */
19
+ export function useHeaderSpaceKey(params, action) {
20
+ useEffect(() => {
21
+ // params.eGridHeader is provided by AG Grid and points to our custom header component
22
+ const headerElement = params.eGridHeader;
23
+ if (!headerElement) {
24
+ return;
25
+ }
26
+ const handleKeyDown = (e) => {
27
+ const isSpace = e.key === " " || e.key === "Space";
28
+ const isEnter = e.key === "Enter";
29
+ if (isSpace || isEnter) {
30
+ e.preventDefault();
31
+ e.stopPropagation();
32
+ // Pass the actual keyboard event (which includes shiftKey state for multi-sort)
33
+ action(e);
34
+ }
35
+ };
36
+ headerElement.addEventListener("keydown", handleKeyDown);
37
+ return () => {
38
+ headerElement.removeEventListener("keydown", handleKeyDown);
39
+ };
40
+ }, [params, action]);
41
+ }
42
+ //# sourceMappingURL=useHeaderSpaceKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHeaderSpaceKey.js","sourceRoot":"","sources":["../../../../src/next/hooks/header/useHeaderSpaceKey.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAmB,SAAS,EAAE,MAAM,OAAO,CAAC;AAInD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAC7B,MAAoD,EACpD,MAAmE;IAEnE,SAAS,CAAC,GAAG,EAAE;QACX,sFAAsF;QACtF,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC;YACnD,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC;YAElC,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;gBACrB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBAEpB,gFAAgF;gBAChF,MAAM,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;QACL,CAAC,CAAC;QAEF,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE;YACR,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAChE,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAgGridReactProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useAgGridReactProps.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,mBAAmB,gBAoDlC"}
1
+ {"version":3,"file":"useAgGridReactProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useAgGridReactProps.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,mBAAmB,gBAuDlC"}
@@ -9,6 +9,7 @@ import { useCellSelectionProps } from "./useCellSelectionProps.js";
9
9
  import { useClipboardProps } from "./useClipboardProps.js";
10
10
  import { useColumnDefsProps } from "./useColumnDefsProps.js";
11
11
  import { useDataLoadingProps } from "./useDataLoadingProps.js";
12
+ import { useFocusManagementProps } from "./useFocusManagementProps.js";
12
13
  import { useHeaderComponents } from "./useHeaderComponents.js";
13
14
  import { useInteractionProps } from "./useInteractionProps.js";
14
15
  import { usePivotingProps } from "./usePivotingProps.js";
@@ -37,6 +38,7 @@ export function useAgGridReactProps() {
37
38
  const enhanceWithHeaderComponents = useHeaderComponents();
38
39
  const enhanceWithAfterRender = useAfterRenderCallback();
39
40
  const enhanceWithVirtualColumnAutoResize = useVirtualColumnAutoResize();
41
+ const enhanceWithFocusManagement = useFocusManagementProps();
40
42
  return useMemo(() => {
41
43
  return [
42
44
  enhanceWithAgGridApi,
@@ -54,6 +56,7 @@ export function useAgGridReactProps() {
54
56
  enhanceWithHeaderComponents,
55
57
  enhanceWithAfterRender,
56
58
  enhanceWithVirtualColumnAutoResize,
59
+ enhanceWithFocusManagement,
57
60
  ].reduce((acc, fn) => fn(acc), AG_GRID_DEFAULT_PROPS);
58
61
  }, [
59
62
  enhanceWithAgGridApi,
@@ -71,6 +74,7 @@ export function useAgGridReactProps() {
71
74
  enhanceWithHeaderComponents,
72
75
  enhanceWithAfterRender,
73
76
  enhanceWithVirtualColumnAutoResize,
77
+ enhanceWithFocusManagement,
74
78
  ]);
75
79
  }
76
80
  //# sourceMappingURL=useAgGridReactProps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAgGridReactProps.js","sourceRoot":"","sources":["../../../src/next/hooks/useAgGridReactProps.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAG3E;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IAC/B,MAAM,oBAAoB,GAAG,iBAAiB,EAAE,CAAC;IACjD,MAAM,6BAA6B,GAAG,mBAAmB,EAAE,CAAC;IAC5D,MAAM,qBAAqB,GAAG,kBAAkB,EAAE,CAAC;IACnD,MAAM,mBAAmB,GAAG,gBAAgB,EAAE,CAAC;IAC/C,MAAM,uBAAuB,GAAG,oBAAoB,EAAE,CAAC;IACvD,MAAM,kBAAkB,GAAG,eAAe,EAAE,CAAC;IAC7C,MAAM,uBAAuB,GAAG,mBAAmB,EAAE,CAAC;IACtD,MAAM,wBAAwB,GAAG,qBAAqB,EAAE,CAAC;IACzD,MAAM,oBAAoB,GAAG,iBAAiB,EAAE,CAAC;IACjD,MAAM,uBAAuB,GAAG,oBAAoB,EAAE,CAAC;IACvD,MAAM,qBAAqB,GAAG,aAAa,EAAE,CAAC;IAC9C,MAAM,gBAAgB,GAAG,aAAa,EAAE,CAAC;IACzC,MAAM,2BAA2B,GAAG,mBAAmB,EAAE,CAAC;IAC1D,MAAM,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;IACxD,MAAM,kCAAkC,GAAG,0BAA0B,EAAE,CAAC;IAExE,OAAO,OAAO,CAAc,GAAG,EAAE;QAC7B,OAAO;YACH,oBAAoB;YACpB,6BAA6B;YAC7B,qBAAqB;YACrB,mBAAmB;YACnB,uBAAuB;YACvB,kBAAkB;YAClB,uBAAuB;YACvB,wBAAwB;YACxB,oBAAoB;YACpB,uBAAuB;YACvB,qBAAqB;YACrB,gBAAgB;YAChB,2BAA2B;YAC3B,sBAAsB;YACtB,kCAAkC;SACrC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC1D,CAAC,EAAE;QACC,oBAAoB;QACpB,6BAA6B;QAC7B,qBAAqB;QACrB,mBAAmB;QACnB,uBAAuB;QACvB,kBAAkB;QAClB,uBAAuB;QACvB,wBAAwB;QACxB,oBAAoB;QACpB,uBAAuB;QACvB,qBAAqB;QACrB,gBAAgB;QAChB,2BAA2B;QAC3B,sBAAsB;QACtB,kCAAkC;KACrC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"useAgGridReactProps.js","sourceRoot":"","sources":["../../../src/next/hooks/useAgGridReactProps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { AgGridProps } from "../types/agGrid.js";
2
+ /**
3
+ * Hook that provides AG Grid props for keyboard navigation and focus management.
4
+ *
5
+ * This hook handles:
6
+ * - Tab key behavior: Tab exits the grid (browser handles it), does not navigate between cells
7
+ * - Arrow keys: Standard cell-to-cell navigation within grid boundaries
8
+ * - Page Up/Down: Scrolls by visible page of rows
9
+ * - Home/End: Moves to first/last cell in current row
10
+ * - Ctrl+Home/End: Moves to first/last cell in entire grid
11
+ * - Header focus: Clears body cell selection when focus moves to header
12
+ *
13
+ * @alpha
14
+ */
15
+ export declare function useFocusManagementProps(): (agGridReactProps: AgGridProps) => AgGridProps;
16
+ //# sourceMappingURL=useFocusManagementProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocusManagementProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useFocusManagementProps.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK,WAAW,CA+FxF"}
@@ -0,0 +1,88 @@
1
+ // (C) 2025 GoodData Corporation
2
+ import { useCallback } from "react";
3
+ import { UnexpectedSdkError } from "@gooddata/sdk-ui";
4
+ import { useClearCellSelection } from "./useClearCellSelection.js";
5
+ /**
6
+ * Hook that provides AG Grid props for keyboard navigation and focus management.
7
+ *
8
+ * This hook handles:
9
+ * - Tab key behavior: Tab exits the grid (browser handles it), does not navigate between cells
10
+ * - Arrow keys: Standard cell-to-cell navigation within grid boundaries
11
+ * - Page Up/Down: Scrolls by visible page of rows
12
+ * - Home/End: Moves to first/last cell in current row
13
+ * - Ctrl+Home/End: Moves to first/last cell in entire grid
14
+ * - Header focus: Clears body cell selection when focus moves to header
15
+ *
16
+ * @alpha
17
+ */
18
+ export function useFocusManagementProps() {
19
+ const clearCellSelection = useClearCellSelection();
20
+ /**
21
+ * AG Grid's suppressKeyboardEvent allows us to control which keyboard events
22
+ * AG Grid processes vs which ones should bubble up to the browser.
23
+ *
24
+ * Returning true = suppress AG Grid's handling, let custom handler process it
25
+ * Returning false = let AG Grid handle the event
26
+ */
27
+ const suppressKeyboardEvent = useCallback((params) => {
28
+ const { event } = params;
29
+ const { key } = event;
30
+ // Prevent Space key from scrolling the page
31
+ if (key === " " || key === "Space") {
32
+ event.preventDefault();
33
+ }
34
+ // Suppress Tab - handled in onCellKeyDown (useInteractionProps.ts)
35
+ if (key === "Tab") {
36
+ return true;
37
+ }
38
+ // Suppress custom navigation keys - handled in onCellKeyDown (useInteractionProps.ts):
39
+ // - Home/End (custom row navigation)
40
+ // - Ctrl+Home/End (jump to first/last cell in grid)
41
+ const isCustomNavigationKey = key === "Home" || key === "End";
42
+ if (isCustomNavigationKey) {
43
+ return true;
44
+ }
45
+ // Let AG Grid handle standard navigation keys:
46
+ const isStandardNavigationKey = key === "ArrowUp" ||
47
+ key === "ArrowDown" ||
48
+ key === "ArrowLeft" ||
49
+ key === "ArrowRight" ||
50
+ key === "PageUp" ||
51
+ key === "PageDown";
52
+ return !isStandardNavigationKey;
53
+ }, []);
54
+ const suppressHeaderKeyboardEvent = useCallback((params) => {
55
+ const { event } = params;
56
+ const { key } = event;
57
+ // Prevent Space key from scrolling the page
58
+ // The actual Space key handling for actions is done in header components via useEffect
59
+ if (key === " " || key === "Space") {
60
+ event.preventDefault();
61
+ }
62
+ // Let AG Grid handle all events normally
63
+ return false;
64
+ }, []);
65
+ const onHeaderFocused = useCallback(() => {
66
+ // Clear body cell selection when header receives focus
67
+ clearCellSelection();
68
+ }, [clearCellSelection]);
69
+ return useCallback((agGridReactProps) => {
70
+ if ("suppressKeyboardEvent" in agGridReactProps && agGridReactProps.suppressKeyboardEvent) {
71
+ throw new UnexpectedSdkError("suppressKeyboardEvent is already set");
72
+ }
73
+ if ("suppressHeaderKeyboardEvent" in agGridReactProps &&
74
+ agGridReactProps.suppressHeaderKeyboardEvent) {
75
+ throw new UnexpectedSdkError("suppressHeaderKeyboardEvent is already set");
76
+ }
77
+ if (agGridReactProps.onHeaderFocused) {
78
+ throw new UnexpectedSdkError("onHeaderFocused is already set");
79
+ }
80
+ return {
81
+ ...agGridReactProps,
82
+ suppressKeyboardEvent,
83
+ suppressHeaderKeyboardEvent,
84
+ onHeaderFocused,
85
+ };
86
+ }, [suppressKeyboardEvent, suppressHeaderKeyboardEvent, onHeaderFocused]);
87
+ }
88
+ //# sourceMappingURL=useFocusManagementProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocusManagementProps.js","sourceRoot":"","sources":["../../../src/next/hooks/useFocusManagementProps.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAInE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB;IACnC,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IACnD;;;;;;OAMG;IACH,MAAM,qBAAqB,GAAG,WAAW,CACrC,CAAC,MAAiE,EAAW,EAAE;QAC3E,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzB,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QAEtB,4CAA4C;QAC5C,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACjC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3B,CAAC;QAED,mEAAmE;QACnE,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,uFAAuF;QACvF,qCAAqC;QACrC,oDAAoD;QACpD,MAAM,qBAAqB,GAAG,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC;QAE9D,IAAI,qBAAqB,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,+CAA+C;QAC/C,MAAM,uBAAuB,GACzB,GAAG,KAAK,SAAS;YACjB,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,YAAY;YACpB,GAAG,KAAK,QAAQ;YAChB,GAAG,KAAK,UAAU,CAAC;QAEvB,OAAO,CAAC,uBAAuB,CAAC;IACpC,CAAC,EACD,EAAE,CACL,CAAC;IAEF,MAAM,2BAA2B,GAAG,WAAW,CAC3C,CAAC,MAAiE,EAAW,EAAE;QAC3E,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QACzB,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;QAEtB,4CAA4C;QAC5C,uFAAuF;QACvF,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACjC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3B,CAAC;QAED,yCAAyC;QACzC,OAAO,KAAK,CAAC;IACjB,CAAC,EACD,EAAE,CACL,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,uDAAuD;QACvD,kBAAkB,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEzB,OAAO,WAAW,CACd,CAAC,gBAA6B,EAAe,EAAE;QAC3C,IAAI,uBAAuB,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;YACxF,MAAM,IAAI,kBAAkB,CAAC,sCAAsC,CAAC,CAAC;QACzE,CAAC;QAED,IACI,6BAA6B,IAAI,gBAAgB;YACjD,gBAAgB,CAAC,2BAA2B,EAC9C,CAAC;YACC,MAAM,IAAI,kBAAkB,CAAC,4CAA4C,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,gBAAgB,CAAC,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,kBAAkB,CAAC,gCAAgC,CAAC,CAAC;QACnE,CAAC;QAED,OAAO;YACH,GAAG,gBAAgB;YACnB,qBAAqB;YACrB,2BAA2B;YAC3B,eAAe;SACH,CAAC;IACrB,CAAC,EACD,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,eAAe,CAAC,CACxE,CAAC;AACN,CAAC"}
@@ -2,8 +2,14 @@ import { AgGridProps } from "../types/agGrid.js";
2
2
  /**
3
3
  * Returns ag-grid props with interactions applied.
4
4
  *
5
- * For selection of single cell, we try to check if the user is dragging the mouse. If not, we drill.
6
- * If the user is dragging the mouse, we don't drill.
5
+ * Handles:
6
+ * - Cell drilling on click and keyboard (Enter/Space without modifiers)
7
+ * - Mouse drag detection for cell selection
8
+ * - Custom keyboard navigation (ArrowUp, PageUp/Down, Home/End, Ctrl+Home/End)
9
+ * - Column selection (Ctrl+Space)
10
+ * - Row selection (Shift+Space)
11
+ * - Tab key to exit grid
12
+ * - Escape key to blur
7
13
  *
8
14
  * @alpha
9
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"useInteractionProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useInteractionProps.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAmB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGlE;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK,WAAW,CA6KpF"}
1
+ {"version":3,"file":"useInteractionProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useInteractionProps.ts"],"names":[],"mappings":"AA8BA,OAAO,EAA4C,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqB3F;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK,WAAW,CAoTpF"}
@@ -1,17 +1,40 @@
1
1
  // (C) 2025 GoodData Corporation
2
2
  import { useCallback, useRef } from "react";
3
3
  import { UnexpectedSdkError, VisualizationTypes, } from "@gooddata/sdk-ui";
4
- import { isEnterKey, isEscapeKey, isSpaceKey } from "@gooddata/sdk-ui-kit";
4
+ import { findFocusableElementOutsideContainer, isEnterKey, isEscapeKey, isSpaceKey, makeKeyboardNavigation, } from "@gooddata/sdk-ui-kit";
5
5
  import { useCurrentDataView } from "../context/CurrentDataViewContext.js";
6
6
  import { usePivotTableProps } from "../context/PivotTablePropsContext.js";
7
7
  import { createCustomDrillEvent } from "../features/drilling/events.js";
8
8
  import { createDrillIntersection } from "../features/drilling/intersection.js";
9
9
  import { isCellDrillable } from "../features/drilling/isDrillable.js";
10
+ /**
11
+ * Keyboard navigation action map for pivot table
12
+ */
13
+ const tableKeyboardNavigation = makeKeyboardNavigation({
14
+ onHomeNormal: [{ code: "Home", modifiers: ["!Control", "!Meta"] }],
15
+ onHomeWithModifier: [
16
+ { code: "Home", modifiers: ["Control"] },
17
+ { code: "Home", modifiers: ["Meta"] },
18
+ ],
19
+ onEndNormal: [{ code: "End", modifiers: ["!Control", "!Meta"] }],
20
+ onEndWithModifier: [
21
+ { code: "End", modifiers: ["Control"] },
22
+ { code: "End", modifiers: ["Meta"] },
23
+ ],
24
+ onSelectColumn: [{ code: "Space", modifiers: ["Control"] }],
25
+ onSelectRow: [{ code: "Space", modifiers: ["Shift", "!Control", "!Meta"] }],
26
+ });
10
27
  /**
11
28
  * Returns ag-grid props with interactions applied.
12
29
  *
13
- * For selection of single cell, we try to check if the user is dragging the mouse. If not, we drill.
14
- * If the user is dragging the mouse, we don't drill.
30
+ * Handles:
31
+ * - Cell drilling on click and keyboard (Enter/Space without modifiers)
32
+ * - Mouse drag detection for cell selection
33
+ * - Custom keyboard navigation (ArrowUp, PageUp/Down, Home/End, Ctrl+Home/End)
34
+ * - Column selection (Ctrl+Space)
35
+ * - Row selection (Shift+Space)
36
+ * - Tab key to exit grid
37
+ * - Escape key to blur
15
38
  *
16
39
  * @alpha
17
40
  */
@@ -95,6 +118,82 @@ export function useInteractionProps() {
95
118
  // Mark that a range selection occurred
96
119
  isDraggingRef.current = true;
97
120
  }, []);
121
+ /**
122
+ * Navigate to first column (and optionally first row with modifier)
123
+ */
124
+ const navigateToHome = useCallback((api, row, withModifier) => {
125
+ const allColumns = api.getAllDisplayedColumns();
126
+ if (allColumns && allColumns.length > 0) {
127
+ const firstColumn = allColumns[0];
128
+ const targetRow = withModifier ? 0 : row;
129
+ api.clearCellSelection();
130
+ if (withModifier) {
131
+ api.ensureIndexVisible(0);
132
+ }
133
+ api.ensureColumnVisible(firstColumn);
134
+ api.setFocusedCell(targetRow, firstColumn);
135
+ api.addCellRange({
136
+ rowStartIndex: targetRow,
137
+ rowEndIndex: targetRow,
138
+ columns: [firstColumn],
139
+ });
140
+ }
141
+ }, []);
142
+ /**
143
+ * Navigate to last column (and optionally last row with modifier)
144
+ */
145
+ const navigateToEnd = useCallback((api, row, withModifier) => {
146
+ const allColumns = api.getAllDisplayedColumns();
147
+ if (allColumns && allColumns.length > 0) {
148
+ const lastColumn = allColumns[allColumns.length - 1];
149
+ let targetRow = row;
150
+ if (withModifier) {
151
+ const displayedRowCount = api.getDisplayedRowCount();
152
+ if (displayedRowCount > 0) {
153
+ targetRow = displayedRowCount - 1;
154
+ }
155
+ }
156
+ api.clearCellSelection();
157
+ if (withModifier) {
158
+ api.ensureIndexVisible(targetRow);
159
+ }
160
+ api.ensureColumnVisible(lastColumn);
161
+ api.setFocusedCell(targetRow, lastColumn);
162
+ api.addCellRange({
163
+ rowStartIndex: targetRow,
164
+ rowEndIndex: targetRow,
165
+ columns: [lastColumn],
166
+ });
167
+ }
168
+ }, []);
169
+ /**
170
+ * Select entire column containing the focused cell
171
+ */
172
+ const selectColumn = useCallback((api, column) => {
173
+ const displayedRowCount = api.getDisplayedRowCount();
174
+ if (displayedRowCount > 0) {
175
+ api.clearCellSelection();
176
+ api.addCellRange({
177
+ rowStartIndex: 0,
178
+ rowEndIndex: displayedRowCount - 1,
179
+ columns: [column],
180
+ });
181
+ }
182
+ }, []);
183
+ /**
184
+ * Select entire row containing the focused cell
185
+ */
186
+ const selectRow = useCallback((api, row) => {
187
+ const allColumns = api.getAllDisplayedColumns();
188
+ if (allColumns && allColumns.length > 0) {
189
+ api.clearCellSelection();
190
+ api.addCellRange({
191
+ rowStartIndex: row,
192
+ rowEndIndex: row,
193
+ columns: allColumns,
194
+ });
195
+ }
196
+ }, []);
98
197
  const onCellKeyDown = useCallback((event) => {
99
198
  // Check if it's a keyboard event
100
199
  if (!event.event || !(event.event instanceof KeyboardEvent)) {
@@ -102,21 +201,57 @@ export function useInteractionProps() {
102
201
  }
103
202
  // Cast to ReactKeyboardEvent for helpers that expect React's typing shape
104
203
  const keyboardEvent = event.event;
204
+ // Handle Tab key: find next/previous focusable element outside grid and focus it
205
+ if (keyboardEvent.key === "Tab") {
206
+ // Prevent default Tab behavior
207
+ keyboardEvent.preventDefault();
208
+ keyboardEvent.stopPropagation();
209
+ // Clear AG Grid's internal focus state
210
+ event.api.clearFocusedCell();
211
+ const eventTarget = keyboardEvent.target;
212
+ if (!eventTarget) {
213
+ return;
214
+ }
215
+ // Find the next/previous focusable element outside the grid
216
+ const direction = keyboardEvent.shiftKey ? "backward" : "forward";
217
+ const targetElement = findFocusableElementOutsideContainer(eventTarget, direction);
218
+ if (targetElement) {
219
+ targetElement.focus();
220
+ }
221
+ return;
222
+ }
105
223
  // Blur focused element when Escape is pressed, which will trigger onBlur and clear selection
106
224
  if (isEscapeKey(keyboardEvent)) {
107
225
  const activeElement = document.activeElement;
108
226
  activeElement?.blur();
109
227
  return;
110
228
  }
229
+ // Handle custom keyboard navigation (Home/End with and without modifiers, column/row selection)
230
+ const { api, rowIndex, column } = event;
231
+ if (column && rowIndex !== null && rowIndex !== undefined) {
232
+ tableKeyboardNavigation({
233
+ onHomeNormal: () => navigateToHome(api, rowIndex, false),
234
+ onHomeWithModifier: () => navigateToHome(api, rowIndex, true),
235
+ onEndNormal: () => navigateToEnd(api, rowIndex, false),
236
+ onEndWithModifier: () => navigateToEnd(api, rowIndex, true),
237
+ onSelectColumn: () => selectColumn(api, column),
238
+ onSelectRow: () => selectRow(api, rowIndex),
239
+ }, { shouldPreventDefault: true, shouldStopPropagation: true })(keyboardEvent);
240
+ }
111
241
  // Handle drilling only if there are drillable items
112
242
  if (!onDrill || drillableItems.length === 0) {
113
243
  return;
114
244
  }
115
245
  // Drill via keyboard: ENTER or SPACE pressed on a drillable cell
116
- if (isEnterKey(keyboardEvent) || isSpaceKey(keyboardEvent)) {
246
+ // Only drill if no modifier keys are pressed (to avoid conflicts with selection shortcuts)
247
+ const hasModifiers = keyboardEvent.ctrlKey ||
248
+ keyboardEvent.metaKey ||
249
+ keyboardEvent.shiftKey ||
250
+ keyboardEvent.altKey;
251
+ if ((isEnterKey(keyboardEvent) || isSpaceKey(keyboardEvent)) && !hasModifiers) {
117
252
  drillFromCellEvent(event);
118
253
  }
119
- }, [drillFromCellEvent, onDrill, drillableItems]);
254
+ }, [drillFromCellEvent, onDrill, drillableItems, navigateToHome, navigateToEnd, selectColumn, selectRow]);
120
255
  return useCallback((agGridReactProps) => {
121
256
  if (agGridReactProps.onCellClicked) {
122
257
  throw new UnexpectedSdkError("onCellClicked is already set");
@@ -1 +1 @@
1
- {"version":3,"file":"useInteractionProps.js","sourceRoot":"","sources":["../../../src/next/hooks/useInteractionProps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useInteractionProps.js","sourceRoot":"","sources":["../../../src/next/hooks/useInteractionProps.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-pivot",
3
- "version": "11.9.0-alpha.4",
3
+ "version": "11.9.0-alpha.5",
4
4
  "description": "GoodData.UI SDK - Pivot Table",
5
5
  "repository": {
6
6
  "type": "git",
@@ -43,12 +43,12 @@
43
43
  "ts-invariant": "^0.7.5",
44
44
  "tslib": "2.8.1",
45
45
  "uuid": "^11.1.0",
46
- "@gooddata/sdk-ui": "11.9.0-alpha.4",
47
- "@gooddata/sdk-model": "11.9.0-alpha.4",
48
- "@gooddata/sdk-ui-kit": "11.9.0-alpha.4",
49
- "@gooddata/sdk-ui-theme-provider": "11.9.0-alpha.4",
50
- "@gooddata/sdk-ui-vis-commons": "11.9.0-alpha.4",
51
- "@gooddata/sdk-backend-spi": "11.9.0-alpha.4"
46
+ "@gooddata/sdk-backend-spi": "11.9.0-alpha.5",
47
+ "@gooddata/sdk-model": "11.9.0-alpha.5",
48
+ "@gooddata/sdk-ui-kit": "11.9.0-alpha.5",
49
+ "@gooddata/sdk-ui": "11.9.0-alpha.5",
50
+ "@gooddata/sdk-ui-theme-provider": "11.9.0-alpha.5",
51
+ "@gooddata/sdk-ui-vis-commons": "11.9.0-alpha.5"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@gooddata/stylelint-config": "^5.0.0",
@@ -84,17 +84,17 @@
84
84
  "raf": "^3.4.1",
85
85
  "react": "19.1.1",
86
86
  "react-dom": "19.1.1",
87
- "sass": "1.66.1",
87
+ "sass": "1.70.0",
88
88
  "stylelint": "^13.8.0",
89
89
  "stylelint-checkstyle-formatter": "^0.1.2",
90
90
  "stylelint-config-prettier": "^9.0.5",
91
91
  "typescript": "5.8.3",
92
92
  "vitest": "3.2.4",
93
93
  "vitest-dom": "0.1.1",
94
- "@gooddata/eslint-config": "11.9.0-alpha.4",
95
- "@gooddata/reference-workspace": "11.9.0-alpha.4",
96
- "@gooddata/sdk-backend-base": "11.9.0-alpha.4",
97
- "@gooddata/sdk-backend-mockingbird": "11.9.0-alpha.4"
94
+ "@gooddata/eslint-config": "11.9.0-alpha.5",
95
+ "@gooddata/reference-workspace": "11.9.0-alpha.5",
96
+ "@gooddata/sdk-backend-base": "11.9.0-alpha.5",
97
+ "@gooddata/sdk-backend-mockingbird": "11.9.0-alpha.5"
98
98
  },
99
99
  "peerDependencies": {
100
100
  "react": "^18.0.0 || ^19.0.0",