@gooddata/sdk-ui-pivot 11.44.0-alpha.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.
- package/esm/locales.d.ts.map +1 -1
- package/esm/locales.js +5 -1
- package/esm/next/components/Header/AttributeHeader.d.ts.map +1 -1
- package/esm/next/components/Header/AttributeHeader.js +12 -11
- package/esm/next/components/Header/HeaderKeyboardHint.d.ts +25 -0
- package/esm/next/components/Header/HeaderKeyboardHint.d.ts.map +1 -0
- package/esm/next/components/Header/HeaderKeyboardHint.js +63 -0
- package/esm/next/components/Header/MeasureGroupHeader.d.ts.map +1 -1
- package/esm/next/components/Header/MeasureGroupHeader.js +10 -9
- package/esm/next/components/Header/MeasureHeader.d.ts.map +1 -1
- package/esm/next/components/Header/MeasureHeader.js +11 -10
- package/esm/next/hooks/useLocaleTextProps.d.ts +6 -0
- package/esm/next/hooks/useLocaleTextProps.d.ts.map +1 -1
- package/esm/next/hooks/useLocaleTextProps.js +4 -2
- package/package.json +13 -13
package/esm/locales.d.ts.map
CHANGED
|
@@ -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,
|
|
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-
|
|
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;
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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;
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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;
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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;
|
|
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.44.0-alpha.
|
|
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.44.0-alpha.
|
|
46
|
-
"@gooddata/sdk-ui": "11.44.0-alpha.
|
|
47
|
-
"@gooddata/sdk-
|
|
48
|
-
"@gooddata/sdk-ui
|
|
49
|
-
"@gooddata/sdk-
|
|
50
|
-
"@gooddata/sdk-ui-vis-commons": "11.44.0-alpha.
|
|
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.44.0-alpha.
|
|
93
|
-
"@gooddata/oxlint-config": "11.44.0-alpha.
|
|
94
|
-
"@gooddata/reference-workspace": "11.44.0-alpha.
|
|
95
|
-
"@gooddata/sdk-backend-base": "11.44.0-alpha.
|
|
96
|
-
"@gooddata/sdk-backend-mockingbird": "11.44.0-alpha.
|
|
97
|
-
"@gooddata/stylelint-config": "11.44.0-alpha.
|
|
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",
|