@chainsys/sab-react-grid 1.0.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 +21 -0
- package/README.md +234 -0
- package/dist/cjs/SabReactTable.js +1192 -0
- package/dist/cjs/SabReactTable.js.map +1 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/utils/exportUtils.js +85 -0
- package/dist/cjs/utils/exportUtils.js.map +1 -0
- package/dist/cjs/utils/tableColumnResizeUtils.js +153 -0
- package/dist/cjs/utils/tableColumnResizeUtils.js.map +1 -0
- package/dist/cjs/utils/tableFormatters.js +239 -0
- package/dist/cjs/utils/tableFormatters.js.map +1 -0
- package/dist/esm/SabReactTable.d.ts +46 -0
- package/dist/esm/SabReactTable.d.ts.map +1 -0
- package/dist/esm/SabReactTable.js +1163 -0
- package/dist/esm/SabReactTable.js.map +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/utils/exportUtils.d.ts +17 -0
- package/dist/esm/utils/exportUtils.d.ts.map +1 -0
- package/dist/esm/utils/exportUtils.js +78 -0
- package/dist/esm/utils/exportUtils.js.map +1 -0
- package/dist/esm/utils/tableColumnResizeUtils.d.ts +21 -0
- package/dist/esm/utils/tableColumnResizeUtils.d.ts.map +1 -0
- package/dist/esm/utils/tableColumnResizeUtils.js +148 -0
- package/dist/esm/utils/tableColumnResizeUtils.js.map +1 -0
- package/dist/esm/utils/tableFormatters.d.ts +57 -0
- package/dist/esm/utils/tableFormatters.d.ts.map +1 -0
- package/dist/esm/utils/tableFormatters.js +231 -0
- package/dist/esm/utils/tableFormatters.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ActionIcons = exports.ACTION_ICON_KEYS = void 0;
|
|
4
|
+
exports.isIsoDateLike = isIsoDateLike;
|
|
5
|
+
exports.formatDateValue = formatDateValue;
|
|
6
|
+
exports.renderDateCell = renderDateCell;
|
|
7
|
+
exports.DataFormatter = DataFormatter;
|
|
8
|
+
exports.ActionFormatter = ActionFormatter;
|
|
9
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
10
|
+
const date_fns_1 = require("date-fns");
|
|
11
|
+
/** Built-in icon keys for actions; use these in action config (e.g. from JSON) or pass custom ReactNode */
|
|
12
|
+
exports.ACTION_ICON_KEYS = ['View', 'Edit', 'Delete', 'Add', 'List'];
|
|
13
|
+
/** Detect if value looks like an ISO date/datetime string so we never show raw "YYYY-MM-DDTHH:mm:ss" in the grid */
|
|
14
|
+
function isIsoDateLike(value) {
|
|
15
|
+
if (value === null || value === undefined)
|
|
16
|
+
return false;
|
|
17
|
+
const s = String(value).trim();
|
|
18
|
+
return /^\d{4}-\d{2}-\d{2}(T|\s)\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:?\d{2})?$/i.test(s) || /^\d{4}-\d{2}-\d{2}$/.test(s);
|
|
19
|
+
}
|
|
20
|
+
/** Parse value to Date; returns null if invalid */
|
|
21
|
+
function parseDate(value) {
|
|
22
|
+
if (value === null || value === undefined || value === '')
|
|
23
|
+
return null;
|
|
24
|
+
const d = new Date(value);
|
|
25
|
+
return isNaN(d.getTime()) ? null : d;
|
|
26
|
+
}
|
|
27
|
+
const DEFAULT_DATE_FORMAT = 'DD/MM/YYYY';
|
|
28
|
+
const DEFAULT_DATETIME_FORMAT = 'DD/MM/YYYY HH:mm';
|
|
29
|
+
const DEFAULT_TIME_FORMAT = 'HH:mm';
|
|
30
|
+
/** Convert user pattern (DD/MM/YYYY HH:mm) to date-fns pattern (dd/MM/yyyy HH:mm). date-fns uses dd=day of month, d=day; yyyy/yy=year; MM/M=month; HH/H=24h; mm/m=minute; ss/s=second. Order: longest first. */
|
|
31
|
+
function toDateFnsPattern(userPattern) {
|
|
32
|
+
return userPattern
|
|
33
|
+
.replace(/YYYY/g, 'yyyy')
|
|
34
|
+
.replace(/YY/g, 'yy')
|
|
35
|
+
.replace(/DD/g, 'dd')
|
|
36
|
+
.replace(/\bD\b/g, 'd');
|
|
37
|
+
}
|
|
38
|
+
/** Format a Date using a pattern string. Tokens: YYYY, YY, MM, M, DD, D, HH, H, mm, m, ss, s (fallback when date-fns not used or pattern invalid). */
|
|
39
|
+
function formatDateByPattern(date, pattern) {
|
|
40
|
+
const Y = date.getFullYear();
|
|
41
|
+
const M = date.getMonth() + 1;
|
|
42
|
+
const D = date.getDate();
|
|
43
|
+
const H = date.getHours();
|
|
44
|
+
const m = date.getMinutes();
|
|
45
|
+
const s = date.getSeconds();
|
|
46
|
+
const parts = [
|
|
47
|
+
['YYYY', String(Y).padStart(4, '0')],
|
|
48
|
+
['YY', String(Y).slice(-2)],
|
|
49
|
+
['MM', String(M).padStart(2, '0')],
|
|
50
|
+
['DD', String(D).padStart(2, '0')],
|
|
51
|
+
['HH', String(H).padStart(2, '0')],
|
|
52
|
+
['mm', String(m).padStart(2, '0')],
|
|
53
|
+
['ss', String(s).padStart(2, '0')],
|
|
54
|
+
['M', String(M)],
|
|
55
|
+
['D', String(D)],
|
|
56
|
+
['H', String(H)],
|
|
57
|
+
['m', String(m)],
|
|
58
|
+
['s', String(s)],
|
|
59
|
+
];
|
|
60
|
+
let out = pattern;
|
|
61
|
+
for (const [token, value] of parts) {
|
|
62
|
+
out = out.split(token).join(value);
|
|
63
|
+
}
|
|
64
|
+
return out;
|
|
65
|
+
}
|
|
66
|
+
/** Format date/datetime/time for display. Uses date-fns with user format from column meta; falls back to built-in pattern. Never returns raw ISO (no T). */
|
|
67
|
+
function formatDateValue(value, mode, options) {
|
|
68
|
+
const date = parseDate(value);
|
|
69
|
+
if (!date)
|
|
70
|
+
return null;
|
|
71
|
+
const userPattern = options
|
|
72
|
+
? (mode === 'date'
|
|
73
|
+
? (options.dateFormat ?? DEFAULT_DATE_FORMAT)
|
|
74
|
+
: mode === 'time'
|
|
75
|
+
? (options.timeFormat ?? DEFAULT_TIME_FORMAT)
|
|
76
|
+
: (options.datetimeFormat ?? options.dateFormat ?? DEFAULT_DATETIME_FORMAT))
|
|
77
|
+
: (mode === 'date'
|
|
78
|
+
? DEFAULT_DATE_FORMAT
|
|
79
|
+
: mode === 'time'
|
|
80
|
+
? DEFAULT_TIME_FORMAT
|
|
81
|
+
: DEFAULT_DATETIME_FORMAT);
|
|
82
|
+
try {
|
|
83
|
+
const dateFnsPattern = toDateFnsPattern(userPattern);
|
|
84
|
+
return (0, date_fns_1.format)(date, dateFnsPattern);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return formatDateByPattern(date, userPattern);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const dateTimePillStyle = {
|
|
91
|
+
padding: '2px 8px',
|
|
92
|
+
borderRadius: '12px',
|
|
93
|
+
fontWeight: 600,
|
|
94
|
+
fontSize: '11px',
|
|
95
|
+
display: 'inline-block',
|
|
96
|
+
whiteSpace: 'nowrap'
|
|
97
|
+
};
|
|
98
|
+
/** Wrapper so date/datetime/time cells align right like number/currency */
|
|
99
|
+
const dateTimeWrapperStyle = {
|
|
100
|
+
width: '100%',
|
|
101
|
+
textAlign: 'right'
|
|
102
|
+
};
|
|
103
|
+
/** Render date/datetime/time cell from column meta (for use in table when column has dataType + formatOptions). Never shows raw ISO. */
|
|
104
|
+
function renderDateCell(value, mode, formatOptions) {
|
|
105
|
+
const formatted = formatDateValue(value, mode, formatOptions);
|
|
106
|
+
if (formatted == null)
|
|
107
|
+
return renderers.text(value);
|
|
108
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: dateTimeWrapperStyle, children: (0, jsx_runtime_1.jsx)("span", { className: "slick-date-pill", title: formatted, style: dateTimePillStyle, children: formatted }) }));
|
|
109
|
+
}
|
|
110
|
+
const renderers = {
|
|
111
|
+
text: (value) => {
|
|
112
|
+
if (value === null || value === undefined || value === '')
|
|
113
|
+
return (0, jsx_runtime_1.jsx)("span", { style: { color: '#94a3b8', fontStyle: 'italic' }, children: "-" });
|
|
114
|
+
return (0, jsx_runtime_1.jsx)("span", { title: String(value), style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', display: 'inline-block', width: '100%' }, children: String(value) });
|
|
115
|
+
},
|
|
116
|
+
number: (value, decimals = 0) => {
|
|
117
|
+
const val = Number(value);
|
|
118
|
+
if (value === null || value === undefined || isNaN(val))
|
|
119
|
+
return (0, jsx_runtime_1.jsx)("span", { style: { color: '#94a3b8' }, children: (0).toFixed(decimals) });
|
|
120
|
+
const formatted = val.toLocaleString(undefined, { minimumFractionDigits: decimals, maximumFractionDigits: decimals });
|
|
121
|
+
return (0, jsx_runtime_1.jsx)("span", { title: formatted, children: formatted });
|
|
122
|
+
},
|
|
123
|
+
currency: (value, symbol = '$', decimals = 2) => {
|
|
124
|
+
if (value === null || value === undefined || isNaN(Number(value)))
|
|
125
|
+
return (0, jsx_runtime_1.jsxs)("span", { style: { color: '#94a3b8' }, children: [symbol, (0).toFixed(decimals)] });
|
|
126
|
+
const formatted = Number(value).toLocaleString(undefined, { minimumFractionDigits: decimals, maximumFractionDigits: decimals });
|
|
127
|
+
return ((0, jsx_runtime_1.jsxs)("span", { style: { fontWeight: 600, color: '#0f172a' }, title: `${symbol}${formatted}`, children: [(0, jsx_runtime_1.jsx)("small", { style: { marginRight: '2px', color: '#64748b' }, children: symbol }), formatted] }));
|
|
128
|
+
},
|
|
129
|
+
boolean: (value, useIcon = false) => {
|
|
130
|
+
const isTrue = !!value;
|
|
131
|
+
if (useIcon) {
|
|
132
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', justifyContent: 'center' }, children: isTrue ? ((0, jsx_runtime_1.jsx)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "#10b981", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: (0, jsx_runtime_1.jsx)("polyline", { points: "20 6 9 17 4 12" }) })) : ((0, jsx_runtime_1.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "#e11d48", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), (0, jsx_runtime_1.jsx)("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] })) }));
|
|
133
|
+
}
|
|
134
|
+
return ((0, jsx_runtime_1.jsx)("span", { style: {
|
|
135
|
+
padding: '2px 8px', borderRadius: '12px', fontSize: '11px', fontWeight: 700, textTransform: 'uppercase',
|
|
136
|
+
background: isTrue ? '#ecfdf5' : '#fff1f2', color: isTrue ? '#10b981' : '#e11d48', border: `1px solid ${isTrue ? '#d1fae5' : '#ffe4e6'}`, display: 'inline-block'
|
|
137
|
+
}, children: isTrue ? 'Yes' : 'No' }));
|
|
138
|
+
},
|
|
139
|
+
email: (value) => {
|
|
140
|
+
if (!value)
|
|
141
|
+
return renderers.text(null);
|
|
142
|
+
return (0, jsx_runtime_1.jsx)("a", { href: `mailto:${value}`, className: "slick-email-link", onClick: (e) => e.stopPropagation(), style: { color: '#3b82f6', textDecoration: 'none', fontWeight: 500 }, children: String(value) });
|
|
143
|
+
},
|
|
144
|
+
date: (value, formatOpts) => {
|
|
145
|
+
const formatted = formatDateValue(value, 'date', formatOpts);
|
|
146
|
+
if (formatted == null)
|
|
147
|
+
return renderers.text(value);
|
|
148
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: dateTimeWrapperStyle, children: (0, jsx_runtime_1.jsx)("span", { className: "slick-date-pill", title: formatted, style: dateTimePillStyle, children: formatted }) }));
|
|
149
|
+
},
|
|
150
|
+
datetime: (value, formatOpts) => {
|
|
151
|
+
const formatted = formatDateValue(value, 'datetime', formatOpts);
|
|
152
|
+
if (formatted == null)
|
|
153
|
+
return renderers.text(value);
|
|
154
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: dateTimeWrapperStyle, children: (0, jsx_runtime_1.jsx)("span", { className: "slick-date-pill", title: formatted, style: dateTimePillStyle, children: formatted }) }));
|
|
155
|
+
},
|
|
156
|
+
time: (value, formatOpts) => {
|
|
157
|
+
const formatted = formatDateValue(value, 'time', formatOpts);
|
|
158
|
+
if (formatted == null)
|
|
159
|
+
return renderers.text(value);
|
|
160
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: dateTimeWrapperStyle, children: (0, jsx_runtime_1.jsx)("span", { className: "slick-date-pill", title: formatted, style: dateTimePillStyle, children: formatted }) }));
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Format cell value by dataType. Pass overrideMeta (e.g. from columnMetaById) as second arg so
|
|
165
|
+
* formatOptions from the original column meta are always applied.
|
|
166
|
+
*/
|
|
167
|
+
function DataFormatter(context, overrideMeta) {
|
|
168
|
+
const { column, getValue } = context;
|
|
169
|
+
const meta = (overrideMeta ?? column.columnDef.meta);
|
|
170
|
+
const dataType = meta?.dataType || 'text';
|
|
171
|
+
const opt = meta?.formatOptions || {};
|
|
172
|
+
const val = getValue();
|
|
173
|
+
const dateFormatOpts = {
|
|
174
|
+
dateFormat: opt.dateFormat,
|
|
175
|
+
datetimeFormat: opt.datetimeFormat,
|
|
176
|
+
timeFormat: opt.timeFormat,
|
|
177
|
+
};
|
|
178
|
+
switch (dataType) {
|
|
179
|
+
case 'number': return renderers.number(val, 0);
|
|
180
|
+
case 'decimal': return renderers.number(val, opt.decimals ?? 2);
|
|
181
|
+
case 'currency': return renderers.currency(val, opt.currencySymbol ?? '$', opt.decimals ?? 2);
|
|
182
|
+
case 'email': return renderers.email(val);
|
|
183
|
+
case 'boolean': return renderers.boolean(val, false);
|
|
184
|
+
case 'icon-boolean': return renderers.boolean(val, true);
|
|
185
|
+
case 'date': return renderers.date(val, dateFormatOpts);
|
|
186
|
+
case 'datetime': return renderers.datetime(val, dateFormatOpts);
|
|
187
|
+
case 'time': return renderers.time(val, dateFormatOpts);
|
|
188
|
+
case 'percentage': return (0, jsx_runtime_1.jsxs)("span", { children: [Number(Number(val || 0) * 100).toLocaleString(undefined, { minimumFractionDigits: opt.decimals ?? 2, maximumFractionDigits: opt.decimals ?? 2 }), "%"] });
|
|
189
|
+
default:
|
|
190
|
+
// Fallback: if value looks like ISO date/datetime, format it so we don't show raw "2024-01-15T09:30:00"
|
|
191
|
+
if (isIsoDateLike(val))
|
|
192
|
+
return renderers.datetime(val, dateFormatOpts);
|
|
193
|
+
return renderers.text(val);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/** Normalise icon key from JSON (e.g. "view" -> "View") so action JSON can use lowercase keys. */
|
|
197
|
+
function toActionIconKey(s) {
|
|
198
|
+
const key = (s && s.length) ? (s[0].toUpperCase() + s.slice(1).toLowerCase()) : null;
|
|
199
|
+
return key && exports.ACTION_ICON_KEYS.includes(key) ? key : null;
|
|
200
|
+
}
|
|
201
|
+
function resolveIcon(icon) {
|
|
202
|
+
if (icon === undefined)
|
|
203
|
+
return null;
|
|
204
|
+
if (typeof icon === 'string') {
|
|
205
|
+
const key = ActionIconsMap[icon] ? icon : toActionIconKey(icon);
|
|
206
|
+
if (key && ActionIconsMap[key])
|
|
207
|
+
return ActionIconsMap[key];
|
|
208
|
+
}
|
|
209
|
+
return icon;
|
|
210
|
+
}
|
|
211
|
+
function ActionFormatter(context, onActionClick) {
|
|
212
|
+
const { column, row } = context;
|
|
213
|
+
const actions = column.columnDef.meta?.actions || [];
|
|
214
|
+
if (!actions.length)
|
|
215
|
+
return null;
|
|
216
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "slick-actions-cell", children: actions.map((action, idx) => {
|
|
217
|
+
if (action.show && !action.show(row.original))
|
|
218
|
+
return null;
|
|
219
|
+
const actionId = action.id ?? action.label ?? String(idx);
|
|
220
|
+
const handleClick = (e) => {
|
|
221
|
+
e.stopPropagation();
|
|
222
|
+
if (onActionClick)
|
|
223
|
+
onActionClick(actionId, row.original, action);
|
|
224
|
+
else if (action.onClick)
|
|
225
|
+
action.onClick(row.original);
|
|
226
|
+
};
|
|
227
|
+
const btnTitle = action.label ?? action.id ?? 'Action';
|
|
228
|
+
return ((0, jsx_runtime_1.jsxs)("button", { title: btnTitle, onClick: handleClick, className: `slick-row-action-btn ${action.className || ''}`, children: [resolveIcon(action.icon), (action.label != null && action.label !== '') && (0, jsx_runtime_1.jsx)("span", { children: action.label })] }, idx));
|
|
229
|
+
}) }));
|
|
230
|
+
}
|
|
231
|
+
const ActionIconsMap = {
|
|
232
|
+
View: (0, jsx_runtime_1.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), (0, jsx_runtime_1.jsx)("circle", { cx: "12", cy: "12", r: "3" })] }),
|
|
233
|
+
Edit: (0, jsx_runtime_1.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("path", { d: "M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7" }), (0, jsx_runtime_1.jsx)("path", { d: "M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z" })] }),
|
|
234
|
+
Delete: (0, jsx_runtime_1.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("polyline", { points: "3 6 5 6 21 6" }), (0, jsx_runtime_1.jsx)("path", { d: "M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2" }), (0, jsx_runtime_1.jsx)("line", { x1: "10", y1: "11", x2: "10", y2: "17" }), (0, jsx_runtime_1.jsx)("line", { x1: "14", y1: "11", x2: "14", y2: "17" })] }),
|
|
235
|
+
Add: (0, jsx_runtime_1.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("line", { x1: "12", y1: "5", x2: "12", y2: "19" }), (0, jsx_runtime_1.jsx)("line", { x1: "5", y1: "12", x2: "19", y2: "12" })] }),
|
|
236
|
+
List: (0, jsx_runtime_1.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", children: [(0, jsx_runtime_1.jsx)("line", { x1: "8", y1: "6", x2: "21", y2: "6" }), (0, jsx_runtime_1.jsx)("line", { x1: "8", y1: "12", x2: "21", y2: "12" }), (0, jsx_runtime_1.jsx)("line", { x1: "8", y1: "18", x2: "21", y2: "18" }), (0, jsx_runtime_1.jsx)("line", { x1: "3", y1: "6", x2: "3.01", y2: "6" }), (0, jsx_runtime_1.jsx)("line", { x1: "3", y1: "12", x2: "3.01", y2: "12" }), (0, jsx_runtime_1.jsx)("line", { x1: "3", y1: "18", x2: "3.01", y2: "18" })] })
|
|
237
|
+
};
|
|
238
|
+
exports.ActionIcons = { ...ActionIconsMap };
|
|
239
|
+
//# sourceMappingURL=tableFormatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableFormatters.js","sourceRoot":"","sources":["../../../src/utils/tableFormatters.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type ColumnDef, type RowData } from '@tanstack/react-table';
|
|
2
|
+
import "flatpickr/dist/themes/material_green.css";
|
|
3
|
+
declare module '@tanstack/react-table' {
|
|
4
|
+
interface ColumnMeta<TData extends RowData, TValue> {
|
|
5
|
+
headerClassName?: string;
|
|
6
|
+
cellClassName?: string;
|
|
7
|
+
filterType?: 'text' | 'select' | 'multiselect' | 'checkbox' | 'boolean' | 'date' | 'number' | 'dropdown' | 'radio';
|
|
8
|
+
filterOptions?: {
|
|
9
|
+
label: string;
|
|
10
|
+
value: any;
|
|
11
|
+
}[];
|
|
12
|
+
id?: string;
|
|
13
|
+
dataType?: 'text' | 'number' | 'decimal' | 'currency' | 'email' | 'boolean' | 'date' | 'datetime' | 'time' | 'percentage' | 'icon-boolean';
|
|
14
|
+
formatOptions?: {
|
|
15
|
+
decimals?: number;
|
|
16
|
+
currencySymbol?: string;
|
|
17
|
+
/** Date display pattern (e.g. "DD/MM/YYYY", "YYYY-MM-DD"). Tokens: YYYY, YY, MM, M, DD, D */
|
|
18
|
+
dateFormat?: string;
|
|
19
|
+
/** Datetime display pattern (e.g. "DD/MM/YYYY HH:mm"). Tokens: + HH, H, mm, m, ss, s */
|
|
20
|
+
datetimeFormat?: string;
|
|
21
|
+
/** Time display pattern (e.g. "HH:mm", "HH:mm:ss"). Tokens: HH, H, mm, m, ss, s */
|
|
22
|
+
timeFormat?: string;
|
|
23
|
+
};
|
|
24
|
+
actions?: import('./utils/tableFormatters').TableAction[];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export type LayoutMode = 'fit-default' | 'fit-window' | 'fit-content';
|
|
28
|
+
/** Common callback when an action is clicked; receives action id, row, and full action config (e.g. navigate). */
|
|
29
|
+
export type OnActionClickHandler<TData> = (actionId: string, row: TData, action: import('./utils/tableFormatters').TableAction) => void;
|
|
30
|
+
export interface SabReactTableProps<TData> {
|
|
31
|
+
data: TData[];
|
|
32
|
+
columns: ColumnDef<TData, any>[];
|
|
33
|
+
title?: string;
|
|
34
|
+
onSortedDataChange?: (rows: TData[]) => void;
|
|
35
|
+
defaultPageSize?: number;
|
|
36
|
+
pageSizeOptions?: number[];
|
|
37
|
+
groupingLabels?: Record<string, string>;
|
|
38
|
+
/** Row click callback (e.g. navigate to detail). */
|
|
39
|
+
onRowClick?: (row: TData) => void;
|
|
40
|
+
/** Common action callback: (actionId, row, action). Use action.navigate or action.id to route. */
|
|
41
|
+
onActionClick?: OnActionClickHandler<TData>;
|
|
42
|
+
/** Initial layout mode. Default 'fit-content' so table loads with content-based column widths. */
|
|
43
|
+
initialLayoutMode?: LayoutMode;
|
|
44
|
+
}
|
|
45
|
+
export declare function SabReactTable<TData>({ data, columns, title, onSortedDataChange, defaultPageSize, pageSizeOptions, groupingLabels, onRowClick, onActionClick, initialLayoutMode }: SabReactTableProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
//# sourceMappingURL=SabReactTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SabReactTable.d.ts","sourceRoot":"","sources":["../../src/SabReactTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EASH,KAAK,SAAS,EASd,KAAK,OAAO,EAMf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,0CAA0C,CAAC;AAElD,OAAO,QAAQ,uBAAuB,CAAC;IACnC,UAAU,UAAU,CAAC,KAAK,SAAS,OAAO,EAAE,MAAM;QAC9C,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAA;QAClH,aAAa,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,GAAG,CAAA;SAAE,EAAE,CAAA;QAC/C,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,cAAc,CAAA;QAC1I,aAAa,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAA;YACjB,cAAc,CAAC,EAAE,MAAM,CAAA;YACvB,6FAA6F;YAC7F,UAAU,CAAC,EAAE,MAAM,CAAA;YACnB,wFAAwF;YACxF,cAAc,CAAC,EAAE,MAAM,CAAA;YACvB,mFAAmF;YACnF,UAAU,CAAC,EAAE,MAAM,CAAA;SACtB,CAAA;QACD,OAAO,CAAC,EAAE,OAAO,yBAAyB,EAAE,WAAW,EAAE,CAAA;KAC5D;CACJ;AA43BD,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,CAAA;AAErE,kHAAkH;AAClH,MAAM,MAAM,oBAAoB,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,yBAAyB,EAAE,WAAW,KAAK,IAAI,CAAA;AAEvI,MAAM,WAAW,kBAAkB,CAAC,KAAK;IACrC,IAAI,EAAE,KAAK,EAAE,CAAA;IACb,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,CAAA;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;IACjC,kGAAkG;IAClG,aAAa,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAC3C,kGAAkG;IAClG,iBAAiB,CAAC,EAAE,UAAU,CAAA;CACjC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,EACjC,IAAI,EAAE,OAAO,EAAE,KAAoB,EAAE,kBAAkB,EACvD,eAAoB,EAAE,eAA8C,EAAE,cAAmB,EAAE,UAAU,EAAE,aAAa,EACpH,iBAAiC,EACpC,EAAE,kBAAkB,CAAC,KAAK,CAAC,2CAq1B3B"}
|