@siyahi/ui 0.1.9-next.12 → 0.1.9-next.14
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.
|
@@ -11,6 +11,11 @@ function BarChartCard({ stacked = false, selected = null, onSelect, ...props })
|
|
|
11
11
|
...props,
|
|
12
12
|
yDomain: props.yDomain ?? (props.data.some((row) => props.series.some(({ key }) => Number(row[key]) > 0)) ? void 0 : DOWN_FROM_ZERO),
|
|
13
13
|
stackOffset: stacked ? "sign" : void 0,
|
|
14
|
+
onClick: onSelect ? ({ activeTooltipIndex, isTooltipActive }) => {
|
|
15
|
+
if (!isTooltipActive || activeTooltipIndex == null) return;
|
|
16
|
+
const row = props.data[Number(activeTooltipIndex)];
|
|
17
|
+
if (row) onSelect(row[props.xKey] === selected ? null : row[props.xKey]);
|
|
18
|
+
} : void 0,
|
|
14
19
|
children: props.series.map((item, index) => {
|
|
15
20
|
const { key, label, color, negativeColor } = item;
|
|
16
21
|
return /* @__PURE__ */ jsx(Bar, {
|
|
@@ -29,11 +34,6 @@ function BarChartCard({ stacked = false, selected = null, onSelect, ...props })
|
|
|
29
34
|
0,
|
|
30
35
|
0
|
|
31
36
|
] : 0,
|
|
32
|
-
className: onSelect ? "cursor-pointer" : void 0,
|
|
33
|
-
onClick: onSelect && ((bar) => {
|
|
34
|
-
const value = bar.payload?.[props.xKey];
|
|
35
|
-
if (value !== void 0) onSelect(value === selected ? null : value);
|
|
36
|
-
}),
|
|
37
37
|
children: (negativeColor || selected !== null) && props.data.map((row, i) => /* @__PURE__ */ jsx(Cell, {
|
|
38
38
|
fill: negativeColor && Number(row[key]) < 0 ? negativeColor : color,
|
|
39
39
|
fillOpacity: selected === null || row[props.xKey] === selected ? 1 : .35
|
|
@@ -149,7 +149,7 @@ function TableFacetedFilter({ column, title, options = [], multiple, onValueChan
|
|
|
149
149
|
] })
|
|
150
150
|
]
|
|
151
151
|
}) }), /* @__PURE__ */ jsx(PopoverContent, {
|
|
152
|
-
className: "w-52 p-0",
|
|
152
|
+
className: "w-max min-w-52 max-w-(--available-width) p-0",
|
|
153
153
|
align: "start",
|
|
154
154
|
children: /* @__PURE__ */ jsx(TableFacetedFilterContent, {
|
|
155
155
|
title,
|
|
@@ -177,16 +177,16 @@ function TableFacetedFilterContent({ title, options, selectedValues, onItemSelec
|
|
|
177
177
|
onSelect: () => onItemSelect(option, isSelected),
|
|
178
178
|
children: [
|
|
179
179
|
/* @__PURE__ */ jsx("div", {
|
|
180
|
-
className: cn("mr-2 flex size-4 items-center justify-center rounded-sm border border-primary", isSelected ? "bg-primary text-primary-foreground" : "opacity-50 [&_svg]:invisible"),
|
|
180
|
+
className: cn("mr-2 flex size-4 shrink-0 items-center justify-center rounded-sm border border-primary", isSelected ? "bg-primary text-primary-foreground" : "opacity-50 [&_svg]:invisible"),
|
|
181
181
|
children: /* @__PURE__ */ jsx(Check, { className: "size-4" })
|
|
182
182
|
}),
|
|
183
183
|
option.icon && /* @__PURE__ */ jsx(option.icon, { className: "mr-2 size-4" }),
|
|
184
184
|
/* @__PURE__ */ jsx("span", {
|
|
185
|
-
className: "
|
|
185
|
+
className: "min-w-0 flex-1 whitespace-normal wrap-anywhere",
|
|
186
186
|
children: option.label
|
|
187
187
|
}),
|
|
188
188
|
option.count !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
189
|
-
className: "ml-auto font-mono text-xs",
|
|
189
|
+
className: "ml-auto shrink-0 font-mono text-xs",
|
|
190
190
|
children: option.count
|
|
191
191
|
})
|
|
192
192
|
]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChartColor, ChartSeries, ChartSeriesItem, NumericXProps, SeriesChartProps } from "./chart-series.js";
|
|
2
|
-
import { ReactNode } from "react";
|
|
2
|
+
import { ComponentProps, ReactNode } from "react";
|
|
3
3
|
import { AreaChart, BarChart, LineChart, YAxisProps } from "recharts";
|
|
4
4
|
//#region src/lib/chart-frame.d.ts
|
|
5
5
|
interface ChartFrameProps<T extends object, K extends keyof T> extends Omit<SeriesChartProps<T, K>, "yDomain">, NumericXProps {
|
|
@@ -15,6 +15,7 @@ interface ChartFrameProps<T extends object, K extends keyof T> extends Omit<Seri
|
|
|
15
15
|
horizontal?: boolean;
|
|
16
16
|
/** "sign" stacks negative values below zero and positive ones above, rather than on one running total. */
|
|
17
17
|
stackOffset?: "sign";
|
|
18
|
+
onClick?: ComponentProps<typeof BarChart>["onClick"];
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
21
|
* The colour a series' Bar takes, which its legend chip shows: the negative colour when every value drawn is below
|
|
@@ -31,6 +32,6 @@ export declare function seriesRow<T>(series: ChartSeries<T>, formatValue: (value
|
|
|
31
32
|
* that gave its category axis its own id (dash#88) got a plot split in two
|
|
32
33
|
* and every tooltip headed with the series name instead of the category.
|
|
33
34
|
*/
|
|
34
|
-
export declare function ChartFrame<T extends object, K extends keyof T>({ chart: Chart, children, horizontal, stackOffset, title, description, action, data, xKey, series, xFormatter, xTooltipFormatter, valueFormatter, yTickFormatter, yDomain, yTicks, height, xTickDetail, xLabel, yLabel, referenceLines, placeholder, footer, xDomain, xTicks }: ChartFrameProps<T, K>): import("react").JSX.Element;
|
|
35
|
+
export declare function ChartFrame<T extends object, K extends keyof T>({ chart: Chart, children, horizontal, stackOffset, onClick, title, description, action, data, xKey, series, xFormatter, xTooltipFormatter, valueFormatter, yTickFormatter, yDomain, yTicks, height, xTickDetail, xLabel, yLabel, referenceLines, placeholder, footer, xDomain, xTicks }: ChartFrameProps<T, K>): import("react").JSX.Element;
|
|
35
36
|
//#endregion
|
|
36
37
|
export {};
|
package/dist/lib/chart-frame.js
CHANGED
|
@@ -93,7 +93,7 @@ function fittedTick(data, xKey, xFormatter, detailOf, beside) {
|
|
|
93
93
|
* that gave its category axis its own id (dash#88) got a plot split in two
|
|
94
94
|
* and every tooltip headed with the series name instead of the category.
|
|
95
95
|
*/
|
|
96
|
-
function ChartFrame({ chart: Chart, children, horizontal = false, stackOffset, title, description, action, data, xKey, series, xFormatter = String, xTooltipFormatter = xFormatter, valueFormatter, yTickFormatter, yDomain, yTicks, height, xTickDetail, xLabel, yLabel, referenceLines = NO_LINES, placeholder, footer, xDomain, xTicks }) {
|
|
96
|
+
function ChartFrame({ chart: Chart, children, horizontal = false, stackOffset, onClick, title, description, action, data, xKey, series, xFormatter = String, xTooltipFormatter = xFormatter, valueFormatter, yTickFormatter, yDomain, yTicks, height, xTickDetail, xLabel, yLabel, referenceLines = NO_LINES, placeholder, footer, xDomain, xTicks }) {
|
|
97
97
|
const { numberLocale } = useLocale();
|
|
98
98
|
const formatValue = valueFormatter ?? new Intl.NumberFormat(numberLocale).format;
|
|
99
99
|
const config = Object.fromEntries(series.map(({ key, label, color }) => [key, {
|
|
@@ -114,12 +114,14 @@ function ChartFrame({ chart: Chart, children, horizontal = false, stackOffset, t
|
|
|
114
114
|
children: placeholder
|
|
115
115
|
}) : /* @__PURE__ */ jsx(ChartContainer, {
|
|
116
116
|
config,
|
|
117
|
-
className: "aspect-auto w-full",
|
|
117
|
+
className: cn("aspect-auto w-full", onClick && "cursor-pointer"),
|
|
118
118
|
style: { height },
|
|
119
119
|
children: /* @__PURE__ */ jsxs(Chart, {
|
|
120
120
|
data,
|
|
121
121
|
layout: horizontal ? "vertical" : "horizontal",
|
|
122
122
|
stackOffset,
|
|
123
|
+
onClick,
|
|
124
|
+
throttledEvents: onClick ? [] : void 0,
|
|
123
125
|
margin: {
|
|
124
126
|
left: 0,
|
|
125
127
|
right: xTicks ? endRoom(xFormatter, xTicks) : 8
|