@proounce/shared-common 0.0.0-stage → 0.1.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/LICENSE +16 -0
- package/README.md +121 -2
- package/dist/charts/fusion.cjs +310 -0
- package/dist/charts/fusion.cjs.map +1 -0
- package/dist/charts/fusion.d.cts +78 -0
- package/dist/charts/fusion.d.ts +78 -0
- package/dist/charts/fusion.js +278 -0
- package/dist/charts/fusion.js.map +1 -0
- package/dist/grids/ag-grid.cjs +242 -0
- package/dist/grids/ag-grid.cjs.map +1 -0
- package/dist/grids/ag-grid.d.cts +45 -0
- package/dist/grids/ag-grid.d.ts +45 -0
- package/dist/grids/ag-grid.js +226 -0
- package/dist/grids/ag-grid.js.map +1 -0
- package/dist/icons/lucide.cjs +104 -0
- package/dist/icons/lucide.cjs.map +1 -0
- package/dist/icons/lucide.d.cts +151 -0
- package/dist/icons/lucide.d.ts +151 -0
- package/dist/icons/lucide.js +3 -0
- package/dist/icons/lucide.js.map +1 -0
- package/dist/icons/mui.cjs +1106 -0
- package/dist/icons/mui.cjs.map +1 -0
- package/dist/icons/mui.d.cts +150 -0
- package/dist/icons/mui.d.ts +150 -0
- package/dist/icons/mui.js +152 -0
- package/dist/icons/mui.js.map +1 -0
- package/dist/index.cjs +16032 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3812 -0
- package/dist/index.d.ts +3812 -0
- package/dist/index.js +15777 -0
- package/dist/index.js.map +1 -0
- package/docs/COMPATIBILITY_MATRIX.md +325 -0
- package/docs/COMPONENT_AUDIT.md +76 -0
- package/docs/LEGACY_CLOSURE.json +1143 -0
- package/package.json +145 -4
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import FusionCharts from 'fusioncharts';
|
|
2
|
+
import charts from 'fusioncharts/fusioncharts.charts.js';
|
|
3
|
+
import ReactFusioncharts from 'react-fusioncharts';
|
|
4
|
+
import { useState, useEffect, useMemo, useId } from 'react';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
import MenuItem from '@mui/material/MenuItem';
|
|
7
|
+
import Stack from '@mui/material/Stack';
|
|
8
|
+
import Typography from '@mui/material/Typography';
|
|
9
|
+
import TextField from '@mui/material/TextField';
|
|
10
|
+
import '@mui/material/FormControl';
|
|
11
|
+
|
|
12
|
+
// src/charts/FusionChart.tsx
|
|
13
|
+
var fusionRegistered = false;
|
|
14
|
+
function FusionChart({
|
|
15
|
+
type,
|
|
16
|
+
dataSource,
|
|
17
|
+
width = "100%",
|
|
18
|
+
height = 400,
|
|
19
|
+
events,
|
|
20
|
+
licenseKey,
|
|
21
|
+
loadingFallback = null,
|
|
22
|
+
"aria-label": ariaLabel = "Chart"
|
|
23
|
+
}) {
|
|
24
|
+
const [registered, setRegistered] = useState(fusionRegistered);
|
|
25
|
+
const [licenseReady, setLicenseReady] = useState(!licenseKey);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (!fusionRegistered) {
|
|
28
|
+
ReactFusioncharts.fcRoot(FusionCharts, charts);
|
|
29
|
+
fusionRegistered = true;
|
|
30
|
+
}
|
|
31
|
+
setRegistered(true);
|
|
32
|
+
}, []);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
let active = true;
|
|
35
|
+
if (!licenseKey) {
|
|
36
|
+
setLicenseReady(true);
|
|
37
|
+
return void 0;
|
|
38
|
+
}
|
|
39
|
+
setLicenseReady(false);
|
|
40
|
+
void Promise.resolve(licenseKey).then((key) => {
|
|
41
|
+
const options = FusionCharts.options;
|
|
42
|
+
options.license({ key, creditLabel: false });
|
|
43
|
+
if (active) setLicenseReady(true);
|
|
44
|
+
});
|
|
45
|
+
return () => {
|
|
46
|
+
active = false;
|
|
47
|
+
};
|
|
48
|
+
}, [licenseKey]);
|
|
49
|
+
if (!registered || !licenseReady) return loadingFallback;
|
|
50
|
+
return /* @__PURE__ */ jsx("div", { role: "img", "aria-label": ariaLabel, children: /* @__PURE__ */ jsx(
|
|
51
|
+
ReactFusioncharts,
|
|
52
|
+
{
|
|
53
|
+
type,
|
|
54
|
+
width,
|
|
55
|
+
height,
|
|
56
|
+
dataFormat: "json",
|
|
57
|
+
dataSource,
|
|
58
|
+
...events ? { events } : {}
|
|
59
|
+
}
|
|
60
|
+
) });
|
|
61
|
+
}
|
|
62
|
+
function FusionBarChart(props) {
|
|
63
|
+
return /* @__PURE__ */ jsx(FusionChart, { type: "bar2d", ...props });
|
|
64
|
+
}
|
|
65
|
+
function FusionColumnChart(props) {
|
|
66
|
+
return /* @__PURE__ */ jsx(FusionChart, { type: "column2d", ...props });
|
|
67
|
+
}
|
|
68
|
+
function FusionDoughnutChart(props) {
|
|
69
|
+
return /* @__PURE__ */ jsx(FusionChart, { type: "doughnut2d", ...props });
|
|
70
|
+
}
|
|
71
|
+
var GenericChart = FusionChart;
|
|
72
|
+
var FusionDefaultCharts = FusionChart;
|
|
73
|
+
var GenericChartCDMS = FusionChart;
|
|
74
|
+
var FusionDefaultChartsPF = FusionChart;
|
|
75
|
+
var FusionDefaultChartsPH = FusionChart;
|
|
76
|
+
|
|
77
|
+
// src/accessibility/controlNames.ts
|
|
78
|
+
function humanizeControlName(value) {
|
|
79
|
+
const normalized = value?.replace(/[_-]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/\s+/g, " ").trim();
|
|
80
|
+
return normalized ? normalized.charAt(0).toUpperCase() + normalized.slice(1) : void 0;
|
|
81
|
+
}
|
|
82
|
+
function resolveControlName({
|
|
83
|
+
label,
|
|
84
|
+
ariaLabel,
|
|
85
|
+
name,
|
|
86
|
+
id,
|
|
87
|
+
backupName
|
|
88
|
+
}) {
|
|
89
|
+
if (typeof label === "string" && label.trim()) return label.trim();
|
|
90
|
+
if (typeof ariaLabel === "string" && ariaLabel.trim()) return ariaLabel.trim();
|
|
91
|
+
return humanizeControlName(name) ?? humanizeControlName(id) ?? backupName;
|
|
92
|
+
}
|
|
93
|
+
function SharedTextField({
|
|
94
|
+
size = "small",
|
|
95
|
+
variant = "outlined",
|
|
96
|
+
InputLabelProps,
|
|
97
|
+
inputProps,
|
|
98
|
+
id,
|
|
99
|
+
name,
|
|
100
|
+
label,
|
|
101
|
+
backupName = "Text input",
|
|
102
|
+
...props
|
|
103
|
+
}) {
|
|
104
|
+
const generatedId = useId().replace(/:/g, "");
|
|
105
|
+
const controlId = id ?? `shared-text-field-${generatedId}`;
|
|
106
|
+
const accessibleName = resolveControlName({
|
|
107
|
+
label,
|
|
108
|
+
ariaLabel: inputProps?.["aria-label"],
|
|
109
|
+
name,
|
|
110
|
+
id,
|
|
111
|
+
backupName
|
|
112
|
+
});
|
|
113
|
+
return /* @__PURE__ */ jsx(
|
|
114
|
+
TextField,
|
|
115
|
+
{
|
|
116
|
+
fullWidth: true,
|
|
117
|
+
size,
|
|
118
|
+
variant,
|
|
119
|
+
id: controlId,
|
|
120
|
+
name,
|
|
121
|
+
label,
|
|
122
|
+
InputLabelProps: { shrink: true, ...InputLabelProps },
|
|
123
|
+
inputProps: {
|
|
124
|
+
autoComplete: "off",
|
|
125
|
+
"data-gramm": "false",
|
|
126
|
+
...!label && !inputProps?.["aria-labelledby"] ? { "aria-label": accessibleName } : {},
|
|
127
|
+
...inputProps
|
|
128
|
+
},
|
|
129
|
+
...props
|
|
130
|
+
}
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
var DEFAULT_CHART_TYPES = [
|
|
134
|
+
{ value: "column2d", label: "Column" },
|
|
135
|
+
{ value: "bar2d", label: "Bar" },
|
|
136
|
+
{ value: "line", label: "Line" },
|
|
137
|
+
{ value: "area2d", label: "Area" },
|
|
138
|
+
{ value: "pie2d", label: "Pie" },
|
|
139
|
+
{ value: "doughnut2d", label: "Doughnut" }
|
|
140
|
+
];
|
|
141
|
+
function CommonChart({
|
|
142
|
+
type = "column2d",
|
|
143
|
+
title,
|
|
144
|
+
caption,
|
|
145
|
+
subCaption,
|
|
146
|
+
xAxisName,
|
|
147
|
+
yAxisName,
|
|
148
|
+
items,
|
|
149
|
+
chartOptions,
|
|
150
|
+
selectableTypes = DEFAULT_CHART_TYPES,
|
|
151
|
+
showTypeSelector = false,
|
|
152
|
+
selectorLabel = "Chart type",
|
|
153
|
+
description,
|
|
154
|
+
showDataTable = false,
|
|
155
|
+
dataTableLabel = "View chart data",
|
|
156
|
+
onTypeChange,
|
|
157
|
+
"aria-label": ariaLabel,
|
|
158
|
+
...chartProps
|
|
159
|
+
}) {
|
|
160
|
+
const [selectedType, setSelectedType] = useState(null);
|
|
161
|
+
const activeType = selectedType ?? type;
|
|
162
|
+
const dataSource = useMemo(
|
|
163
|
+
() => ({
|
|
164
|
+
chart: {
|
|
165
|
+
caption: caption ?? (typeof title === "string" ? title : void 0),
|
|
166
|
+
subCaption,
|
|
167
|
+
xAxisName,
|
|
168
|
+
yAxisName,
|
|
169
|
+
baseFont: "Inter, sans-serif",
|
|
170
|
+
baseFontSize: "13",
|
|
171
|
+
showBorder: "0",
|
|
172
|
+
showCanvasBorder: "0",
|
|
173
|
+
usePlotGradientColor: "0",
|
|
174
|
+
showPlotBorder: "0",
|
|
175
|
+
showShadow: "0",
|
|
176
|
+
showLegend: "1",
|
|
177
|
+
legendPosition: "bottom",
|
|
178
|
+
labelDisplay: "rotate",
|
|
179
|
+
slantLabels: "1",
|
|
180
|
+
maxColWidth: "15",
|
|
181
|
+
maxBarHeight: "15",
|
|
182
|
+
animation: "1",
|
|
183
|
+
...chartOptions
|
|
184
|
+
},
|
|
185
|
+
data: [...items]
|
|
186
|
+
}),
|
|
187
|
+
[caption, chartOptions, items, subCaption, title, xAxisName, yAxisName]
|
|
188
|
+
);
|
|
189
|
+
const accessibleName = ariaLabel ?? caption ?? (typeof title === "string" ? title : "Chart");
|
|
190
|
+
return /* @__PURE__ */ jsxs(Stack, { component: "section", spacing: 1.5, "aria-label": accessibleName, children: [
|
|
191
|
+
title || showTypeSelector ? /* @__PURE__ */ jsxs(
|
|
192
|
+
Stack,
|
|
193
|
+
{
|
|
194
|
+
direction: { xs: "column", sm: "row" },
|
|
195
|
+
alignItems: { xs: "stretch", sm: "center" },
|
|
196
|
+
justifyContent: "space-between",
|
|
197
|
+
gap: 1,
|
|
198
|
+
children: [
|
|
199
|
+
title ? /* @__PURE__ */ jsx(Typography, { component: "h2", variant: "h6", children: title }) : null,
|
|
200
|
+
showTypeSelector ? /* @__PURE__ */ jsx(
|
|
201
|
+
SharedTextField,
|
|
202
|
+
{
|
|
203
|
+
select: true,
|
|
204
|
+
size: "small",
|
|
205
|
+
label: selectorLabel,
|
|
206
|
+
value: activeType,
|
|
207
|
+
onChange: (event) => {
|
|
208
|
+
setSelectedType(event.target.value);
|
|
209
|
+
onTypeChange?.(event.target.value);
|
|
210
|
+
},
|
|
211
|
+
sx: { minWidth: 160 },
|
|
212
|
+
children: selectableTypes.map((option) => /* @__PURE__ */ jsx(MenuItem, { value: option.value, children: option.label }, option.value))
|
|
213
|
+
}
|
|
214
|
+
) : null
|
|
215
|
+
]
|
|
216
|
+
}
|
|
217
|
+
) : null,
|
|
218
|
+
description ? /* @__PURE__ */ jsx(Typography, { color: "text.secondary", children: description }) : null,
|
|
219
|
+
/* @__PURE__ */ jsx(
|
|
220
|
+
FusionChart,
|
|
221
|
+
{
|
|
222
|
+
type: activeType,
|
|
223
|
+
dataSource,
|
|
224
|
+
"aria-label": accessibleName,
|
|
225
|
+
...chartProps
|
|
226
|
+
}
|
|
227
|
+
),
|
|
228
|
+
showDataTable ? /* @__PURE__ */ jsxs("details", { children: [
|
|
229
|
+
/* @__PURE__ */ jsx("summary", { children: dataTableLabel }),
|
|
230
|
+
/* @__PURE__ */ jsxs("table", { children: [
|
|
231
|
+
/* @__PURE__ */ jsx("caption", { children: accessibleName }),
|
|
232
|
+
/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
233
|
+
/* @__PURE__ */ jsx("th", { scope: "col", children: "Label" }),
|
|
234
|
+
/* @__PURE__ */ jsx("th", { scope: "col", children: "Value" })
|
|
235
|
+
] }) }),
|
|
236
|
+
/* @__PURE__ */ jsx("tbody", { children: items.map((item) => /* @__PURE__ */ jsxs("tr", { children: [
|
|
237
|
+
/* @__PURE__ */ jsx("th", { scope: "row", children: item.label }),
|
|
238
|
+
/* @__PURE__ */ jsx("td", { children: item.displayValue ?? item.value })
|
|
239
|
+
] }, item.label)) })
|
|
240
|
+
] })
|
|
241
|
+
] }) : null
|
|
242
|
+
] });
|
|
243
|
+
}
|
|
244
|
+
function CommonBarChart(props) {
|
|
245
|
+
return /* @__PURE__ */ jsx(CommonChart, { type: "bar2d", ...props });
|
|
246
|
+
}
|
|
247
|
+
function CommonColumnChart(props) {
|
|
248
|
+
return /* @__PURE__ */ jsx(CommonChart, { type: "column2d", ...props });
|
|
249
|
+
}
|
|
250
|
+
function LineChart(props) {
|
|
251
|
+
return /* @__PURE__ */ jsx(CommonChart, { type: "line", ...props });
|
|
252
|
+
}
|
|
253
|
+
function AreaChart(props) {
|
|
254
|
+
return /* @__PURE__ */ jsx(CommonChart, { type: "area2d", ...props });
|
|
255
|
+
}
|
|
256
|
+
function PieChart(props) {
|
|
257
|
+
return /* @__PURE__ */ jsx(CommonChart, { type: "pie2d", ...props });
|
|
258
|
+
}
|
|
259
|
+
function CommonDoughnutChart(props) {
|
|
260
|
+
return /* @__PURE__ */ jsx(CommonChart, { type: "doughnut2d", ...props });
|
|
261
|
+
}
|
|
262
|
+
function isRawPreset(props) {
|
|
263
|
+
return "dataSource" in props;
|
|
264
|
+
}
|
|
265
|
+
function BarChart(props) {
|
|
266
|
+
return isRawPreset(props) ? /* @__PURE__ */ jsx(FusionChart, { type: "bar2d", ...props }) : /* @__PURE__ */ jsx(CommonBarChart, { ...props });
|
|
267
|
+
}
|
|
268
|
+
function ColumnChart(props) {
|
|
269
|
+
return isRawPreset(props) ? /* @__PURE__ */ jsx(FusionChart, { type: "column2d", ...props }) : /* @__PURE__ */ jsx(CommonColumnChart, { ...props });
|
|
270
|
+
}
|
|
271
|
+
var ChartColumn2D = ColumnChart;
|
|
272
|
+
function DoughnutChart(props) {
|
|
273
|
+
return isRawPreset(props) ? /* @__PURE__ */ jsx(FusionChart, { type: "doughnut2d", ...props }) : /* @__PURE__ */ jsx(CommonDoughnutChart, { ...props });
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
export { AreaChart, BarChart, ChartColumn2D, ColumnChart, CommonBarChart, CommonChart, CommonColumnChart, CommonDoughnutChart, DEFAULT_CHART_TYPES, DoughnutChart, FusionBarChart, FusionChart, FusionColumnChart, FusionDefaultCharts, FusionDefaultChartsPF, FusionDefaultChartsPH, FusionDoughnutChart, GenericChart, GenericChartCDMS, LineChart, PieChart };
|
|
277
|
+
//# sourceMappingURL=fusion.js.map
|
|
278
|
+
//# sourceMappingURL=fusion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/charts/FusionChart.tsx","../../src/accessibility/controlNames.ts","../../src/inputs/SharedTextField.tsx","../../src/charts/CommonChart.tsx"],"names":["jsx","useState"],"mappings":"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","file":"fusion.js","sourcesContent":["import FusionCharts from \"fusioncharts\";\nimport charts from \"fusioncharts/fusioncharts.charts.js\";\nimport ReactFusioncharts from \"react-fusioncharts\";\nimport { useEffect, useState } from \"react\";\n\nlet fusionRegistered = false;\n\nexport interface FusionChartProps {\n type: string;\n dataSource: Record<string, unknown>;\n width?: string | number;\n height?: string | number;\n events?: Record<string, (...args: unknown[]) => void>;\n licenseKey?: string | Promise<string>;\n loadingFallback?: React.ReactNode;\n \"aria-label\"?: string;\n}\n\n/**\n * Generic FusionCharts renderer. Data and optional licensing are injected by the\n * consuming application, so this package never performs an API request.\n */\nexport function FusionChart({\n type,\n dataSource,\n width = \"100%\",\n height = 400,\n events,\n licenseKey,\n loadingFallback = null,\n \"aria-label\": ariaLabel = \"Chart\",\n}: FusionChartProps) {\n const [registered, setRegistered] = useState(fusionRegistered);\n const [licenseReady, setLicenseReady] = useState(!licenseKey);\n\n useEffect(() => {\n if (!fusionRegistered) {\n ReactFusioncharts.fcRoot(FusionCharts, charts);\n fusionRegistered = true;\n }\n setRegistered(true);\n }, []);\n\n useEffect(() => {\n let active = true;\n if (!licenseKey) {\n setLicenseReady(true);\n return undefined;\n }\n setLicenseReady(false);\n void Promise.resolve(licenseKey).then((key) => {\n const options = FusionCharts.options as typeof FusionCharts.options & {\n license: (settings: { key: string; creditLabel: boolean }) => void;\n };\n options.license({ key, creditLabel: false });\n if (active) setLicenseReady(true);\n });\n return () => {\n active = false;\n };\n }, [licenseKey]);\n\n if (!registered || !licenseReady) return loadingFallback;\n\n return (\n <div role=\"img\" aria-label={ariaLabel}>\n <ReactFusioncharts\n type={type}\n width={width}\n height={height}\n dataFormat=\"json\"\n dataSource={dataSource}\n {...(events ? { events } : {})}\n />\n </div>\n );\n}\n\nexport type FusionChartPresetProps = Omit<FusionChartProps, \"type\">;\n\nexport function FusionBarChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"bar2d\" {...props} />;\n}\n\nexport function FusionColumnChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"column2d\" {...props} />;\n}\n\nexport function FusionDoughnutChart(props: FusionChartPresetProps) {\n return <FusionChart type=\"doughnut2d\" {...props} />;\n}\n\nexport const GenericChart = FusionChart;\nexport const FusionDefaultCharts = FusionChart;\nexport const GenericChartCDMS = FusionChart;\nexport const FusionDefaultChartsPF = FusionChart;\nexport const FusionDefaultChartsPH = FusionChart;\n","export interface ControlNameOptions {\n label?: unknown;\n ariaLabel?: unknown;\n name?: string;\n id?: string;\n backupName: string;\n}\n\n/** Turns common field identifiers into a readable last-resort accessible name. */\nexport function humanizeControlName(value?: string) {\n const normalized = value\n ?.replace(/[_-]+/g, \" \")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/\\s+/g, \" \")\n .trim();\n return normalized ? normalized.charAt(0).toUpperCase() + normalized.slice(1) : undefined;\n}\n\n/**\n * A visible string label is associated by the component and therefore wins.\n * Otherwise prefer an explicit aria-label, then a readable name/id, then the\n * component's documented backup name.\n */\nexport function resolveControlName({\n label,\n ariaLabel,\n name,\n id,\n backupName,\n}: ControlNameOptions) {\n if (typeof label === \"string\" && label.trim()) return label.trim();\n if (typeof ariaLabel === \"string\" && ariaLabel.trim()) return ariaLabel.trim();\n return humanizeControlName(name) ?? humanizeControlName(id) ?? backupName;\n}\n","import TextField, { type TextFieldProps } from \"@mui/material/TextField\";\nimport FormControl from \"@mui/material/FormControl\";\nimport { useId } from \"react\";\nimport { resolveControlName } from \"../accessibility/controlNames\";\n\nexport type SharedTextFieldProps = TextFieldProps & {\n /** Accessible name used only when label, aria-label, name and id are absent. */\n backupName?: string;\n};\n\n/** A full-width text field with the legacy library's compact defaults. */\nexport function SharedTextField({\n size = \"small\",\n variant = \"outlined\",\n InputLabelProps,\n inputProps,\n id,\n name,\n label,\n backupName = \"Text input\",\n ...props\n}: SharedTextFieldProps) {\n const generatedId = useId().replace(/:/g, \"\");\n const controlId = id ?? `shared-text-field-${generatedId}`;\n const accessibleName = resolveControlName({\n label,\n ariaLabel: inputProps?.[\"aria-label\"],\n name,\n id,\n backupName,\n });\n return (\n <TextField\n fullWidth\n size={size}\n variant={variant}\n id={controlId}\n name={name}\n label={label}\n InputLabelProps={{ shrink: true, ...InputLabelProps }}\n inputProps={{\n autoComplete: \"off\",\n \"data-gramm\": \"false\",\n ...(!label && !inputProps?.[\"aria-labelledby\"] ? { \"aria-label\": accessibleName } : {}),\n ...inputProps,\n }}\n {...props}\n />\n );\n}\n\nexport default SharedTextField;\n\n/** Visual-compatible version of the legacy `TextField` export. */\nexport function LegacyTextField({\n InputProps,\n inputProps,\n label,\n name,\n id,\n backupName = \"Text input\",\n ...props\n}: SharedTextFieldProps) {\n const accessibleName = resolveControlName({\n label,\n ariaLabel: inputProps?.[\"aria-label\"] ?? InputProps?.inputProps?.[\"aria-label\"],\n name,\n id,\n backupName,\n });\n\n return (\n <TextField\n {...props}\n label={label}\n name={name}\n id={id}\n InputProps={{\n ...InputProps,\n inputProps: {\n ...InputProps?.inputProps,\n ...inputProps,\n style: {\n padding: \"10px 10px\",\n fontSize: \"14px\",\n ...InputProps?.inputProps?.style,\n ...inputProps?.style,\n },\n ...(!label && !inputProps?.[\"aria-labelledby\"] ? { \"aria-label\": accessibleName } : {}),\n },\n }}\n />\n );\n}\n\nexport type LegacyStyledTextFieldProps = SharedTextFieldProps & {\n errorMessage?: string | null;\n};\n\n/** Visual-compatible version of the legacy `StyledTextField` export. */\nexport function LegacyStyledTextField({\n errorMessage = null,\n variant = \"outlined\",\n size = \"small\",\n disabled = false,\n InputLabelProps,\n inputProps,\n sx,\n ...props\n}: LegacyStyledTextFieldProps) {\n return (\n <FormControl\n style={{ width: \"100%\", border: \"none\" }}\n error={Boolean(errorMessage && errorMessage.length > 0)}\n >\n <SharedTextField\n variant={variant}\n size={size}\n disabled={disabled}\n InputLabelProps={{\n shrink: true,\n sx: {\n color: \"#000\",\n fontSize: 18,\n background: \"#fff\",\n px: 0.5,\n zIndex: 1,\n letterSpacing: \"0.5px\",\n },\n ...InputLabelProps,\n }}\n sx={{\n \"& .MuiOutlinedInput-root\": { borderRadius: \"6px\" },\n \"& .MuiInputLabel-root\": {\n color: \"#000\",\n fontSize: 18,\n background: \"#fff\",\n px: 0.5,\n zIndex: 1,\n letterSpacing: \"0.5px\",\n },\n \"& .MuiInputLabel-shrink\": {\n transform: \"translate(11px, -9px) scale(0.75)\",\n background: \"#fff\",\n px: 0.5,\n zIndex: 1,\n },\n ...sx,\n }}\n inputProps={{\n autoComplete: \"off\",\n \"data-gramm\": \"false\",\n style: { fontSize: \"16px\", padding: \"14px 12px\", ...inputProps?.style },\n ...inputProps,\n }}\n {...props}\n />\n </FormControl>\n );\n}\n","import MenuItem from \"@mui/material/MenuItem\";\nimport Stack from \"@mui/material/Stack\";\nimport Typography from \"@mui/material/Typography\";\nimport { useMemo, useState, type ReactNode } from \"react\";\nimport { SharedTextField } from \"../inputs/SharedTextField\";\nimport {\n FusionChart,\n type FusionChartPresetProps,\n type FusionChartProps,\n} from \"./FusionChart\";\n\nexport interface CommonChartDatum extends Record<string, unknown> {\n label: string;\n value: string | number;\n displayValue?: string;\n color?: string;\n toolText?: string;\n link?: string;\n}\n\nexport interface CommonChartTypeOption {\n value: string;\n label: string;\n}\n\nexport const DEFAULT_CHART_TYPES: readonly CommonChartTypeOption[] = [\n { value: \"column2d\", label: \"Column\" },\n { value: \"bar2d\", label: \"Bar\" },\n { value: \"line\", label: \"Line\" },\n { value: \"area2d\", label: \"Area\" },\n { value: \"pie2d\", label: \"Pie\" },\n { value: \"doughnut2d\", label: \"Doughnut\" },\n];\n\nexport interface CommonChartProps\n extends Omit<FusionChartProps, \"type\" | \"dataSource\"> {\n type?: string;\n title?: ReactNode;\n caption?: string;\n subCaption?: string;\n xAxisName?: string;\n yAxisName?: string;\n items: readonly CommonChartDatum[];\n chartOptions?: Record<string, unknown>;\n selectableTypes?: readonly CommonChartTypeOption[];\n showTypeSelector?: boolean;\n selectorLabel?: string;\n description?: ReactNode;\n showDataTable?: boolean;\n dataTableLabel?: string;\n onTypeChange?: (type: string) => void;\n}\n\n/**\n * Common chart contract used by applications: data, labels and display options\n * are supplied through props and no API or license lookup is performed.\n */\nexport function CommonChart({\n type = \"column2d\",\n title,\n caption,\n subCaption,\n xAxisName,\n yAxisName,\n items,\n chartOptions,\n selectableTypes = DEFAULT_CHART_TYPES,\n showTypeSelector = false,\n selectorLabel = \"Chart type\",\n description,\n showDataTable = false,\n dataTableLabel = \"View chart data\",\n onTypeChange,\n \"aria-label\": ariaLabel,\n ...chartProps\n}: CommonChartProps) {\n const [selectedType, setSelectedType] = useState<string | null>(null);\n const activeType = selectedType ?? type;\n\n const dataSource = useMemo(\n () => ({\n chart: {\n caption: caption ?? (typeof title === \"string\" ? title : undefined),\n subCaption,\n xAxisName,\n yAxisName,\n baseFont: \"Inter, sans-serif\",\n baseFontSize: \"13\",\n showBorder: \"0\",\n showCanvasBorder: \"0\",\n usePlotGradientColor: \"0\",\n showPlotBorder: \"0\",\n showShadow: \"0\",\n showLegend: \"1\",\n legendPosition: \"bottom\",\n labelDisplay: \"rotate\",\n slantLabels: \"1\",\n maxColWidth: \"15\",\n maxBarHeight: \"15\",\n animation: \"1\",\n ...chartOptions,\n },\n data: [...items],\n }),\n [caption, chartOptions, items, subCaption, title, xAxisName, yAxisName],\n );\n\n const accessibleName =\n ariaLabel ?? caption ?? (typeof title === \"string\" ? title : \"Chart\");\n\n return (\n <Stack component=\"section\" spacing={1.5} aria-label={accessibleName}>\n {title || showTypeSelector ? (\n <Stack\n direction={{ xs: \"column\", sm: \"row\" }}\n alignItems={{ xs: \"stretch\", sm: \"center\" }}\n justifyContent=\"space-between\"\n gap={1}\n >\n {title ? <Typography component=\"h2\" variant=\"h6\">{title}</Typography> : null}\n {showTypeSelector ? (\n <SharedTextField\n select\n size=\"small\"\n label={selectorLabel}\n value={activeType}\n onChange={(event) => {\n setSelectedType(event.target.value);\n onTypeChange?.(event.target.value);\n }}\n sx={{ minWidth: 160 }}\n >\n {selectableTypes.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </SharedTextField>\n ) : null}\n </Stack>\n ) : null}\n {description ? <Typography color=\"text.secondary\">{description}</Typography> : null}\n <FusionChart\n type={activeType}\n dataSource={dataSource}\n aria-label={accessibleName}\n {...chartProps}\n />\n {showDataTable ? (\n <details>\n <summary>{dataTableLabel}</summary>\n <table>\n <caption>{accessibleName}</caption>\n <thead><tr><th scope=\"col\">Label</th><th scope=\"col\">Value</th></tr></thead>\n <tbody>\n {items.map((item) => (\n <tr key={item.label}>\n <th scope=\"row\">{item.label}</th>\n <td>{item.displayValue ?? item.value}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </details>\n ) : null}\n </Stack>\n );\n}\n\nexport type CommonChartPresetProps = Omit<CommonChartProps, \"type\">;\n\nexport function CommonBarChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"bar2d\" {...props} />;\n}\nexport function CommonColumnChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"column2d\" {...props} />;\n}\nexport function LineChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"line\" {...props} />;\n}\nexport function AreaChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"area2d\" {...props} />;\n}\nexport function PieChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"pie2d\" {...props} />;\n}\nexport function CommonDoughnutChart(props: CommonChartPresetProps) {\n return <CommonChart type=\"doughnut2d\" {...props} />;\n}\n\nexport type CompatibleChartPresetProps =\n | CommonChartPresetProps\n | FusionChartPresetProps;\n\nfunction isRawPreset(\n props: CompatibleChartPresetProps,\n): props is FusionChartPresetProps {\n return \"dataSource\" in props;\n}\n\n/** Accepts both the legacy title/items contract and the raw dataSource contract. */\nexport function BarChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"bar2d\" {...props} />\n ) : (\n <CommonBarChart {...props} />\n );\n}\n\nexport function ColumnChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"column2d\" {...props} />\n ) : (\n <CommonColumnChart {...props} />\n );\n}\n\nexport const ChartColumn2D = ColumnChart;\n\nexport function DoughnutChart(props: CompatibleChartPresetProps) {\n return isRawPreset(props) ? (\n <FusionChart type=\"doughnut2d\" {...props} />\n ) : (\n <CommonDoughnutChart {...props} />\n );\n}\n"]}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var agGridCommunity = require('ag-grid-community');
|
|
4
|
+
var agGridReact = require('ag-grid-react');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var FunctionsIcon = require('@mui/icons-material/Functions');
|
|
8
|
+
var InfoOutlinedIcon = require('@mui/icons-material/InfoOutlined');
|
|
9
|
+
var Stack = require('@mui/material/Stack');
|
|
10
|
+
var Button = require('@mui/material/Button');
|
|
11
|
+
var IconButton = require('@mui/material/IconButton');
|
|
12
|
+
var Tooltip = require('@mui/material/Tooltip');
|
|
13
|
+
var styles = require('@mui/material/styles');
|
|
14
|
+
var Box = require('@mui/material/Box');
|
|
15
|
+
|
|
16
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
|
+
|
|
18
|
+
var FunctionsIcon__default = /*#__PURE__*/_interopDefault(FunctionsIcon);
|
|
19
|
+
var InfoOutlinedIcon__default = /*#__PURE__*/_interopDefault(InfoOutlinedIcon);
|
|
20
|
+
var Stack__default = /*#__PURE__*/_interopDefault(Stack);
|
|
21
|
+
var Button__default = /*#__PURE__*/_interopDefault(Button);
|
|
22
|
+
var IconButton__default = /*#__PURE__*/_interopDefault(IconButton);
|
|
23
|
+
var Tooltip__default = /*#__PURE__*/_interopDefault(Tooltip);
|
|
24
|
+
var Box__default = /*#__PURE__*/_interopDefault(Box);
|
|
25
|
+
|
|
26
|
+
// src/grids/ag-grid/CustomAgGrid.tsx
|
|
27
|
+
var DEFAULT_AG_GRID_MODULES = [agGridCommunity.AllCommunityModule];
|
|
28
|
+
function CustomGridTableComponent({
|
|
29
|
+
columns = [],
|
|
30
|
+
data = [],
|
|
31
|
+
totals = [],
|
|
32
|
+
loading = false,
|
|
33
|
+
enableSelection = false,
|
|
34
|
+
onSelect,
|
|
35
|
+
height = 500,
|
|
36
|
+
minHeight = 240,
|
|
37
|
+
defaultColDef,
|
|
38
|
+
pagination,
|
|
39
|
+
paginationPageSize = 25,
|
|
40
|
+
paginationPageSizeSelector = [5, 10, 25, 50, 75, 100],
|
|
41
|
+
getRowId,
|
|
42
|
+
modules = DEFAULT_AG_GRID_MODULES,
|
|
43
|
+
ariaLabel = "Data grid",
|
|
44
|
+
...gridProps
|
|
45
|
+
}) {
|
|
46
|
+
const resolvedDefaultColDef = react.useMemo(
|
|
47
|
+
() => ({
|
|
48
|
+
flex: 1,
|
|
49
|
+
minWidth: 160,
|
|
50
|
+
resizable: true,
|
|
51
|
+
sortable: true,
|
|
52
|
+
wrapText: true,
|
|
53
|
+
autoHeight: true,
|
|
54
|
+
...defaultColDef
|
|
55
|
+
}),
|
|
56
|
+
[defaultColDef]
|
|
57
|
+
);
|
|
58
|
+
const rowSelection = react.useMemo(
|
|
59
|
+
() => enableSelection ? {
|
|
60
|
+
mode: "multiRow",
|
|
61
|
+
checkboxes: true,
|
|
62
|
+
headerCheckbox: true,
|
|
63
|
+
enableClickSelection: false,
|
|
64
|
+
selectAll: "filtered"
|
|
65
|
+
} : void 0,
|
|
66
|
+
[enableSelection]
|
|
67
|
+
);
|
|
68
|
+
const enablePagination = pagination ?? data.length > 50;
|
|
69
|
+
const handleSelection = react.useCallback(
|
|
70
|
+
(event) => onSelect?.(event.api.getSelectedRows()),
|
|
71
|
+
[onSelect]
|
|
72
|
+
);
|
|
73
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
+
"div",
|
|
75
|
+
{
|
|
76
|
+
"aria-label": ariaLabel,
|
|
77
|
+
role: "region",
|
|
78
|
+
style: { width: "100%", height, minHeight },
|
|
79
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
+
agGridReact.AgGridReact,
|
|
81
|
+
{
|
|
82
|
+
modules,
|
|
83
|
+
rowData: [...data],
|
|
84
|
+
columnDefs: [...columns],
|
|
85
|
+
pinnedBottomRowData: [...totals],
|
|
86
|
+
defaultColDef: resolvedDefaultColDef,
|
|
87
|
+
loading,
|
|
88
|
+
pagination: enablePagination,
|
|
89
|
+
paginationPageSize,
|
|
90
|
+
paginationPageSizeSelector: [...paginationPageSizeSelector],
|
|
91
|
+
...rowSelection ? { rowSelection } : {},
|
|
92
|
+
onSelectionChanged: handleSelection,
|
|
93
|
+
animateRows: false,
|
|
94
|
+
suppressDragLeaveHidesColumns: true,
|
|
95
|
+
...getRowId ? { getRowId } : {},
|
|
96
|
+
...gridProps
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
var CustomGridTable = react.memo(
|
|
103
|
+
CustomGridTableComponent
|
|
104
|
+
);
|
|
105
|
+
var AgGridTable = CustomGridTable;
|
|
106
|
+
var colorOpacity = {
|
|
107
|
+
primary: "#1976d2",
|
|
108
|
+
secondary: "#9c27b0",
|
|
109
|
+
error: "#d32f2f",
|
|
110
|
+
warning: "#ed6c02",
|
|
111
|
+
info: "#0288d1",
|
|
112
|
+
success: "#2e7d32",
|
|
113
|
+
inherit: "#1976d2",
|
|
114
|
+
default: "#1976d2"
|
|
115
|
+
};
|
|
116
|
+
function accessibleText(children) {
|
|
117
|
+
let text = "";
|
|
118
|
+
react.Children.forEach(children, (child) => {
|
|
119
|
+
if (typeof child === "string" || typeof child === "number") {
|
|
120
|
+
text += String(child);
|
|
121
|
+
} else if (react.isValidElement(child)) {
|
|
122
|
+
text += accessibleText(child.props.children);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
return text.trim() || "Button";
|
|
126
|
+
}
|
|
127
|
+
function SharedButton({
|
|
128
|
+
children,
|
|
129
|
+
color = "primary",
|
|
130
|
+
variant,
|
|
131
|
+
disabled = false,
|
|
132
|
+
sx,
|
|
133
|
+
...props
|
|
134
|
+
}) {
|
|
135
|
+
const baseColor = colorOpacity[color] ?? colorOpacity.primary;
|
|
136
|
+
const customSx = variant === "outlined" && !disabled ? {
|
|
137
|
+
textTransform: "capitalize",
|
|
138
|
+
backgroundColor: `${baseColor}20`,
|
|
139
|
+
"&:hover": { backgroundColor: `${baseColor}35` },
|
|
140
|
+
...sx
|
|
141
|
+
} : { textTransform: "capitalize", ...sx };
|
|
142
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
143
|
+
Button__default.default,
|
|
144
|
+
{
|
|
145
|
+
"aria-label": props["aria-label"] ?? accessibleText(children),
|
|
146
|
+
color,
|
|
147
|
+
variant,
|
|
148
|
+
disabled,
|
|
149
|
+
sx: {
|
|
150
|
+
...customSx,
|
|
151
|
+
minWidth: "40px",
|
|
152
|
+
height: "40px",
|
|
153
|
+
padding: "6px",
|
|
154
|
+
borderRadius: "4px"
|
|
155
|
+
},
|
|
156
|
+
...props,
|
|
157
|
+
children
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
function inferIconLabel(children) {
|
|
162
|
+
if (!react.isValidElement(children)) return "Icon Button";
|
|
163
|
+
const type = children.type;
|
|
164
|
+
const name = type.displayName ?? type.name ?? "Icon Button";
|
|
165
|
+
return name.replace(/(Icon|Outlined|Filled|Rounded|Sharp|TwoTone)$/g, "").replace(/([a-z])([A-Z])/g, "$1 $2").toLowerCase();
|
|
166
|
+
}
|
|
167
|
+
function SharedIconButton({ children, ...props }) {
|
|
168
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
169
|
+
IconButton__default.default,
|
|
170
|
+
{
|
|
171
|
+
"aria-label": props["aria-label"] ?? inferIconLabel(children),
|
|
172
|
+
...props,
|
|
173
|
+
children
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
var LightTooltip = styles.styled(({ className, children, ...props }) => {
|
|
178
|
+
const disabled = react.isValidElement(children) && Boolean(children.props.disabled);
|
|
179
|
+
if (disabled) return /* @__PURE__ */ jsxRuntime.jsx("span", { children });
|
|
180
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Tooltip__default.default, { ...props, classes: className ? { popper: className } : void 0, children });
|
|
181
|
+
})(({ theme }) => ({
|
|
182
|
+
[`& .${Tooltip.tooltipClasses.tooltip}`]: {
|
|
183
|
+
backgroundColor: theme.palette.common.white,
|
|
184
|
+
color: "rgba(0, 0, 0, 0.87)",
|
|
185
|
+
boxShadow: theme.shadows[1],
|
|
186
|
+
fontSize: 14
|
|
187
|
+
}
|
|
188
|
+
}));
|
|
189
|
+
function CustomGridHeaderCellWithInfo({
|
|
190
|
+
displayName,
|
|
191
|
+
title,
|
|
192
|
+
info,
|
|
193
|
+
infoLabel = "Column information",
|
|
194
|
+
formula,
|
|
195
|
+
formulaLabel = "Column formula",
|
|
196
|
+
column,
|
|
197
|
+
enableSorting,
|
|
198
|
+
progressSort
|
|
199
|
+
}) {
|
|
200
|
+
const sort = column.getSort();
|
|
201
|
+
const headerTitle = title ?? displayName;
|
|
202
|
+
const sortLabel = sort ? `${String(headerTitle)}, sorted ${sort === "asc" ? "ascending" : "descending"}` : `${String(headerTitle)}, not sorted`;
|
|
203
|
+
const requestSort = (event) => {
|
|
204
|
+
if (enableSorting) progressSort(event.shiftKey);
|
|
205
|
+
};
|
|
206
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Stack__default.default, { direction: "row", alignItems: "center", spacing: 0.5, width: "100%", children: [
|
|
207
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
208
|
+
SharedButton,
|
|
209
|
+
{
|
|
210
|
+
variant: "text",
|
|
211
|
+
disabled: !enableSorting,
|
|
212
|
+
"aria-label": sortLabel,
|
|
213
|
+
onClick: requestSort,
|
|
214
|
+
sx: {
|
|
215
|
+
minWidth: 40,
|
|
216
|
+
px: 0.5,
|
|
217
|
+
color: "inherit",
|
|
218
|
+
fontWeight: 600,
|
|
219
|
+
justifyContent: "flex-start",
|
|
220
|
+
whiteSpace: "nowrap"
|
|
221
|
+
},
|
|
222
|
+
children: [
|
|
223
|
+
headerTitle,
|
|
224
|
+
sort === "asc" ? " \u25B2" : sort === "desc" ? " \u25BC" : ""
|
|
225
|
+
]
|
|
226
|
+
}
|
|
227
|
+
),
|
|
228
|
+
info ? /* @__PURE__ */ jsxRuntime.jsx(LightTooltip, { title: info, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx(SharedIconButton, { "aria-label": infoLabel, size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(InfoOutlinedIcon__default.default, { fontSize: "small" }) }) }) : null,
|
|
229
|
+
formula ? /* @__PURE__ */ jsxRuntime.jsx(LightTooltip, { title: formula, arrow: true, children: /* @__PURE__ */ jsxRuntime.jsx(SharedIconButton, { "aria-label": formulaLabel, size: "small", children: /* @__PURE__ */ jsxRuntime.jsx(FunctionsIcon__default.default, { fontSize: "small" }) }) }) : null
|
|
230
|
+
] });
|
|
231
|
+
}
|
|
232
|
+
function CustomGridTableWrapper({ children, sx, ...props }) {
|
|
233
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Box__default.default, { width: "100%", p: 1.5, mb: 0.5, sx, ...props, children });
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
exports.AgGridTable = AgGridTable;
|
|
237
|
+
exports.CustomGridHeaderCellWithInfo = CustomGridHeaderCellWithInfo;
|
|
238
|
+
exports.CustomGridTable = CustomGridTable;
|
|
239
|
+
exports.CustomGridTableComponent = CustomGridTableComponent;
|
|
240
|
+
exports.CustomGridTableWrapper = CustomGridTableWrapper;
|
|
241
|
+
//# sourceMappingURL=ag-grid.cjs.map
|
|
242
|
+
//# sourceMappingURL=ag-grid.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/grids/ag-grid/CustomAgGrid.tsx","../../src/buttons/SharedButton.tsx","../../src/buttons/SharedIconButton.tsx","../../src/feedback/LightTooltip.tsx","../../src/grids/ag-grid/CustomGridHeaderCellWithInfo.tsx","../../src/grids/ag-grid/CustomGridTableWrapper.tsx"],"names":["AllCommunityModule","useMemo","useCallback","jsx","AgGridReact","memo","Children","isValidElement","Button","IconButton","styled","Tooltip","tooltipClasses","jsxs","Stack","InfoOutlinedIcon","FunctionsIcon","Box"],"mappings":"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","file":"ag-grid.cjs","sourcesContent":["import type {\n ColDef,\n GetRowIdParams,\n Module,\n RowSelectionOptions,\n SelectionChangedEvent,\n} from \"ag-grid-community\";\nimport { AllCommunityModule } from \"ag-grid-community\";\nimport {\n AgGridReact,\n type AgGridReactProps,\n} from \"ag-grid-react\";\nimport { memo, useCallback, useMemo, type CSSProperties } from \"react\";\n\nconst DEFAULT_AG_GRID_MODULES: Module[] = [AllCommunityModule];\n\nexport interface CustomGridTableProps<Row extends object>\n extends Omit<\n AgGridReactProps<Row>,\n | \"columnDefs\"\n | \"rowData\"\n | \"pinnedBottomRowData\"\n | \"defaultColDef\"\n | \"onSelectionChanged\"\n | \"pagination\"\n | \"paginationPageSize\"\n | \"paginationPageSizeSelector\"\n | \"rowSelection\"\n | \"modules\"\n | \"getRowId\"\n > {\n columns?: readonly ColDef<Row>[];\n data?: readonly Row[];\n totals?: readonly Row[];\n loading?: boolean;\n enableSelection?: boolean;\n onSelect?: (rows: Row[]) => void;\n height?: CSSProperties[\"height\"];\n minHeight?: CSSProperties[\"minHeight\"];\n defaultColDef?: ColDef<Row>;\n pagination?: boolean;\n paginationPageSize?: number;\n paginationPageSizeSelector?: readonly number[];\n getRowId?: (params: GetRowIdParams<Row>) => string;\n modules?: Module[];\n ariaLabel?: string;\n}\n\n/**\n * Optional AG Grid Community wrapper. Import only from the ag-grid subpath so\n * regular shared-component consumers do not load AG Grid.\n */\nexport function CustomGridTableComponent<Row extends object>({\n columns = [],\n data = [],\n totals = [],\n loading = false,\n enableSelection = false,\n onSelect,\n height = 500,\n minHeight = 240,\n defaultColDef,\n pagination,\n paginationPageSize = 25,\n paginationPageSizeSelector = [5, 10, 25, 50, 75, 100],\n getRowId,\n modules = DEFAULT_AG_GRID_MODULES,\n ariaLabel = \"Data grid\",\n ...gridProps\n}: CustomGridTableProps<Row>) {\n const resolvedDefaultColDef = useMemo<ColDef<Row>>(\n () => ({\n flex: 1,\n minWidth: 160,\n resizable: true,\n sortable: true,\n wrapText: true,\n autoHeight: true,\n ...defaultColDef,\n }),\n [defaultColDef],\n );\n const rowSelection = useMemo<RowSelectionOptions<Row> | undefined>(\n () =>\n enableSelection\n ? {\n mode: \"multiRow\",\n checkboxes: true,\n headerCheckbox: true,\n enableClickSelection: false,\n selectAll: \"filtered\",\n }\n : undefined,\n [enableSelection],\n );\n const enablePagination = pagination ?? data.length > 50;\n const handleSelection = useCallback(\n (event: SelectionChangedEvent<Row>) => onSelect?.(event.api.getSelectedRows()),\n [onSelect],\n );\n\n return (\n <div\n aria-label={ariaLabel}\n role=\"region\"\n style={{ width: \"100%\", height, minHeight }}\n >\n <AgGridReact<Row>\n modules={modules}\n rowData={[...data]}\n columnDefs={[...columns]}\n pinnedBottomRowData={[...totals]}\n defaultColDef={resolvedDefaultColDef}\n loading={loading}\n pagination={enablePagination}\n paginationPageSize={paginationPageSize}\n paginationPageSizeSelector={[...paginationPageSizeSelector]}\n {...(rowSelection ? { rowSelection } : {})}\n onSelectionChanged={handleSelection}\n animateRows={false}\n suppressDragLeaveHidesColumns\n {...(getRowId ? { getRowId } : {})}\n {...gridProps}\n />\n </div>\n );\n}\n\nexport const CustomGridTable = memo(\n CustomGridTableComponent,\n) as typeof CustomGridTableComponent;\n\nexport const AgGridTable = CustomGridTable;\nexport default CustomGridTable;\n","import Button, { type ButtonProps } from \"@mui/material/Button\";\nimport { Children, isValidElement, type ReactNode } from \"react\";\n\nexport type SharedButtonProps = ButtonProps;\n\nconst colorOpacity: Record<string, string> = {\n primary: \"#1976d2\",\n secondary: \"#9c27b0\",\n error: \"#d32f2f\",\n warning: \"#ed6c02\",\n info: \"#0288d1\",\n success: \"#2e7d32\",\n inherit: \"#1976d2\",\n default: \"#1976d2\",\n};\n\nfunction accessibleText(children: ReactNode): string {\n let text = \"\";\n Children.forEach(children, (child) => {\n if (typeof child === \"string\" || typeof child === \"number\") {\n text += String(child);\n } else if (isValidElement<{ children?: ReactNode }>(child)) {\n text += accessibleText(child.props.children);\n }\n });\n return text.trim() || \"Button\";\n}\n\n/** A consistently sized MUI button with accessible defaults. */\nexport function SharedButton({\n children,\n color = \"primary\",\n variant,\n disabled = false,\n sx,\n ...props\n}: SharedButtonProps) {\n const baseColor = colorOpacity[color] ?? colorOpacity.primary;\n const customSx = variant === \"outlined\" && !disabled\n ? {\n textTransform: \"capitalize\",\n backgroundColor: `${baseColor}20`,\n \"&:hover\": { backgroundColor: `${baseColor}35` },\n ...sx,\n }\n : { textTransform: \"capitalize\", ...sx };\n\n return (\n <Button\n aria-label={props[\"aria-label\"] ?? accessibleText(children)}\n color={color}\n variant={variant}\n disabled={disabled}\n sx={{\n ...customSx,\n minWidth: \"40px\",\n height: \"40px\",\n padding: \"6px\",\n borderRadius: \"4px\",\n }}\n {...props}\n >\n {children}\n </Button>\n );\n}\n\n/** Visual-compatible version of the legacy `StyledButton` export. */\nexport function LegacyStyledButton({\n children,\n color = \"primary\",\n variant,\n disabled = false,\n sx,\n ...props\n}: SharedButtonProps) {\n const baseColor = colorOpacity[color] ?? colorOpacity.primary;\n const customSx = variant === \"outlined\" && !disabled\n ? {\n textTransform: \"capitalize\",\n backgroundColor: `${baseColor}20`,\n \"&:hover\": { backgroundColor: `${baseColor}35` },\n ...sx,\n }\n : { textTransform: \"capitalize\", ...sx };\n\n return (\n <Button\n aria-label={props[\"aria-label\"] ?? accessibleText(children)}\n color={color}\n variant={variant}\n disabled={disabled}\n sx={customSx}\n {...props}\n >\n {children}\n </Button>\n );\n}\n\nexport default SharedButton;\n","import IconButton, { type IconButtonProps } from \"@mui/material/IconButton\";\nimport { isValidElement, type ReactNode } from \"react\";\n\nexport interface SharedIconButtonProps extends IconButtonProps {\n \"aria-label\"?: string;\n}\n\nfunction inferIconLabel(children: ReactNode): string {\n if (!isValidElement(children)) return \"Icon Button\";\n const type = children.type as { displayName?: string; name?: string };\n const name = type.displayName ?? type.name ?? \"Icon Button\";\n return name\n .replace(/(Icon|Outlined|Filled|Rounded|Sharp|TwoTone)$/g, \"\")\n .replace(/([a-z])([A-Z])/g, \"$1 $2\")\n .toLowerCase();\n}\n\n/** Legacy-size icon button with an accessible-name fallback. */\nexport function SharedIconButton({ children, ...props }: SharedIconButtonProps) {\n return (\n <IconButton\n aria-label={props[\"aria-label\"] ?? inferIconLabel(children)}\n {...props}\n >\n {children}\n </IconButton>\n );\n}\n\nexport default SharedIconButton;\n","import Tooltip, { tooltipClasses, type TooltipProps } from \"@mui/material/Tooltip\";\nimport { styled } from \"@mui/material/styles\";\nimport { isValidElement } from \"react\";\n\n/** Visual-compatible version of the legacy shared-base light tooltip. */\nexport const LightTooltip = styled(({ className, children, ...props }: TooltipProps) => {\n const disabled = isValidElement<{ disabled?: boolean }>(children) && Boolean(children.props.disabled);\n\n if (disabled) return <span>{children}</span>;\n\n return (\n <Tooltip {...props} classes={className ? { popper: className } : undefined}>\n {children}\n </Tooltip>\n );\n})(({ theme }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: theme.palette.common.white,\n color: \"rgba(0, 0, 0, 0.87)\",\n boxShadow: theme.shadows[1],\n fontSize: 14,\n },\n}));\n\nexport const SharedTooltip = LightTooltip;\n","import FunctionsIcon from \"@mui/icons-material/Functions\";\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\nimport Stack from \"@mui/material/Stack\";\nimport type { IHeaderParams } from \"ag-grid-community\";\nimport type { KeyboardEvent, MouseEvent, ReactNode } from \"react\";\nimport { SharedButton } from \"../../buttons/SharedButton\";\nimport { SharedIconButton } from \"../../buttons/SharedIconButton\";\nimport { LightTooltip } from \"../../feedback/LightTooltip\";\n\nexport interface CustomGridHeaderCellWithInfoProps<Row = unknown>\n extends IHeaderParams<Row> {\n title?: ReactNode;\n info?: ReactNode;\n infoLabel?: string;\n formula?: ReactNode;\n formulaLabel?: string;\n}\n\n/** Accessible sortable AG Grid header with optional information and formula help. */\nexport function CustomGridHeaderCellWithInfo<Row = unknown>({\n displayName,\n title,\n info,\n infoLabel = \"Column information\",\n formula,\n formulaLabel = \"Column formula\",\n column,\n enableSorting,\n progressSort,\n}: CustomGridHeaderCellWithInfoProps<Row>) {\n const sort = column.getSort();\n const headerTitle = title ?? displayName;\n const sortLabel = sort\n ? `${String(headerTitle)}, sorted ${sort === \"asc\" ? \"ascending\" : \"descending\"}`\n : `${String(headerTitle)}, not sorted`;\n const requestSort = (event: MouseEvent | KeyboardEvent) => {\n if (enableSorting) progressSort(event.shiftKey);\n };\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5} width=\"100%\">\n <SharedButton\n variant=\"text\"\n disabled={!enableSorting}\n aria-label={sortLabel}\n onClick={requestSort}\n sx={{\n minWidth: 40,\n px: 0.5,\n color: \"inherit\",\n fontWeight: 600,\n justifyContent: \"flex-start\",\n whiteSpace: \"nowrap\",\n }}\n >\n {headerTitle}\n {sort === \"asc\" ? \" ▲\" : sort === \"desc\" ? \" ▼\" : \"\"}\n </SharedButton>\n {info ? (\n <LightTooltip title={info} arrow>\n <SharedIconButton aria-label={infoLabel} size=\"small\">\n <InfoOutlinedIcon fontSize=\"small\" />\n </SharedIconButton>\n </LightTooltip>\n ) : null}\n {formula ? (\n <LightTooltip title={formula} arrow>\n <SharedIconButton aria-label={formulaLabel} size=\"small\">\n <FunctionsIcon fontSize=\"small\" />\n </SharedIconButton>\n </LightTooltip>\n ) : null}\n </Stack>\n );\n}\n\nexport default CustomGridHeaderCellWithInfo;\n","import Box, { type BoxProps } from \"@mui/material/Box\";\n\nexport function CustomGridTableWrapper({ children, sx, ...props }: BoxProps) {\n return (\n <Box width=\"100%\" p={1.5} mb={0.5} sx={sx} {...props}>\n {children}\n </Box>\n );\n}\n\nexport default CustomGridTableWrapper;\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
3
|
+
import { ColDef, GetRowIdParams, Module, IHeaderParams } from 'ag-grid-community';
|
|
4
|
+
export { ColDef, ColGroupDef, GridApi, GridOptions, ICellRendererParams, IHeaderParams, RowSelectionOptions } from 'ag-grid-community';
|
|
5
|
+
import { AgGridReactProps } from 'ag-grid-react';
|
|
6
|
+
import { BoxProps } from '@mui/material/Box';
|
|
7
|
+
|
|
8
|
+
interface CustomGridTableProps<Row extends object> extends Omit<AgGridReactProps<Row>, "columnDefs" | "rowData" | "pinnedBottomRowData" | "defaultColDef" | "onSelectionChanged" | "pagination" | "paginationPageSize" | "paginationPageSizeSelector" | "rowSelection" | "modules" | "getRowId"> {
|
|
9
|
+
columns?: readonly ColDef<Row>[];
|
|
10
|
+
data?: readonly Row[];
|
|
11
|
+
totals?: readonly Row[];
|
|
12
|
+
loading?: boolean;
|
|
13
|
+
enableSelection?: boolean;
|
|
14
|
+
onSelect?: (rows: Row[]) => void;
|
|
15
|
+
height?: CSSProperties["height"];
|
|
16
|
+
minHeight?: CSSProperties["minHeight"];
|
|
17
|
+
defaultColDef?: ColDef<Row>;
|
|
18
|
+
pagination?: boolean;
|
|
19
|
+
paginationPageSize?: number;
|
|
20
|
+
paginationPageSizeSelector?: readonly number[];
|
|
21
|
+
getRowId?: (params: GetRowIdParams<Row>) => string;
|
|
22
|
+
modules?: Module[];
|
|
23
|
+
ariaLabel?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Optional AG Grid Community wrapper. Import only from the ag-grid subpath so
|
|
27
|
+
* regular shared-component consumers do not load AG Grid.
|
|
28
|
+
*/
|
|
29
|
+
declare function CustomGridTableComponent<Row extends object>({ columns, data, totals, loading, enableSelection, onSelect, height, minHeight, defaultColDef, pagination, paginationPageSize, paginationPageSizeSelector, getRowId, modules, ariaLabel, ...gridProps }: CustomGridTableProps<Row>): React.JSX.Element;
|
|
30
|
+
declare const CustomGridTable: typeof CustomGridTableComponent;
|
|
31
|
+
declare const AgGridTable: typeof CustomGridTableComponent;
|
|
32
|
+
|
|
33
|
+
interface CustomGridHeaderCellWithInfoProps<Row = unknown> extends IHeaderParams<Row> {
|
|
34
|
+
title?: ReactNode;
|
|
35
|
+
info?: ReactNode;
|
|
36
|
+
infoLabel?: string;
|
|
37
|
+
formula?: ReactNode;
|
|
38
|
+
formulaLabel?: string;
|
|
39
|
+
}
|
|
40
|
+
/** Accessible sortable AG Grid header with optional information and formula help. */
|
|
41
|
+
declare function CustomGridHeaderCellWithInfo<Row = unknown>({ displayName, title, info, infoLabel, formula, formulaLabel, column, enableSorting, progressSort, }: CustomGridHeaderCellWithInfoProps<Row>): React.JSX.Element;
|
|
42
|
+
|
|
43
|
+
declare function CustomGridTableWrapper({ children, sx, ...props }: BoxProps): React.JSX.Element;
|
|
44
|
+
|
|
45
|
+
export { AgGridTable, CustomGridHeaderCellWithInfo, type CustomGridHeaderCellWithInfoProps, CustomGridTable, CustomGridTableComponent, type CustomGridTableProps, CustomGridTableWrapper };
|