@gooddata/sdk-ui-vis-commons 10.36.0 → 10.37.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.
- package/esm/compactSize/HeadlinePagination.d.ts +3 -3
- package/esm/compactSize/HeadlinePagination.d.ts.map +1 -1
- package/esm/compactSize/HeadlinePagination.js.map +1 -1
- package/esm/legend/ColorLegend.d.ts +3 -3
- package/esm/legend/ColorLegend.d.ts.map +1 -1
- package/esm/legend/ColorLegend.js.map +1 -1
- package/esm/legend/LegendItem.d.ts +1 -0
- package/esm/legend/LegendItem.d.ts.map +1 -1
- package/esm/legend/LegendItem.js +13 -3
- package/esm/legend/LegendItem.js.map +1 -1
- package/esm/legend/LegendList.d.ts +2 -2
- package/esm/legend/LegendList.d.ts.map +1 -1
- package/esm/legend/LegendList.js +14 -13
- package/esm/legend/LegendList.js.map +1 -1
- package/esm/legend/LegendSeries.d.ts.map +1 -1
- package/esm/legend/LegendSeries.js +78 -28
- package/esm/legend/LegendSeries.js.map +1 -1
- package/esm/legend/PopUpLegend/LegendDialog.d.ts.map +1 -1
- package/esm/legend/PopUpLegend/LegendDialog.js.map +1 -1
- package/esm/legend/PopUpLegend/PopUpLegend.d.ts +2 -2
- package/esm/legend/PopUpLegend/PopUpLegend.d.ts.map +1 -1
- package/esm/legend/PopUpLegend/PopUpLegend.js.map +1 -1
- package/esm/legend/StaticLegend.d.ts +2 -2
- package/esm/legend/StaticLegend.d.ts.map +1 -1
- package/esm/legend/StaticLegend.js.map +1 -1
- package/esm/legend/context.d.ts +20 -0
- package/esm/legend/context.d.ts.map +1 -1
- package/esm/legend/context.js +16 -0
- package/esm/legend/context.js.map +1 -1
- package/esm/legend/visibilityDetection.d.ts +27 -0
- package/esm/legend/visibilityDetection.d.ts.map +1 -0
- package/esm/legend/visibilityDetection.js +95 -0
- package/esm/legend/visibilityDetection.js.map +1 -0
- package/esm/sdk-ui-vis-commons.d.ts +5 -4
- package/package.json +8 -8
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { ReactElement } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* @internal
|
|
4
4
|
*/
|
|
5
5
|
export interface IHeadlinePaginationProps {
|
|
6
|
-
renderSecondaryItem: () =>
|
|
7
|
-
renderTertiaryItem: () =>
|
|
6
|
+
renderSecondaryItem: () => ReactElement;
|
|
7
|
+
renderTertiaryItem: () => ReactElement;
|
|
8
8
|
accessibilityConfig?: {
|
|
9
9
|
nextAriaLabel?: string;
|
|
10
10
|
previousAriaLabel?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadlinePagination.d.ts","sourceRoot":"","sources":["../../src/compactSize/HeadlinePagination.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"HeadlinePagination.d.ts","sourceRoot":"","sources":["../../src/compactSize/HeadlinePagination.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAY,MAAM,OAAO,CAAC;AAItD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC,mBAAmB,EAAE,MAAM,YAAY,CAAC;IACxC,kBAAkB,EAAE,MAAM,YAAY,CAAC;IACvC,mBAAmB,CAAC,EAAE;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;CACL;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA2BjE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadlinePagination.js","sourceRoot":"","sources":["../../src/compactSize/HeadlinePagination.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"HeadlinePagination.js","sourceRoot":"","sources":["../../src/compactSize/HeadlinePagination.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAgB,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAc7E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAuC,CAAC,EACnE,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACtB,EAAE,EAAE;IACD,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,mBAAmB,IAAI,EAAE,CAAC;IACvE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAE5C,MAAM,YAAY,GAAG,GAAS,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAG,GAAS,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAEnD,OAAO,CACH;QACI,oBAAC,0BAA0B,IACvB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE;gBACjB,aAAa;gBACb,iBAAiB;aACpB,GACH;QACD,IAAI,KAAK,CAAC,IAAI,mBAAmB,EAAE;QACnC,IAAI,KAAK,CAAC,IAAI,kBAAkB,EAAE,CACpC,CACN,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { ReactElement } from "react";
|
|
2
2
|
import { IColorLegendBox, IHeatmapLegendLabel as IColorLegendLabel } from "./helpers.js";
|
|
3
3
|
import { IColorLegendItem, IColorLegendSize } from "./types.js";
|
|
4
4
|
import { ITheme } from "@gooddata/sdk-model";
|
|
@@ -20,8 +20,8 @@ interface IColorLabelsProps {
|
|
|
20
20
|
interface IColorBoxesProps {
|
|
21
21
|
boxes: IColorLegendBox[];
|
|
22
22
|
}
|
|
23
|
-
export declare function ColorLabels(colorLabelProps: IColorLabelsProps):
|
|
24
|
-
export declare function ColorBoxes(colorBoxProps: IColorBoxesProps):
|
|
23
|
+
export declare function ColorLabels(colorLabelProps: IColorLabelsProps): ReactElement;
|
|
24
|
+
export declare function ColorBoxes(colorBoxProps: IColorBoxesProps): ReactElement;
|
|
25
25
|
/**
|
|
26
26
|
* @internal
|
|
27
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorLegend.d.ts","sourceRoot":"","sources":["../../src/legend/ColorLegend.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ColorLegend.d.ts","sourceRoot":"","sources":["../../src/legend/ColorLegend.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACH,eAAe,EAEf,mBAAmB,IAAI,iBAAiB,EAE3C,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,iBAAiB;IACvB,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,UAAU,gBAAgB;IACtB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC5B;AAQD,wBAAgB,WAAW,CAAC,eAAe,EAAE,iBAAiB,GAAG,YAAY,CAc5E;AAED,wBAAgB,UAAU,CAAC,aAAa,EAAE,gBAAgB,GAAG,YAAY,CAWxE;AA4BD;;GAEG;AACH,eAAO,MAAM,WAAW,0FA6BtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorLegend.js","sourceRoot":"","sources":["../../src/legend/ColorLegend.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"ColorLegend.js","sourceRoot":"","sources":["../../src/legend/ColorLegend.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAIH,2BAA2B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AA6B5D,MAAM,UAAU,WAAW,CAAC,eAAkC;IAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC;IACnC,OAAO,CACH,6BAAK,SAAS,EAAC,QAAQ,iBAAa,qBAAqB,IACpD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAuB,EAAgB,EAAE;QAClD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACnC,OAAO,CACH,8BAAM,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,IACvB,KAAK,CACH,CACV,CAAC;IACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,aAA+B;IACtD,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC;IAChC,OAAO,CACH,6BAAK,SAAS,EAAC,OAAO,iBAAa,oBAAoB,IAClD,KAAK,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAgB,EAAE;QAC9C,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QAC3B,OAAO,8BAAM,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;IAChE,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAqB;IACxE,OAAO,CACH;QACK,iBAAiB,CAAC,CAAC,CAAC,oBAAC,WAAW,IAAC,MAAM,EAAE,MAAM,GAAI,CAAC,CAAC,CAAC,IAAI;QAC3D,oBAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI;QAC3B,CAAC,iBAAiB,IAAI,oBAAC,WAAW,IAAC,MAAM,EAAE,MAAM,GAAI,CACvD,CACN,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,KAIxB;IACG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC5C,MAAM,YAAY,GAAG,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,MAAM,CAAC;IAC7D,MAAM,OAAO,GAAG,EAAE,CAAC,2BAA2B,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9E,OAAO,CACH,6BAAK,SAAS,EAAE,OAAO;QACnB,6BAAK,SAAS,EAAC,sBAAsB,IAAE,GAAG,KAAK,GAAG,CAAO;QACzD,6BAAK,SAAS,EAAC,sBAAsB,IAAE,QAAQ,CAAO,CACpD,CACT,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,gBAAmC,EAAE,EAAE;IACzE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAC;IAClG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAuB,2BAA2B,CAC1D,IAAI,EACJ,MAAM,EACN,cAAc,EACd,IAAI,EACJ,QAAQ,EACR,KAAK,CACR,CAAC;IACF,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC;IAClD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAEjC,OAAO,CACH,6BAAK,SAAS,EAAE,OAAO,iBAAc,cAAc,IAC9C,KAAK,CAAC,CAAC,CAAC,CACL,oBAAC,eAAe,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;QAC7C,oBAAC,WAAW,IAAC,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CACrE,CACrB,CAAC,CAAC,CAAC,CACA,oBAAC,WAAW,IAAC,iBAAiB,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CACtF,CACC,CACT,CAAC;AACN,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendItem.d.ts","sourceRoot":"","sources":["../../src/legend/LegendItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzC,UAAU,gBAAgB;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;;
|
|
1
|
+
{"version":3,"file":"LegendItem.d.ts","sourceRoot":"","sources":["../../src/legend/LegendItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzC,UAAU,gBAAgB;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;;AA0ED,wBAAqC"}
|
package/esm/legend/LegendItem.js
CHANGED
|
@@ -4,14 +4,15 @@ import unescape from "lodash/unescape.js";
|
|
|
4
4
|
import { withTheme } from "@gooddata/sdk-ui-theme-provider";
|
|
5
5
|
import { useIdPrefixed } from "@gooddata/sdk-ui-kit";
|
|
6
6
|
import cx from "classnames";
|
|
7
|
-
import { LegendSeriesContextStore } from "./context.js";
|
|
7
|
+
import { LegendSeriesContextStore, useItemVisibility } from "./context.js";
|
|
8
8
|
const DEFAULT_DISABLED_COLOR = "#CCCCCC";
|
|
9
|
-
const LegendItem = ({ item, width, enableBorderRadius = false, onItemClick, theme, }) => {
|
|
9
|
+
const LegendItem = ({ item, index, width, enableBorderRadius = false, onItemClick, theme, }) => {
|
|
10
10
|
const { descriptionId, isFocused, id } = LegendSeriesContextStore.useContextStore((ctx) => ({
|
|
11
11
|
descriptionId: ctx.descriptionId,
|
|
12
12
|
isFocused: ctx.focusedItem === item,
|
|
13
13
|
id: ctx.makeItemId(item),
|
|
14
14
|
}));
|
|
15
|
+
const { registerItem } = useItemVisibility();
|
|
15
16
|
const disabledColor = theme?.palette?.complementary?.c5 ?? DEFAULT_DISABLED_COLOR;
|
|
16
17
|
const iconStyle = {
|
|
17
18
|
borderRadius: enableBorderRadius ? "50%" : "0",
|
|
@@ -27,8 +28,17 @@ const LegendItem = ({ item, width, enableBorderRadius = false, onItemClick, them
|
|
|
27
28
|
const handleItemClick = () => {
|
|
28
29
|
return onItemClick(item);
|
|
29
30
|
};
|
|
31
|
+
const refCallback = React.useCallback((element) => {
|
|
32
|
+
if (element) {
|
|
33
|
+
registerItem(index, element);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// Element is unmounted, unregister it
|
|
37
|
+
registerItem(index, null);
|
|
38
|
+
}
|
|
39
|
+
}, [index, registerItem]);
|
|
30
40
|
const legendItemId = useIdPrefixed("legend-item");
|
|
31
|
-
return (React.createElement("button", { "data-testid": "legend-item", role: "switch", "aria-describedby": descriptionId, "aria-checked": item.isVisible, id: id, style: style, className: cx("series-item", { "series-item--isFocused": isFocused }), onClick: handleItemClick, "aria-labelledby": legendItemId, title: unescape(item.name), tabIndex: -1 },
|
|
41
|
+
return (React.createElement("button", { ref: refCallback, "data-testid": "legend-item", role: "switch", "aria-describedby": descriptionId, "aria-checked": item.isVisible, id: id, style: style, className: cx("series-item", { "series-item--isFocused": isFocused }), onClick: handleItemClick, "aria-labelledby": legendItemId, title: unescape(item.name), tabIndex: -1 },
|
|
32
42
|
React.createElement("div", { className: "series-icon", style: iconStyle }),
|
|
33
43
|
React.createElement("div", { id: legendItemId, className: "series-name", style: nameStyle }, item.name)));
|
|
34
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendItem.js","sourceRoot":"","sources":["../../src/legend/LegendItem.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"LegendItem.js","sourceRoot":"","sources":["../../src/legend/LegendItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { ReactElement } from "react";
|
|
2
2
|
import { ISeriesItem, ItemBorderRadiusPredicate } from "./types.js";
|
|
3
3
|
export interface ILegendListProps {
|
|
4
4
|
series: ISeriesItem[];
|
|
@@ -6,6 +6,6 @@ export interface ILegendListProps {
|
|
|
6
6
|
width?: number;
|
|
7
7
|
onItemClick: (item: ISeriesItem) => void;
|
|
8
8
|
}
|
|
9
|
-
export declare const LegendSeparator: () =>
|
|
9
|
+
export declare const LegendSeparator: () => ReactElement;
|
|
10
10
|
export declare const LegendList: React.NamedExoticComponent<ILegendListProps>;
|
|
11
11
|
//# sourceMappingURL=LegendList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendList.d.ts","sourceRoot":"","sources":["../../src/legend/LegendList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LegendList.d.ts","sourceRoot":"","sources":["../../src/legend/LegendList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI5C,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,eAAe,QAAO,YAElC,CAAC;AAoCF,eAAO,MAAM,UAAU,8CAgBrB,CAAC"}
|
package/esm/legend/LegendList.js
CHANGED
|
@@ -4,20 +4,21 @@ import LegendItem from "./LegendItem.js";
|
|
|
4
4
|
import { LegendAxisIndicator } from "./LegendAxisIndicator.js";
|
|
5
5
|
import { LEGEND_AXIS_INDICATOR, LEGEND_SEPARATOR } from "./helpers.js";
|
|
6
6
|
export const LegendSeparator = () => (React.createElement("div", { className: "legend-separator", "aria-label": "Legend separator" }));
|
|
7
|
+
const LegendListItem = React.memo(function LegendListItem({ index, item, enableBorderRadius, width, onItemClick, }) {
|
|
8
|
+
const { type, labelKey, data } = item;
|
|
9
|
+
const borderRadius = shouldItemHaveBorderRadius(item, enableBorderRadius);
|
|
10
|
+
if (type === LEGEND_AXIS_INDICATOR) {
|
|
11
|
+
return React.createElement(LegendAxisIndicator, { key: index, labelKey: labelKey, data: data, width: width });
|
|
12
|
+
}
|
|
13
|
+
else if (type === LEGEND_SEPARATOR) {
|
|
14
|
+
return React.createElement(LegendSeparator, { key: index });
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return (React.createElement(LegendItem, { key: index, index: index, enableBorderRadius: borderRadius, item: item, width: width, onItemClick: onItemClick }));
|
|
18
|
+
}
|
|
19
|
+
});
|
|
7
20
|
export const LegendList = React.memo(function LegendList({ series, enableBorderRadius, onItemClick, width, }) {
|
|
8
|
-
return series.map((item, index) => {
|
|
9
|
-
const { type, labelKey, data } = item;
|
|
10
|
-
const borderRadius = shouldItemHaveBorderRadius(item, enableBorderRadius);
|
|
11
|
-
if (type === LEGEND_AXIS_INDICATOR) {
|
|
12
|
-
return React.createElement(LegendAxisIndicator, { key: index, labelKey: labelKey, data: data, width: width });
|
|
13
|
-
}
|
|
14
|
-
else if (type === LEGEND_SEPARATOR) {
|
|
15
|
-
return React.createElement(LegendSeparator, { key: index });
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
return (React.createElement(LegendItem, { key: index, enableBorderRadius: borderRadius, item: item, width: width, onItemClick: onItemClick }));
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
+
return series.map((item, index) => (React.createElement(LegendListItem, { key: index, index: index, item: item, enableBorderRadius: enableBorderRadius, width: width, onItemClick: onItemClick })));
|
|
21
22
|
});
|
|
22
23
|
function shouldItemHaveBorderRadius(item, enableBorderRadius = false) {
|
|
23
24
|
if (typeof enableBorderRadius === "function") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendList.js","sourceRoot":"","sources":["../../src/legend/LegendList.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"LegendList.js","sourceRoot":"","sources":["../../src/legend/LegendList.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAUvE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAiB,EAAE,CAAC,CAC/C,6BAAK,SAAS,EAAC,kBAAkB,gBAAY,kBAAkB,GAAG,CACrE,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,cAAc,CAAC,EACtD,KAAK,EACL,IAAI,EACJ,kBAAkB,EAClB,KAAK,EACL,WAAW,GAOd;IACG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtC,MAAM,YAAY,GAAG,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAE1E,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACjC,OAAO,oBAAC,mBAAmB,IAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;IAC7F,CAAC;SAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,oBAAC,eAAe,IAAC,GAAG,EAAE,KAAK,GAAI,CAAC;IAC3C,CAAC;SAAM,CAAC;QACJ,OAAO,CACH,oBAAC,UAAU,IACP,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,YAAY,EAChC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,GAC1B,CACL,CAAC;IACN,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,EACrD,MAAM,EACN,kBAAkB,EAClB,WAAW,EACX,KAAK,GACU;IACf,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC/B,oBAAC,cAAc,IACX,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,kBAAkB,EAAE,kBAAkB,EACtC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,GAC1B,CACL,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,SAAS,0BAA0B,CAC/B,IAAS,EACT,qBAA0D,KAAK;IAE/D,IAAI,OAAO,kBAAkB,KAAK,UAAU,EAAE,CAAC;QAC3C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendSeries.d.ts","sourceRoot":"","sources":["../../src/legend/LegendSeries.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"LegendSeries.d.ts","sourceRoot":"","sources":["../../src/legend/LegendSeries.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AASzC,UAAU,kBAAkB;IACxB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,YAAY,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,YAAY,wFAqGvB,CAAC"}
|
|
@@ -4,63 +4,113 @@ import cx from "classnames";
|
|
|
4
4
|
import { FormattedMessage, useIntl } from "react-intl";
|
|
5
5
|
import { makeLinearKeyboardNavigation, useIdPrefixed } from "@gooddata/sdk-ui-kit";
|
|
6
6
|
import { useAutoupdateRef } from "@gooddata/sdk-ui";
|
|
7
|
-
import { LegendSeriesContextStore, useLegendSeriesContextValue } from "./context.js";
|
|
7
|
+
import { LegendSeriesContextStore, useLegendSeriesContextValue, VisibilityContext } from "./context.js";
|
|
8
|
+
import { useVisibilityDetection } from "./visibilityDetection.js";
|
|
9
|
+
import { LEGEND_AXIS_INDICATOR, LEGEND_SEPARATOR } from "./helpers.js";
|
|
8
10
|
export const LegendSeries = React.forwardRef(function LegendSeries({ series, label, style, children, onToggleItem, className }, ref) {
|
|
9
11
|
const { formatMessage } = useIntl();
|
|
10
12
|
const focusableSeriesItems = React.useMemo(() => {
|
|
11
|
-
return series.filter((item) => item.type !==
|
|
13
|
+
return series.filter((item) => item.type !== LEGEND_AXIS_INDICATOR && item.type !== LEGEND_SEPARATOR);
|
|
12
14
|
}, [series]);
|
|
13
15
|
const [focusedIndex, setFocusedIndex] = React.useState(0);
|
|
14
16
|
const id = useIdPrefixed("LegendSeries");
|
|
15
17
|
React.useEffect(() => {
|
|
16
18
|
setFocusedIndex(0);
|
|
17
19
|
}, [focusableSeriesItems.length]);
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
+
const legendContextValue = useLegendSeriesContextValue({
|
|
21
|
+
series: focusableSeriesItems,
|
|
22
|
+
id,
|
|
23
|
+
focusedIndex,
|
|
24
|
+
});
|
|
25
|
+
const { makeItemId, descriptionId } = legendContextValue;
|
|
26
|
+
// Initialize visibility detection for legend items
|
|
27
|
+
const { viewportRefCallback, contextValue: visibilityContextValue } = useVisibilityDetection();
|
|
20
28
|
const keyDownDepsRef = useAutoupdateRef({
|
|
21
29
|
focusedIndex,
|
|
22
30
|
onToggleItem,
|
|
23
31
|
focusableSeries: focusableSeriesItems,
|
|
32
|
+
visibilityContext: visibilityContextValue,
|
|
24
33
|
});
|
|
25
34
|
const handleKeyDown = React.useMemo(() => makeLinearKeyboardNavigation({
|
|
26
35
|
onFocusNext: () => {
|
|
27
36
|
const { focusableSeries } = keyDownDepsRef.current;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (nextIndex >= focusableSeries.length) {
|
|
31
|
-
return 0;
|
|
32
|
-
}
|
|
33
|
-
return nextIndex;
|
|
34
|
-
});
|
|
37
|
+
const isVisible = visibilityContextValue.isVisible;
|
|
38
|
+
setFocusedIndex((prevIndex) => findNextVisible(prevIndex, focusableSeries.length, isVisible));
|
|
35
39
|
},
|
|
36
40
|
onFocusPrevious: () => {
|
|
37
41
|
const { focusableSeries } = keyDownDepsRef.current;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (nextIndex < 0) {
|
|
41
|
-
return focusableSeries.length - 1;
|
|
42
|
-
}
|
|
43
|
-
return nextIndex;
|
|
44
|
-
});
|
|
42
|
+
const isVisible = visibilityContextValue.isVisible;
|
|
43
|
+
setFocusedIndex((prevIndex) => findPreviousVisible(prevIndex, focusableSeries.length, isVisible));
|
|
45
44
|
},
|
|
46
45
|
onFocusFirst: () => {
|
|
47
|
-
|
|
46
|
+
const { focusableSeries } = keyDownDepsRef.current;
|
|
47
|
+
const isVisible = visibilityContextValue.isVisible;
|
|
48
|
+
setFocusedIndex(findFirstVisible(focusableSeries.length, isVisible));
|
|
48
49
|
},
|
|
49
50
|
onFocusLast: () => {
|
|
50
51
|
const { focusableSeries } = keyDownDepsRef.current;
|
|
51
|
-
|
|
52
|
+
const isVisible = visibilityContextValue.isVisible;
|
|
53
|
+
setFocusedIndex(findLastVisible(focusableSeries.length, isVisible));
|
|
52
54
|
},
|
|
53
55
|
onSelect: () => {
|
|
54
56
|
const { onToggleItem, focusedIndex, focusableSeries } = keyDownDepsRef.current;
|
|
55
57
|
onToggleItem(focusableSeries[focusedIndex]);
|
|
56
58
|
},
|
|
57
|
-
}), [keyDownDepsRef]);
|
|
58
|
-
return (React.createElement(LegendSeriesContextStore, { value:
|
|
59
|
-
React.createElement(
|
|
60
|
-
React.createElement("div", { className: "series legend-series", role: "
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
React.createElement(
|
|
59
|
+
}), [keyDownDepsRef, visibilityContextValue]);
|
|
60
|
+
return (React.createElement(LegendSeriesContextStore, { value: legendContextValue },
|
|
61
|
+
React.createElement(VisibilityContext.Provider, { value: visibilityContextValue },
|
|
62
|
+
React.createElement("div", { className: cx("series-wrapper legend-series-wrapper", className), role: "group", "aria-activedescendant": makeItemId(focusableSeriesItems[focusedIndex]), tabIndex: 0, onKeyDown: handleKeyDown, ref: viewportRefCallback },
|
|
63
|
+
React.createElement("div", { className: "series legend-series", role: "list", "aria-label": label
|
|
64
|
+
? formatMessage({ id: "properties.legend.series.named" }, { name: label })
|
|
65
|
+
: formatMessage({ id: "properties.legend.series.unnamed" }), style: style, ref: ref }, children),
|
|
66
|
+
React.createElement("p", { id: descriptionId, className: "sr-only", role: "presentation" },
|
|
67
|
+
React.createElement(FormattedMessage, { id: "properties.legend.series.item.description" }))))));
|
|
65
68
|
});
|
|
69
|
+
// Helper functions for finding visible items
|
|
70
|
+
const findFirstVisible = (seriesLength, isVisible) => {
|
|
71
|
+
for (let i = 0; i < seriesLength; i++) {
|
|
72
|
+
if (isVisible(i)) {
|
|
73
|
+
return i;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return 0;
|
|
77
|
+
};
|
|
78
|
+
const findLastVisible = (seriesLength, isVisible) => {
|
|
79
|
+
for (let i = seriesLength - 1; i >= 0; i--) {
|
|
80
|
+
if (isVisible(i)) {
|
|
81
|
+
return i;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return seriesLength - 1;
|
|
85
|
+
};
|
|
86
|
+
const findNextVisible = (currentIndex, seriesLength, isVisible) => {
|
|
87
|
+
let nextIndex = currentIndex + 1;
|
|
88
|
+
let attempts = 0;
|
|
89
|
+
while (attempts < seriesLength) {
|
|
90
|
+
if (nextIndex >= seriesLength) {
|
|
91
|
+
nextIndex = 0;
|
|
92
|
+
}
|
|
93
|
+
if (isVisible(nextIndex)) {
|
|
94
|
+
return nextIndex;
|
|
95
|
+
}
|
|
96
|
+
nextIndex++;
|
|
97
|
+
attempts++;
|
|
98
|
+
}
|
|
99
|
+
return currentIndex;
|
|
100
|
+
};
|
|
101
|
+
const findPreviousVisible = (currentIndex, seriesLength, isVisible) => {
|
|
102
|
+
let prevIndex = currentIndex - 1;
|
|
103
|
+
let attempts = 0;
|
|
104
|
+
while (attempts < seriesLength) {
|
|
105
|
+
if (prevIndex < 0) {
|
|
106
|
+
prevIndex = seriesLength - 1;
|
|
107
|
+
}
|
|
108
|
+
if (isVisible(prevIndex)) {
|
|
109
|
+
return prevIndex;
|
|
110
|
+
}
|
|
111
|
+
prevIndex--;
|
|
112
|
+
attempts++;
|
|
113
|
+
}
|
|
114
|
+
return currentIndex;
|
|
115
|
+
};
|
|
66
116
|
//# sourceMappingURL=LegendSeries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendSeries.js","sourceRoot":"","sources":["../../src/legend/LegendSeries.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAEhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"LegendSeries.js","sourceRoot":"","sources":["../../src/legend/LegendSeries.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDialog.d.ts","sourceRoot":"","sources":["../../../src/legend/PopUpLegend/LegendDialog.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"LegendDialog.d.ts","sourceRoot":"","sources":["../../../src/legend/PopUpLegend/LegendDialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAuB,MAAM,OAAO,CAAC;AAuF5C,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAiCrD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LegendDialog.js","sourceRoot":"","sources":["../../../src/legend/PopUpLegend/LegendDialog.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"LegendDialog.js","sourceRoot":"","sources":["../../../src/legend/PopUpLegend/LegendDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { ReactElement } from "react";
|
|
2
2
|
import { ISeriesItem, ItemBorderRadiusPredicate } from "../types.js";
|
|
3
3
|
/**
|
|
4
4
|
* @internal
|
|
@@ -10,7 +10,7 @@ export interface IPopUpLegendProps {
|
|
|
10
10
|
maxRows?: number;
|
|
11
11
|
enableBorderRadius?: boolean | ItemBorderRadiusPredicate;
|
|
12
12
|
containerId: string;
|
|
13
|
-
customComponent?:
|
|
13
|
+
customComponent?: ReactElement | null;
|
|
14
14
|
customComponentName?: string;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopUpLegend.d.ts","sourceRoot":"","sources":["../../../src/legend/PopUpLegend/PopUpLegend.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"PopUpLegend.d.ts","sourceRoot":"","sources":["../../../src/legend/PopUpLegend/PopUpLegend.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAY,MAAM,OAAO,CAAC;AAItD,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAQrE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACzD,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoEnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopUpLegend.js","sourceRoot":"","sources":["../../../src/legend/PopUpLegend/PopUpLegend.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"PopUpLegend.js","sourceRoot":"","sources":["../../../src/legend/PopUpLegend/PopUpLegend.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAgB,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAiB7B;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgC,CAAC,KAAK,EAAE,EAAE;IAC9D,MAAM,EACF,IAAI,EACJ,OAAO,EACP,kBAAkB,EAClB,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,eAAe,EACf,mBAAmB,GACtB,GAAG,KAAK,CAAC;IACV,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEpC,MAAM,WAAW,GACb,CAAC,IAAI,KAAK,CAAC,IAAI,mBAAmB,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAEzG,MAAM,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,EAAE,SAAS,CAAC;IAChC,MAAM,SAAS,GAAG,GAAG,EAAE,UAAU,CAAC;IAElC,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACzC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC,CAAC,CAAC;QACX,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACH,4CAAiB,eAAe;QAC5B,oBAAC,SAAS,IACN,WAAW,EAAE,IAAI,EACjB,YAAY,EAAE,OAAO,EACrB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,EACnB,iBAAiB,EAAE,GAAG,EAAE;gBACpB,aAAa,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC,EACD,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,GACtB;QAEF,oBAAC,YAAY,IACT,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,IAAI,WAAW,EAAE,EAC1B,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,aAAa,EAC5B,EAAE,EAAE,QAAQ;YAEZ,oBAAC,YAAY,IACT,eAAe,EAAE,GAAG,EACpB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,EACnB,KAAK,EAAE,IAAI,EACX,cAAc,EAAE,KAAK,EACrB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,WAAW,EAC9B,WAAW,EAAE,iBAAiB,EAC9B,wBAAwB,EAAE,KAAK,EAC/B,kBAAkB,EAAE,kBAAkB,EACtC,gBAAgB,EAAE,iBAAiB,EACnC,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,OAAO,GACxB,CACS,CACb,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { ReactElement } from "react";
|
|
2
2
|
import { ButtonsOrientationType } from "./Paging.js";
|
|
3
3
|
import { ISeriesItem, ItemBorderRadiusPredicate } from "./types.js";
|
|
4
4
|
/**
|
|
@@ -13,7 +13,7 @@ export interface IStaticLegendProps {
|
|
|
13
13
|
label?: string;
|
|
14
14
|
buttonOrientation?: ButtonsOrientationType;
|
|
15
15
|
paginationHeight?: number;
|
|
16
|
-
customComponent?:
|
|
16
|
+
customComponent?: ReactElement | null;
|
|
17
17
|
isLabelVisible?: boolean;
|
|
18
18
|
onItemClick?(item: ISeriesItem): void;
|
|
19
19
|
onPageChanged?: (page: number) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticLegend.d.ts","sourceRoot":"","sources":["../../src/legend/StaticLegend.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"StaticLegend.d.ts","sourceRoot":"","sources":["../../src/legend/StaticLegend.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI5C,OAAO,EAAE,sBAAsB,EAAU,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAIpE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACzD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,gDAmHvB,CAAC;AAOH,eAAO,MAAM,eAAe,GACxB,MAAM,MAAM,EACZ,mBAAmB,MAAM,EACzB,cAAc,MAAM,EACpB,oBAAoB,OAAO,KAC5B,CAAC,MAAM,EAAE,MAAM,CAMjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticLegend.js","sourceRoot":"","sources":["../../src/legend/StaticLegend.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"StaticLegend.js","sourceRoot":"","sources":["../../src/legend/StaticLegend.tsx"],"names":[],"mappings":"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"}
|
package/esm/legend/context.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ISeriesItem } from "./types.js";
|
|
2
|
+
import React from "react";
|
|
2
3
|
export declare const useLegendSeriesContextValue: ({ series, focusedIndex, id, }: {
|
|
3
4
|
series: ISeriesItem[];
|
|
4
5
|
focusedIndex: number;
|
|
@@ -13,4 +14,23 @@ export declare const LegendSeriesContextStore: import("@gooddata/sdk-ui").IConte
|
|
|
13
14
|
makeItemId: (item?: ISeriesItem) => string | undefined;
|
|
14
15
|
descriptionId: string;
|
|
15
16
|
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Context for tracking visibility of legend items
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
export interface IVisibilityContext {
|
|
22
|
+
registerItem: (index: number, element: HTMLElement | null) => void;
|
|
23
|
+
isVisible: (index: number) => boolean;
|
|
24
|
+
visibleItems: Set<number>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* React context for visibility detection
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
export declare const VisibilityContext: React.Context<IVisibilityContext | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Hook for child components to use visibility detection
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare const useItemVisibility: () => IVisibilityContext;
|
|
16
36
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/legend/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/legend/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,eAAO,MAAM,2BAA2B,GAAI,+BAIzC;IACC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;CACd;;wBAIe,WAAW;;CAY1B,CAAC;AAEF,eAAO,MAAM,wBAAwB;;wBAdrB,WAAW;;EAe2D,CAAC;AAEvF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACnE,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,0CAAuD,CAAC;AAEtF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,0BAM7B,CAAC"}
|
package/esm/legend/context.js
CHANGED
|
@@ -11,4 +11,20 @@ export const useLegendSeriesContextValue = ({ series, focusedIndex, id, }) => {
|
|
|
11
11
|
}), [descriptionId, focusedIndex, makeItemId, series]);
|
|
12
12
|
};
|
|
13
13
|
export const LegendSeriesContextStore = createContextStore("LegendSeries");
|
|
14
|
+
/**
|
|
15
|
+
* React context for visibility detection
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export const VisibilityContext = React.createContext(null);
|
|
19
|
+
/**
|
|
20
|
+
* Hook for child components to use visibility detection
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export const useItemVisibility = () => {
|
|
24
|
+
const context = React.useContext(VisibilityContext);
|
|
25
|
+
if (!context) {
|
|
26
|
+
throw new Error("useItemVisibility must be used within a VisibilityProvider");
|
|
27
|
+
}
|
|
28
|
+
return context;
|
|
29
|
+
};
|
|
14
30
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/legend/context.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EACxC,MAAM,EACN,YAAY,EACZ,EAAE,GAKL,EAAE,EAAE;IACD,MAAM,aAAa,GAAG,GAAG,EAAE,cAAc,CAAC;IAE1C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAC/D,CAAC,EAAE,EAAE,MAAM,CAAC,CACf,CAAC;IAEF,OAAO,KAAK,CAAC,OAAO,CAChB,GAAG,EAAE,CAAC,CAAC;QACH,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC;QACjC,UAAU;QACV,aAAa;KAChB,CAAC,EACF,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CACpD,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GACjC,kBAAkB,CAAiD,cAAc,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/legend/context.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAGhC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EACxC,MAAM,EACN,YAAY,EACZ,EAAE,GAKL,EAAE,EAAE;IACD,MAAM,aAAa,GAAG,GAAG,EAAE,cAAc,CAAC;IAE1C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAC/D,CAAC,EAAE,EAAE,MAAM,CAAC,CACf,CAAC;IAEF,OAAO,KAAK,CAAC,OAAO,CAChB,GAAG,EAAE,CAAC,CAAC;QACH,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC;QACjC,UAAU;QACV,aAAa;KAChB,CAAC,EACF,CAAC,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,CACpD,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GACjC,kBAAkB,CAAiD,cAAc,CAAC,CAAC;AAYvF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAA4B,IAAI,CAAC,CAAC;AAEtF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { IVisibilityContext } from "./context.js";
|
|
2
|
+
/**
|
|
3
|
+
* Options for configuring the visibility detection behavior
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export interface IUseVisibilityDetectionOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Threshold for intersection observer (0-1)
|
|
9
|
+
* @defaultValue 0.1
|
|
10
|
+
*/
|
|
11
|
+
threshold?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Root margin for intersection observer
|
|
14
|
+
* @defaultValue "0px"
|
|
15
|
+
*/
|
|
16
|
+
rootMargin?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Hook for setting up visibility detection using IntersectionObserver
|
|
20
|
+
* Tracks which items are visible within a container
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export declare const useVisibilityDetection: (options?: IUseVisibilityDetectionOptions) => {
|
|
24
|
+
viewportRefCallback: (element: HTMLDivElement | null) => void;
|
|
25
|
+
contextValue: IVisibilityContext;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=visibilityDetection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibilityDetection.d.ts","sourceRoot":"","sources":["../../src/legend/visibilityDetection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC3C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,UAAS,8BAAmC;mCAW7B,cAAc,GAAG,IAAI;;CA2F1E,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// (C) 2007-2025 GoodData Corporation
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
3
|
+
import { useIdPrefixed } from "@gooddata/sdk-ui-kit";
|
|
4
|
+
/**
|
|
5
|
+
* Hook for setting up visibility detection using IntersectionObserver
|
|
6
|
+
* Tracks which items are visible within a container
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export const useVisibilityDetection = (options = {}) => {
|
|
10
|
+
const { threshold = 0.1, rootMargin = "0px" } = options;
|
|
11
|
+
const [visibleItems, setVisibleItems] = useState(new Set());
|
|
12
|
+
const [viewportElement, setViewportElement] = useState(null);
|
|
13
|
+
const observerRef = useRef(null);
|
|
14
|
+
const registrationQueueRef = useRef([]);
|
|
15
|
+
// Generate a unique prefix for this observer instance to avoid conflicts
|
|
16
|
+
const instanceId = useIdPrefixed("legend-visibility-detection");
|
|
17
|
+
// Ref callback for viewport element
|
|
18
|
+
const viewportRefCallback = useCallback((element) => {
|
|
19
|
+
setViewportElement(element);
|
|
20
|
+
}, []);
|
|
21
|
+
const handleItem = useCallback((index, element, observer) => {
|
|
22
|
+
if (!observer) {
|
|
23
|
+
registrationQueueRef.current.push({ index, element });
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const dataAttribute = `data-${instanceId}-index`;
|
|
27
|
+
if (element) {
|
|
28
|
+
element.setAttribute(dataAttribute, index.toString());
|
|
29
|
+
observer.observe(element);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const existingElement = document.querySelector(`[${dataAttribute}="${index}"]`);
|
|
33
|
+
if (existingElement) {
|
|
34
|
+
observer.unobserve(existingElement);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}, [instanceId]);
|
|
38
|
+
// Create observer when viewport element is available
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
// Clean up previous observer if it exists and options or element change
|
|
41
|
+
if (observerRef.current) {
|
|
42
|
+
observerRef.current.disconnect();
|
|
43
|
+
observerRef.current = null;
|
|
44
|
+
}
|
|
45
|
+
if (!viewportElement) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
observerRef.current = new IntersectionObserver((entries) => {
|
|
49
|
+
setVisibleItems((prev) => {
|
|
50
|
+
const newVisible = new Set(prev);
|
|
51
|
+
entries.forEach((entry) => {
|
|
52
|
+
const dataAttribute = `data-${instanceId}-index`;
|
|
53
|
+
const index = parseInt(entry.target.getAttribute(dataAttribute) || "0");
|
|
54
|
+
if (entry.isIntersecting) {
|
|
55
|
+
newVisible.add(index);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
newVisible.delete(index);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return newVisible;
|
|
62
|
+
});
|
|
63
|
+
}, {
|
|
64
|
+
root: viewportElement,
|
|
65
|
+
rootMargin,
|
|
66
|
+
threshold,
|
|
67
|
+
});
|
|
68
|
+
// Process any queued registrations now that observer is ready
|
|
69
|
+
if (registrationQueueRef.current.length > 0) {
|
|
70
|
+
registrationQueueRef.current.forEach(({ index, element }) => {
|
|
71
|
+
handleItem(index, element, observerRef.current);
|
|
72
|
+
});
|
|
73
|
+
registrationQueueRef.current = [];
|
|
74
|
+
}
|
|
75
|
+
}, [viewportElement, threshold, rootMargin, handleItem, instanceId]); // Re-create observer if options or element change
|
|
76
|
+
// Cleanup on unmount
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
return () => {
|
|
79
|
+
observerRef.current?.disconnect();
|
|
80
|
+
};
|
|
81
|
+
}, []);
|
|
82
|
+
const registerItem = useCallback((index, element) => {
|
|
83
|
+
handleItem(index, element, observerRef.current);
|
|
84
|
+
}, [handleItem]);
|
|
85
|
+
const contextValue = {
|
|
86
|
+
registerItem,
|
|
87
|
+
isVisible: (index) => visibleItems.has(index),
|
|
88
|
+
visibleItems,
|
|
89
|
+
};
|
|
90
|
+
return {
|
|
91
|
+
viewportRefCallback,
|
|
92
|
+
contextValue,
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=visibilityDetection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibilityDetection.js","sourceRoot":"","sources":["../../src/legend/visibilityDetection.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,7 @@ import { IMappingHeader } from '@gooddata/sdk-ui';
|
|
|
20
20
|
import { IRgbColorValue } from '@gooddata/sdk-model';
|
|
21
21
|
import { ITheme } from '@gooddata/sdk-model';
|
|
22
22
|
import { default as React_2 } from 'react';
|
|
23
|
+
import { ReactElement } from 'react';
|
|
23
24
|
import { Rect } from 'react-measure';
|
|
24
25
|
|
|
25
26
|
/**
|
|
@@ -297,8 +298,8 @@ export declare interface IGeoChartLegendData {
|
|
|
297
298
|
* @internal
|
|
298
299
|
*/
|
|
299
300
|
export declare interface IHeadlinePaginationProps {
|
|
300
|
-
renderSecondaryItem: () =>
|
|
301
|
-
renderTertiaryItem: () =>
|
|
301
|
+
renderSecondaryItem: () => ReactElement;
|
|
302
|
+
renderTertiaryItem: () => ReactElement;
|
|
302
303
|
accessibilityConfig?: {
|
|
303
304
|
nextAriaLabel?: string;
|
|
304
305
|
previousAriaLabel?: string;
|
|
@@ -408,7 +409,7 @@ export declare interface IPopUpLegendProps {
|
|
|
408
409
|
maxRows?: number;
|
|
409
410
|
enableBorderRadius?: boolean | ItemBorderRadiusPredicate;
|
|
410
411
|
containerId: string;
|
|
411
|
-
customComponent?:
|
|
412
|
+
customComponent?: ReactElement | null;
|
|
412
413
|
customComponentName?: string;
|
|
413
414
|
}
|
|
414
415
|
|
|
@@ -464,7 +465,7 @@ export declare interface IStaticLegendProps {
|
|
|
464
465
|
label?: string;
|
|
465
466
|
buttonOrientation?: ButtonsOrientationType;
|
|
466
467
|
paginationHeight?: number;
|
|
467
|
-
customComponent?:
|
|
468
|
+
customComponent?: ReactElement | null;
|
|
468
469
|
isLabelVisible?: boolean;
|
|
469
470
|
onItemClick?(item: ISeriesItem): void;
|
|
470
471
|
onPageChanged?: (page: number) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-vis-commons",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.37.0",
|
|
4
4
|
"description": "GoodData.UI SDK - common functionality for different types of visualizations",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
"react-intl": "6.8.9",
|
|
37
37
|
"react-measure": "^2.5.2",
|
|
38
38
|
"tslib": "2.8.1",
|
|
39
|
-
"@gooddata/sdk-backend-spi": "10.
|
|
40
|
-
"@gooddata/sdk-model": "10.
|
|
41
|
-
"@gooddata/sdk-ui": "10.
|
|
42
|
-
"@gooddata/sdk-ui-theme-provider": "10.
|
|
43
|
-
"@gooddata/sdk-ui
|
|
39
|
+
"@gooddata/sdk-backend-spi": "10.37.0",
|
|
40
|
+
"@gooddata/sdk-model": "10.37.0",
|
|
41
|
+
"@gooddata/sdk-ui-kit": "10.37.0",
|
|
42
|
+
"@gooddata/sdk-ui-theme-provider": "10.37.0",
|
|
43
|
+
"@gooddata/sdk-ui": "10.37.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"react": "^16.10.0 || ^17.0.0 || ^18.0.0",
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
"typescript": "5.8.3",
|
|
88
88
|
"vitest": "3.2.4",
|
|
89
89
|
"vitest-dom": "0.1.1",
|
|
90
|
-
"@gooddata/reference-workspace": "10.
|
|
91
|
-
"@gooddata/sdk-backend-mockingbird": "10.
|
|
90
|
+
"@gooddata/reference-workspace": "10.37.0",
|
|
91
|
+
"@gooddata/sdk-backend-mockingbird": "10.37.0"
|
|
92
92
|
},
|
|
93
93
|
"scripts": {
|
|
94
94
|
"clean": "rm -rf ci dist esm coverage styles/css *.log tsconfig.tsbuildinfo",
|