@gooddata/sdk-ui-pivot 11.43.0 → 11.44.0-alpha.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../src/locales.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAoCrD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAOlE,CAAC"}
1
+ {"version":3,"file":"locales.d.ts","sourceRoot":"","sources":["../src/locales.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAwCrD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAOlE,CAAC"}
package/esm/locales.js CHANGED
@@ -1,4 +1,4 @@
1
- // (C) 2019-2025 GoodData Corporation
1
+ // (C) 2019-2026 GoodData Corporation
2
2
  import { defineMessages } from "react-intl";
3
3
  //NOTE: Follow up ticket for move all messages: https://gooddata.atlassian.net/browse/FET-1050
4
4
  export const messages = defineMessages({
@@ -29,6 +29,10 @@ export const messages = defineMessages({
29
29
  openHeaderMenuAria: { id: "visualizations.menu.header.openAriaLabel" },
30
30
  keyboardInstructionsMac: { id: "visualizations.table.header.keyboardInstructions.mac" },
31
31
  keyboardInstructionsWindows: { id: "visualizations.table.header.keyboardInstructions.windows" },
32
+ keyboardHintOpenMenu: { id: "visualizations.table.header.keyboardHint.openMenu" },
33
+ keyboardHintSort: { id: "visualizations.table.header.keyboardHint.sort" },
34
+ keyboardHintMultiSort: { id: "visualizations.table.header.keyboardHint.multiSort" },
35
+ keyboardHintColumnWidth: { id: "visualizations.table.header.keyboardHint.columnWidth" },
32
36
  ariaSortedAscending: { id: "visualizations.table.header.aria.sortedAscending" },
33
37
  ariaSortedDescending: { id: "visualizations.table.header.aria.sortedDescending" },
34
38
  ariaPriority: { id: "visualizations.table.header.aria.priority" },
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/AttributeHeader.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAKtF;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,2CAiGzD"}
1
+ {"version":3,"file":"AttributeHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/AttributeHeader.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAMtF;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,2CAwGzD"}
@@ -8,6 +8,7 @@ import { useHeaderMenuKeyboard } from "../../hooks/header/useHeaderMenuKeyboard.
8
8
  import { useHeaderSpaceKey } from "../../hooks/header/useHeaderSpaceKey.js";
9
9
  import { getPivotHeaderClickableAreaTestIdProps, getPivotHeaderTestIdProps, getPivotHeaderTextTestIdProps, } from "../../testing/dataTestIdGenerators.js";
10
10
  import { HeaderMenu } from "./HeaderCell/HeaderMenu.js";
11
+ import { HeaderKeyboardHint, isFirstDisplayedColumn } from "./HeaderKeyboardHint.js";
11
12
  import { SortIndicator } from "./SortIndicator.js";
12
13
  /**
13
14
  * Renderer for attribute header.
@@ -39,15 +40,15 @@ export function AttributeHeader(params) {
39
40
  setIsMenuOpen(true);
40
41
  }, hasMenuItems);
41
42
  useHeaderCellAriaLabel(params.eGridHeader, headerCellAriaLabel);
42
- return (_jsxs("div", { className: e("header-cell", {
43
- "is-menu-open": isMenuOpen,
44
- drillable: isDrillable,
45
- }), ...getPivotHeaderTestIdProps({ drillable: isDrillable }), children: [
46
- _jsxs("div", { className: "gd-header-content", "aria-hidden": "true", children: [
47
- _jsx("span", { className: "gd-header-text", ...getPivotHeaderTextTestIdProps(), children: params.displayName }), !!colDef.sortable && sortDirection ? (_jsx(SortIndicator, { sortDirection: sortDirection, sortIndex: sortIndex })) : null] }), !!colDef.sortable || !!isDrillable ? (_jsx("div", { className: "gd-header-cell-clickable-area", "aria-hidden": "true", ...getPivotHeaderClickableAreaTestIdProps(), onClick: handleHeaderClick })) : null, hasMenuItems ? (_jsx(HeaderMenu, { aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, sortingItems: sortingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, onSortingItemClick: handleSortingItemClick, isMenuOpened: isMenuOpen, onMenuOpenedChange: (opened) => {
48
- setIsMenuOpen(opened);
49
- if (!opened) {
50
- setIsKeyboardTriggered(false);
51
- }
52
- }, isKeyboardTriggered: isKeyboardTriggered })) : null] }));
43
+ return (_jsx(HeaderKeyboardHint, { eGridHeader: params.eGridHeader, enabled: isFirstDisplayedColumn(params), canSort: allowSorting, canOpenMenu: hasMenuItems, children: _jsxs("div", { className: e("header-cell", {
44
+ "is-menu-open": isMenuOpen,
45
+ drillable: isDrillable,
46
+ }), ...getPivotHeaderTestIdProps({ drillable: isDrillable }), children: [
47
+ _jsxs("div", { className: "gd-header-content", "aria-hidden": "true", children: [
48
+ _jsx("span", { className: "gd-header-text", ...getPivotHeaderTextTestIdProps(), children: params.displayName }), !!colDef.sortable && sortDirection ? (_jsx(SortIndicator, { sortDirection: sortDirection, sortIndex: sortIndex })) : null] }), !!colDef.sortable || !!isDrillable ? (_jsx("div", { className: "gd-header-cell-clickable-area", "aria-hidden": "true", ...getPivotHeaderClickableAreaTestIdProps(), onClick: handleHeaderClick })) : null, hasMenuItems ? (_jsx(HeaderMenu, { aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, sortingItems: sortingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, onSortingItemClick: handleSortingItemClick, isMenuOpened: isMenuOpen, onMenuOpenedChange: (opened) => {
49
+ setIsMenuOpen(opened);
50
+ if (!opened) {
51
+ setIsKeyboardTriggered(false);
52
+ }
53
+ }, isKeyboardTriggered: isKeyboardTriggered })) : null] }) }));
53
54
  }
@@ -0,0 +1,25 @@
1
+ import { type ReactNode } from "react";
2
+ import { type AgGridHeaderParams } from "../../types/agGrid.js";
3
+ interface IHeaderKeyboardHintProps {
4
+ eGridHeader: HTMLElement | undefined;
5
+ canSort?: boolean;
6
+ canOpenMenu?: boolean;
7
+ enabled?: boolean;
8
+ children: ReactNode;
9
+ }
10
+ /**
11
+ * True when `params` renders the first displayed (left-most) column — the only header that shows the hint.
12
+ *
13
+ * @internal
14
+ */
15
+ export declare function isFirstDisplayedColumn(params: AgGridHeaderParams): boolean;
16
+ /**
17
+ * Wraps a column header with a keyboard-shortcut hint shown while it has keyboard focus. Limited to the first
18
+ * column via `enabled` ({@link isFirstDisplayedColumn}); `accessibilityHidden` because every header already
19
+ * announces the shortcuts via ARIA.
20
+ *
21
+ * @internal
22
+ */
23
+ export declare function HeaderKeyboardHint({ eGridHeader, enabled, canSort, canOpenMenu, children }: IHeaderKeyboardHintProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=HeaderKeyboardHint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderKeyboardHint.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/HeaderKeyboardHint.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAQ5D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,UAAU,wBAAwB;IAC9B,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACvB;AAUD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAE1E;AA0DD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAC/B,WAAW,EACX,OAAc,EACd,OAAO,EACP,WAAW,EACX,QAAQ,EACX,EAAE,wBAAwB,2CAU1B"}
@@ -0,0 +1,63 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2026 GoodData Corporation
3
+ import { useEffect, useState } from "react";
4
+ import { useIntl } from "react-intl";
5
+ import { UiTooltip } from "@gooddata/sdk-ui-kit";
6
+ import { messages } from "../../../locales.js";
7
+ import { isMacOS } from "../../hooks/useLocaleTextProps.js";
8
+ const MAC_KEYS = { openMenu: "⌥ + ↓", sort: "⏎", multiSort: "⇧ + ⏎", columnWidth: "⌥ + ←/→" };
9
+ const WINDOWS_KEYS = {
10
+ openMenu: "Alt + ↓",
11
+ sort: "Enter",
12
+ multiSort: "Shift + Enter",
13
+ columnWidth: "Alt + ←/→",
14
+ };
15
+ /**
16
+ * True when `params` renders the first displayed (left-most) column — the only header that shows the hint.
17
+ *
18
+ * @internal
19
+ */
20
+ export function isFirstDisplayedColumn(params) {
21
+ return params.api.getAllDisplayedColumns()[0] === params.column;
22
+ }
23
+ function useHeaderKeyboardFocus(eGridHeader) {
24
+ const [isKeyboardFocused, setIsKeyboardFocused] = useState(false);
25
+ useEffect(() => {
26
+ // `:focus-visible` keeps the hint keyboard-only; `focusin`/`focusout` bubble so descendant focus is seen.
27
+ const handler = () => setIsKeyboardFocused(eGridHeader.matches(":focus-visible"));
28
+ eGridHeader.addEventListener("focusin", handler);
29
+ eGridHeader.addEventListener("focusout", handler);
30
+ return () => {
31
+ eGridHeader.removeEventListener("focusin", handler);
32
+ eGridHeader.removeEventListener("focusout", handler);
33
+ };
34
+ }, [eGridHeader]);
35
+ return isKeyboardFocused;
36
+ }
37
+ function HeaderKeyboardHintTooltip({ eGridHeader, canSort = false, canOpenMenu = false, children, }) {
38
+ const intl = useIntl();
39
+ const isKeyboardFocused = useHeaderKeyboardFocus(eGridHeader);
40
+ const keys = isMacOS() ? MAC_KEYS : WINDOWS_KEYS;
41
+ const hint = [
42
+ canOpenMenu ? `${intl.formatMessage(messages["keyboardHintOpenMenu"])} (${keys.openMenu})` : null,
43
+ canSort ? `${intl.formatMessage(messages["keyboardHintSort"])} (${keys.sort})` : null,
44
+ canSort ? `${intl.formatMessage(messages["keyboardHintMultiSort"])} (${keys.multiSort})` : null,
45
+ `${intl.formatMessage(messages["keyboardHintColumnWidth"])} (${keys.columnWidth})`,
46
+ ]
47
+ .filter((line) => line !== null)
48
+ .join("\n");
49
+ return (_jsx(UiTooltip, { isOpen: isKeyboardFocused, triggerBy: [], accessibilityHidden: true, arrowPlacement: "top", optimalPlacement: true, content: _jsx("div", { style: { whiteSpace: "pre-line" }, children: hint }), anchorWrapperStyles: { display: "flex", width: "100%", height: "100%" }, anchor: children }));
50
+ }
51
+ /**
52
+ * Wraps a column header with a keyboard-shortcut hint shown while it has keyboard focus. Limited to the first
53
+ * column via `enabled` ({@link isFirstDisplayedColumn}); `accessibilityHidden` because every header already
54
+ * announces the shortcuts via ARIA.
55
+ *
56
+ * @internal
57
+ */
58
+ export function HeaderKeyboardHint({ eGridHeader, enabled = true, canSort, canOpenMenu, children, }) {
59
+ if (!eGridHeader || !enabled) {
60
+ return _jsx(_Fragment, { children: children });
61
+ }
62
+ return (_jsx(HeaderKeyboardHintTooltip, { eGridHeader: eGridHeader, canSort: canSort, canOpenMenu: canOpenMenu, children: children }));
63
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"MeasureGroupHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureGroupHeader.tsx"],"names":[],"mappings":"AAYA,OAAO,EACH,KAAK,wBAAwB,EAE7B,KAAK,kBAAkB,EAC1B,MAAM,uBAAuB,CAAC;AAU/B;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,2CAkGvF"}
1
+ {"version":3,"file":"MeasureGroupHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureGroupHeader.tsx"],"names":[],"mappings":"AAYA,OAAO,EACH,KAAK,wBAAwB,EAE7B,KAAK,kBAAkB,EAC1B,MAAM,uBAAuB,CAAC;AAW/B;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,2CAwGvF"}
@@ -9,6 +9,7 @@ import { useHeaderCellAriaLabel } from "../../hooks/header/useHeaderCellAriaLabe
9
9
  import { useHeaderMenu } from "../../hooks/header/useHeaderMenu.js";
10
10
  import { useHeaderMenuKeyboard } from "../../hooks/header/useHeaderMenuKeyboard.js";
11
11
  import { HeaderMenu } from "./HeaderCell/HeaderMenu.js";
12
+ import { HeaderKeyboardHint, isFirstDisplayedColumn } from "./HeaderKeyboardHint.js";
12
13
  import { getColumnMeasureIdentifier, getPivotAttributeDescriptorsForMeasureGroup, getRowScope, isValueRowDef, } from "./utils/common.js";
13
14
  /**
14
15
  * Renderer for measure group header.
@@ -62,15 +63,15 @@ export function MeasureGroupHeader(params) {
62
63
  const displayName = isHeader
63
64
  ? params.displayName
64
65
  : (effectiveMeasure?.descriptor.measureHeaderItem.name ?? params.value);
65
- return (_jsxs("div", { className: e("header-cell", {
66
- "is-menu-open": isMenuOpen,
67
- }), children: [
68
- _jsx("div", { className: "gd-header-content", "aria-hidden": "true", children: _jsx("span", { className: "gd-header-text", children: displayName }) }), hasMenuItems ? (_jsx(HeaderMenu, { aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, sortingItems: sortingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, onSortingItemClick: handleSortingItemClick, isMenuOpened: isMenuOpen, onMenuOpenedChange: (opened) => {
69
- setIsMenuOpen(opened);
70
- if (!opened) {
71
- setIsKeyboardTriggered(false);
72
- }
73
- }, isKeyboardTriggered: isKeyboardTriggered })) : null] }));
66
+ return (_jsx(HeaderKeyboardHint, { eGridHeader: isHeader ? params.eGridHeader : undefined, enabled: isHeader && isFirstDisplayedColumn(params), canOpenMenu: hasMenuItems, children: _jsxs("div", { className: e("header-cell", {
67
+ "is-menu-open": isMenuOpen,
68
+ }), children: [
69
+ _jsx("div", { className: "gd-header-content", "aria-hidden": "true", children: _jsx("span", { className: "gd-header-text", children: displayName }) }), hasMenuItems ? (_jsx(HeaderMenu, { aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, sortingItems: sortingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, onSortingItemClick: handleSortingItemClick, isMenuOpened: isMenuOpen, onMenuOpenedChange: (opened) => {
70
+ setIsMenuOpen(opened);
71
+ if (!opened) {
72
+ setIsKeyboardTriggered(false);
73
+ }
74
+ }, isKeyboardTriggered: isKeyboardTriggered })) : null] }) }));
74
75
  }
75
76
  // Distinguish between header params and cell params here
76
77
  function isHeaderParams(p) {
@@ -1 +1 @@
1
- {"version":3,"file":"MeasureHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureHeader.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAWtF;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,2CA0GvD"}
1
+ {"version":3,"file":"MeasureHeader.d.ts","sourceRoot":"","sources":["../../../../src/next/components/Header/MeasureHeader.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAYtF;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,2CAiHvD"}
@@ -11,6 +11,7 @@ import { useHeaderSpaceKey } from "../../hooks/header/useHeaderSpaceKey.js";
11
11
  import { useIsTransposed } from "../../hooks/shared/useIsTransposed.js";
12
12
  import { getPivotHeaderClickableAreaTestIdProps, getPivotHeaderTestIdProps, getPivotHeaderTextTestIdProps, } from "../../testing/dataTestIdGenerators.js";
13
13
  import { HeaderMenu } from "./HeaderCell/HeaderMenu.js";
14
+ import { HeaderKeyboardHint, isFirstDisplayedColumn } from "./HeaderKeyboardHint.js";
14
15
  import { SortIndicator } from "./SortIndicator.js";
15
16
  import { getColumnMeasureIdentifier, getColumnScope, getPivotAttributeDescriptors, isValueColumnDef, } from "./utils/common.js";
16
17
  /**
@@ -53,14 +54,14 @@ export function MeasureHeader(params) {
53
54
  setIsMenuOpen(true);
54
55
  }, hasMenuItems);
55
56
  useHeaderCellAriaLabel(params.eGridHeader, headerCellAriaLabel);
56
- return (_jsxs("div", { className: e("header-cell", {
57
- "is-menu-open": isMenuOpen,
58
- }), ...getPivotHeaderTestIdProps({ isTotal, isSubtotal }), children: [
59
- _jsxs("div", { className: "gd-header-content", "aria-hidden": "true", children: [
60
- _jsx("span", { className: "gd-header-text", ...getPivotHeaderTextTestIdProps(), children: params.displayName }), !!colDef.sortable && sortDirection ? (_jsx(SortIndicator, { sortDirection: sortDirection, sortIndex: sortIndex })) : null] }), !!colDef.sortable && (_jsx("div", { className: "gd-header-cell-clickable-area", "aria-hidden": "true", ...getPivotHeaderClickableAreaTestIdProps(), onClick: handleHeaderClick })), hasMenuItems ? (_jsx(HeaderMenu, { aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, sortingItems: sortingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, onSortingItemClick: handleSortingItemClick, isMenuOpened: isMenuOpen, onMenuOpenedChange: (opened) => {
61
- setIsMenuOpen(opened);
62
- if (!opened) {
63
- setIsKeyboardTriggered(false);
64
- }
65
- }, isKeyboardTriggered: isKeyboardTriggered })) : null] }));
57
+ return (_jsx(HeaderKeyboardHint, { eGridHeader: params.eGridHeader, enabled: isFirstDisplayedColumn(params), canSort: allowSorting, canOpenMenu: hasMenuItems, children: _jsxs("div", { className: e("header-cell", {
58
+ "is-menu-open": isMenuOpen,
59
+ }), ...getPivotHeaderTestIdProps({ isTotal, isSubtotal }), children: [
60
+ _jsxs("div", { className: "gd-header-content", "aria-hidden": "true", children: [
61
+ _jsx("span", { className: "gd-header-text", ...getPivotHeaderTextTestIdProps(), children: params.displayName }), !!colDef.sortable && sortDirection ? (_jsx(SortIndicator, { sortDirection: sortDirection, sortIndex: sortIndex })) : null] }), !!colDef.sortable && (_jsx("div", { className: "gd-header-cell-clickable-area", "aria-hidden": "true", ...getPivotHeaderClickableAreaTestIdProps(), onClick: handleHeaderClick })), hasMenuItems ? (_jsx(HeaderMenu, { aggregationsItems: aggregationsItems, textWrappingItems: textWrappingItems, sortingItems: sortingItems, onAggregationsItemClick: handleAggregationsItemClick, onTextWrappingItemClick: handleTextWrappingItemClick, onSortingItemClick: handleSortingItemClick, isMenuOpened: isMenuOpen, onMenuOpenedChange: (opened) => {
62
+ setIsMenuOpen(opened);
63
+ if (!opened) {
64
+ setIsKeyboardTriggered(false);
65
+ }
66
+ }, isKeyboardTriggered: isKeyboardTriggered })) : null] }) }));
66
67
  }
@@ -1,4 +1,10 @@
1
1
  import { type AgGridProps } from "../types/agGrid.js";
2
+ /**
3
+ * Detect if the user is on macOS for OS-specific keyboard shortcut instructions.
4
+ *
5
+ * @internal
6
+ */
7
+ export declare function isMacOS(): boolean;
2
8
  /**
3
9
  * Returns ag-grid props with localized texts.
4
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"useLocaleTextProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useLocaleTextProps.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAStD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK,WAAW,CAyBnF"}
1
+ {"version":3,"file":"useLocaleTextProps.d.ts","sourceRoot":"","sources":["../../../src/next/hooks/useLocaleTextProps.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,CAAC,gBAAgB,EAAE,WAAW,KAAK,WAAW,CAyBnF"}
@@ -1,11 +1,13 @@
1
- // (C) 2025 GoodData Corporation
1
+ // (C) 2025-2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
3
  import { useIntl } from "react-intl";
4
4
  import { messages } from "../../locales.js";
5
5
  /**
6
6
  * Detect if the user is on macOS for OS-specific keyboard shortcut instructions.
7
+ *
8
+ * @internal
7
9
  */
8
- function isMacOS() {
10
+ export function isMacOS() {
9
11
  return typeof navigator !== "undefined" && /Mac|iPhone|iPad|iPod/.test(navigator.userAgent);
10
12
  }
11
13
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-pivot",
3
- "version": "11.43.0",
3
+ "version": "11.44.0-alpha.1",
4
4
  "description": "GoodData.UI SDK - Pivot Table",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -42,12 +42,12 @@
42
42
  "ts-invariant": "0.10.3",
43
43
  "tslib": "2.8.1",
44
44
  "uuid": "11.1.1",
45
- "@gooddata/sdk-backend-spi": "11.43.0",
46
- "@gooddata/sdk-model": "11.43.0",
47
- "@gooddata/sdk-ui": "11.43.0",
48
- "@gooddata/sdk-ui-kit": "11.43.0",
49
- "@gooddata/sdk-ui-theme-provider": "11.43.0",
50
- "@gooddata/sdk-ui-vis-commons": "11.43.0"
45
+ "@gooddata/sdk-backend-spi": "11.44.0-alpha.1",
46
+ "@gooddata/sdk-ui-kit": "11.44.0-alpha.1",
47
+ "@gooddata/sdk-model": "11.44.0-alpha.1",
48
+ "@gooddata/sdk-ui": "11.44.0-alpha.1",
49
+ "@gooddata/sdk-ui-theme-provider": "11.44.0-alpha.1",
50
+ "@gooddata/sdk-ui-vis-commons": "11.44.0-alpha.1"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@microsoft/api-documenter": "^7.17.0",
@@ -89,12 +89,12 @@
89
89
  "typescript": "5.9.3",
90
90
  "vitest": "4.1.8",
91
91
  "vitest-dom": "0.1.1",
92
- "@gooddata/eslint-config": "11.43.0",
93
- "@gooddata/oxlint-config": "11.43.0",
94
- "@gooddata/reference-workspace": "11.43.0",
95
- "@gooddata/sdk-backend-mockingbird": "11.43.0",
96
- "@gooddata/sdk-backend-base": "11.43.0",
97
- "@gooddata/stylelint-config": "11.43.0"
92
+ "@gooddata/eslint-config": "11.44.0-alpha.1",
93
+ "@gooddata/oxlint-config": "11.44.0-alpha.1",
94
+ "@gooddata/reference-workspace": "11.44.0-alpha.1",
95
+ "@gooddata/sdk-backend-base": "11.44.0-alpha.1",
96
+ "@gooddata/sdk-backend-mockingbird": "11.44.0-alpha.1",
97
+ "@gooddata/stylelint-config": "11.44.0-alpha.1"
98
98
  },
99
99
  "peerDependencies": {
100
100
  "react": "^18.0.0 || ^19.0.0",