@asteby/metacore-runtime-react 28.0.1 → 28.0.3
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/CHANGELOG.md +15 -0
- package/dist/dynamic-columns.d.ts.map +1 -1
- package/dist/dynamic-columns.js +26 -3
- package/dist/dynamic-table.d.ts.map +1 -1
- package/dist/dynamic-table.js +1 -1
- package/package.json +1 -1
- package/src/dynamic-columns.tsx +39 -10
- package/src/dynamic-table.tsx +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @asteby/metacore-runtime-react
|
|
2
2
|
|
|
3
|
+
## 28.0.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 6c99099: DynamicTable: columnas currency con moneda POR FILA — `display_config.currency_field`
|
|
8
|
+
nombra la columna hermana que trae el código ISO del monto de esa fila (tablas
|
|
9
|
+
multi-moneda: un pago en Bs ya no se renderiza como USD de la org). Código no-ISO
|
|
10
|
+
se prefija verbatim en vez de reventar el Intl.NumberFormat.
|
|
11
|
+
|
|
12
|
+
## 28.0.2
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- ab08084: DynamicTable: las cards móviles ya no desbordan el viewport cuando una celda contiene badges largos — el valor de cada fila se contiene con `overflow-hidden` y los badges internos pueden envolver a multilínea (`max-w-full` + `whitespace-normal`) en vez de empujar el ancho de toda la página.
|
|
17
|
+
|
|
3
18
|
## 28.0.1
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-columns.d.ts","sourceRoot":"","sources":["../src/dynamic-columns.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAwC9C,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE9D,OAAO,KAAK,EAER,iBAAiB,EACpB,MAAM,wBAAwB,CAAA;AAE/B,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACtC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AA0BD;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,gBAAgB,EAAE,cAAc,MAAM,KAAG,MACzB,CAAA;AAQrD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,gBAAgB,KAAG,MAAM,GAAG,SAG5D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAC7B,KAAK,gBAAgB,EACrB,OAAO,OAAO,EACd,WAAW,MAAM,EACjB,SAAS,MAAM,KAChB,MAyBF,CAAA;AAyCD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,GAAI,QAAQ,GAAG,EAAE,KAAK,GAAG,KAAG,OAMlE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,GAAG,EAAE,KAAK,GAAG,KAAG,OAiB5D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,GAAG,EAAE,KAAK,GAAG,KAAG,OACqB,CAAA;AAwFhF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAG,MAGnE,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,eAAe,2DAA4D,CAAA;AAExF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC1B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6C5C;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,gBAAgB,EAAE,KAAK,GAAG,KAAG,MAWtE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,gBAAgB,EAAE,KAAK,GAAG,KAAG,MAOtE,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,GACzB,KAAK,gBAAgB,EACrB,KAAK,GAAG,EACR,OAAO,GAAG,EACV,mBAAe,KAChB,MAAM,GAAG,SAcX,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,KAAK,gBAAgB,EAAE,KAAK,GAAG,KAAG,MAOzE,CAAA;AA+ID;;;;GAIG;AACH,wBAAgB,4BAA4B,CACxC,OAAO,GAAE,qBAA0B,GACpC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"dynamic-columns.d.ts","sourceRoot":"","sources":["../src/dynamic-columns.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,UAAU,CAAA;AAwC9C,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE9D,OAAO,KAAK,EAER,iBAAiB,EACpB,MAAM,wBAAwB,CAAA;AAE/B,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IAClC;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACtC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AA0BD;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,gBAAgB,EAAE,cAAc,MAAM,KAAG,MACzB,CAAA;AAQrD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,gBAAgB,KAAG,MAAM,GAAG,SAG5D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAC7B,KAAK,gBAAgB,EACrB,OAAO,OAAO,EACd,WAAW,MAAM,EACjB,SAAS,MAAM,KAChB,MAyBF,CAAA;AAyCD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,0BAA0B,GAAI,QAAQ,GAAG,EAAE,KAAK,GAAG,KAAG,OAMlE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,GAAG,EAAE,KAAK,GAAG,KAAG,OAiB5D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,GAAG,EAAE,KAAK,GAAG,KAAG,OACqB,CAAA;AAwFhF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAG,MAGnE,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,eAAe,2DAA4D,CAAA;AAExF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC1B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6C5C;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,gBAAgB,EAAE,KAAK,GAAG,KAAG,MAWtE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,gBAAgB,EAAE,KAAK,GAAG,KAAG,MAOtE,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,GACzB,KAAK,gBAAgB,EACrB,KAAK,GAAG,EACR,OAAO,GAAG,EACV,mBAAe,KAChB,MAAM,GAAG,SAcX,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,KAAK,gBAAgB,EAAE,KAAK,GAAG,KAAG,MAOzE,CAAA;AA+ID;;;;GAIG;AACH,wBAAgB,4BAA4B,CACxC,OAAO,GAAE,qBAA0B,GACpC,iBAAiB,CAwnBnB;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBACL,CAAA"}
|
package/dist/dynamic-columns.js
CHANGED
|
@@ -644,12 +644,35 @@ export function makeDefaultGetDynamicColumns(helpers = {}) {
|
|
|
644
644
|
if (value === null || value === undefined || isNaN(num))
|
|
645
645
|
return (_jsx("div", { className: "text-right", children: _jsx(EmptyCell, {}) }));
|
|
646
646
|
const decimals = styleCfg(col, 'decimals') ?? 2;
|
|
647
|
-
|
|
647
|
+
// Per-row currency: `display_config.currency_field`
|
|
648
|
+
// names a sibling column carrying the ISO code of
|
|
649
|
+
// THIS row's amount (multi-currency tables: a Bs
|
|
650
|
+
// tender must not render as the org's USD). Falls
|
|
651
|
+
// back to the column/org currency; if the code is
|
|
652
|
+
// not a valid ISO 4217 code, prefix it verbatim.
|
|
653
|
+
const currencyField = styleCfg(col, 'currency_field');
|
|
654
|
+
const rowCode = typeof currencyField === 'string' && currencyField
|
|
655
|
+
? String(getNestedValue(row.original, currencyField) ?? '').trim()
|
|
656
|
+
: '';
|
|
657
|
+
const activeCode = rowCode || resolveCurrency(col, currency);
|
|
658
|
+
let formatted;
|
|
659
|
+
try {
|
|
660
|
+
formatted = formatNumber(num, {
|
|
648
661
|
style: 'currency',
|
|
649
|
-
currency:
|
|
662
|
+
currency: activeCode,
|
|
650
663
|
minimumFractionDigits: decimals,
|
|
651
664
|
maximumFractionDigits: decimals,
|
|
652
|
-
}, currentLanguage)
|
|
665
|
+
}, currentLanguage);
|
|
666
|
+
}
|
|
667
|
+
catch {
|
|
668
|
+
// Non-ISO code (e.g. a custom tender label):
|
|
669
|
+
// render "<code> 1,234.56" instead of crashing.
|
|
670
|
+
formatted = `${activeCode} ${formatNumber(num, {
|
|
671
|
+
minimumFractionDigits: decimals,
|
|
672
|
+
maximumFractionDigits: decimals,
|
|
673
|
+
}, currentLanguage)}`;
|
|
674
|
+
}
|
|
675
|
+
return (_jsx("span", { className: "block text-right font-medium tabular-nums", children: formatted }));
|
|
653
676
|
}
|
|
654
677
|
case 'number': {
|
|
655
678
|
const num = typeof value === 'number' ? value : Number(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-table.d.ts","sourceRoot":"","sources":["../src/dynamic-table.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAKH,KAAK,SAAS,EAajB,MAAM,uBAAuB,CAAA;AAgC9B,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAiEnF,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC/B,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;IAC/B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,YAAY,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,aAAoB,EACpB,aAAkB,EAClB,QAAQ,EACR,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAiB,EACjB,iBAA4C,EAC5C,QAAQ,EACR,QAAQ,EACR,cAAsB,GACzB,EAAE,iBAAiB,+
|
|
1
|
+
{"version":3,"file":"dynamic-table.d.ts","sourceRoot":"","sources":["../src/dynamic-table.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAKH,KAAK,SAAS,EAajB,MAAM,uBAAuB,CAAA;AAgC9B,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAiEnF,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC/B,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;IAC/B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,YAAY,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,aAAoB,EACpB,aAAkB,EAClB,QAAQ,EACR,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAiB,EACjB,iBAA4C,EAC5C,QAAQ,EACR,QAAQ,EACR,cAAsB,GACzB,EAAE,iBAAiB,+BA2rCnB"}
|
package/dist/dynamic-table.js
CHANGED
|
@@ -985,7 +985,7 @@ export function DynamicTable({ model, endpoint, enableUrlSync = true, hiddenColu
|
|
|
985
985
|
const header = cell.column.columnDef.header;
|
|
986
986
|
const label = cellMeta?.label ??
|
|
987
987
|
(typeof header === 'string' ? header : cell.column.id);
|
|
988
|
-
return (_jsxs("div", { className: 'flex items-start justify-between gap-3 text-sm', children: [_jsx("span", { className: 'shrink-0 text-muted-foreground', children: label }), _jsx("span", { className: 'min-w-0 break-words text-right font-medium', children: flexRender(cell.column.columnDef.cell, cell.getContext()) })] }, cell.id));
|
|
988
|
+
return (_jsxs("div", { className: 'flex items-start justify-between gap-3 text-sm', children: [_jsx("span", { className: 'shrink-0 text-muted-foreground', children: label }), _jsx("span", { className: 'min-w-0 overflow-hidden break-words text-right font-medium [&_[data-slot=badge]]:max-w-full [&_[data-slot=badge]]:whitespace-normal [&_[data-slot=badge]]:text-start', children: flexRender(cell.column.columnDef.cell, cell.getContext()) })] }, cell.id));
|
|
989
989
|
}), actionsCell && (_jsx("div", { className: 'flex justify-end border-t pt-2', onClick: onRowClick ? (e) => e.stopPropagation() : undefined, children: flexRender(actionsCell.column.columnDef.cell, actionsCell.getContext()) }))] }, row.id));
|
|
990
990
|
})) : (_jsxs("div", { className: 'flex flex-col items-center justify-center gap-2 rounded-lg border bg-card py-12 text-muted-foreground', children: [_jsx("div", { className: 'flex h-16 w-16 items-center justify-center rounded-full bg-muted/50', children: _jsx(Inbox, { className: 'h-8 w-8' }) }), _jsx("h3", { className: 'text-base font-semibold text-foreground', children: "No se encontraron resultados" }), _jsx("p", { className: 'text-sm text-muted-foreground', children: "No hay datos para mostrar en este momento." })] })), infiniteScroll && (_jsxs(_Fragment, { children: [loadingMore && (_jsx(Skeleton, { className: 'h-16 w-full shrink-0', "data-testid": 'table-loading-more-mobile' })), _jsx("div", { ref: infMobileSentinel, className: 'h-1 w-full shrink-0', "aria-hidden": true })] }))] }), _jsx("div", { className: 'shrink-0 pt-4', children: infiniteScroll ? (data.length > 0 && (_jsx("p", { className: 'text-center text-xs text-muted-foreground tabular-nums', children: t('common.showingCount', {
|
|
991
991
|
defaultValue: '{{count}} de {{total}}',
|
package/package.json
CHANGED
package/src/dynamic-columns.tsx
CHANGED
|
@@ -940,18 +940,47 @@ export function makeDefaultGetDynamicColumns(
|
|
|
940
940
|
</div>
|
|
941
941
|
)
|
|
942
942
|
const decimals = styleCfg(col, 'decimals') ?? 2
|
|
943
|
+
// Per-row currency: `display_config.currency_field`
|
|
944
|
+
// names a sibling column carrying the ISO code of
|
|
945
|
+
// THIS row's amount (multi-currency tables: a Bs
|
|
946
|
+
// tender must not render as the org's USD). Falls
|
|
947
|
+
// back to the column/org currency; if the code is
|
|
948
|
+
// not a valid ISO 4217 code, prefix it verbatim.
|
|
949
|
+
const currencyField = styleCfg(col, 'currency_field')
|
|
950
|
+
const rowCode =
|
|
951
|
+
typeof currencyField === 'string' && currencyField
|
|
952
|
+
? String(
|
|
953
|
+
getNestedValue(row.original, currencyField) ?? '',
|
|
954
|
+
).trim()
|
|
955
|
+
: ''
|
|
956
|
+
const activeCode = rowCode || resolveCurrency(col, currency)
|
|
957
|
+
let formatted: string
|
|
958
|
+
try {
|
|
959
|
+
formatted = formatNumber(
|
|
960
|
+
num,
|
|
961
|
+
{
|
|
962
|
+
style: 'currency',
|
|
963
|
+
currency: activeCode,
|
|
964
|
+
minimumFractionDigits: decimals,
|
|
965
|
+
maximumFractionDigits: decimals,
|
|
966
|
+
},
|
|
967
|
+
currentLanguage,
|
|
968
|
+
)
|
|
969
|
+
} catch {
|
|
970
|
+
// Non-ISO code (e.g. a custom tender label):
|
|
971
|
+
// render "<code> 1,234.56" instead of crashing.
|
|
972
|
+
formatted = `${activeCode} ${formatNumber(
|
|
973
|
+
num,
|
|
974
|
+
{
|
|
975
|
+
minimumFractionDigits: decimals,
|
|
976
|
+
maximumFractionDigits: decimals,
|
|
977
|
+
},
|
|
978
|
+
currentLanguage,
|
|
979
|
+
)}`
|
|
980
|
+
}
|
|
943
981
|
return (
|
|
944
982
|
<span className="block text-right font-medium tabular-nums">
|
|
945
|
-
{
|
|
946
|
-
num,
|
|
947
|
-
{
|
|
948
|
-
style: 'currency',
|
|
949
|
-
currency: resolveCurrency(col, currency),
|
|
950
|
-
minimumFractionDigits: decimals,
|
|
951
|
-
maximumFractionDigits: decimals,
|
|
952
|
-
},
|
|
953
|
-
currentLanguage,
|
|
954
|
-
)}
|
|
983
|
+
{formatted}
|
|
955
984
|
</span>
|
|
956
985
|
)
|
|
957
986
|
}
|
package/src/dynamic-table.tsx
CHANGED
|
@@ -1301,7 +1301,11 @@ export function DynamicTable({
|
|
|
1301
1301
|
return (
|
|
1302
1302
|
<div key={cell.id} className='flex items-start justify-between gap-3 text-sm'>
|
|
1303
1303
|
<span className='shrink-0 text-muted-foreground'>{label}</span>
|
|
1304
|
-
|
|
1304
|
+
{/* overflow-hidden + badges envueltos: un badge largo
|
|
1305
|
+
(whitespace-nowrap por defecto) no puede encoger y
|
|
1306
|
+
empuja el ancho de TODA la página en móvil. Dentro
|
|
1307
|
+
de la card se le permite multilínea y max-w-full. */}
|
|
1308
|
+
<span className='min-w-0 overflow-hidden break-words text-right font-medium [&_[data-slot=badge]]:max-w-full [&_[data-slot=badge]]:whitespace-normal [&_[data-slot=badge]]:text-start'>
|
|
1305
1309
|
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
|
1306
1310
|
</span>
|
|
1307
1311
|
</div>
|