@etsoo/materialui
Version:
TypeScript Material-UI Implementation
50 lines (49 loc) • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GridDataFormat = GridDataFormat;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("@etsoo/react");
const shared_1 = require("@etsoo/shared");
const DateText_1 = require("./texts/DateText");
/**
* Grid data format
* @param data Input data
* @param type Data type
* @param renderProps Render props
* @returns Result
*/
function GridDataFormat(data, type, renderProps) {
// Null
if (data == null)
return undefined;
// For date time
// Conversion if necessary
if (type === react_1.GridDataType.Date || type === react_1.GridDataType.DateTime) {
const dateValue = data instanceof Date
? data
: typeof data === "number" || typeof data === "string"
? new Date(data)
: undefined;
if (dateValue == null)
return undefined;
const option = type === react_1.GridDataType.DateTime ? "ds" : "d";
const nearDays = renderProps?.nearDays;
if (nearDays != null) {
return ((0, jsx_runtime_1.jsx)(DateText_1.DateText, { value: dateValue, locale: renderProps?.culture, timeZone: renderProps?.timeZone, options: option, nearDays: nearDays }));
}
return shared_1.DateUtils.format(dateValue, renderProps?.culture, option, renderProps?.timeZone);
}
// For numbers
if (typeof data === "number") {
if (type === react_1.GridDataType.Money || type === react_1.GridDataType.IntMoney)
return shared_1.NumberUtils.formatMoney(data, renderProps?.currency, renderProps?.culture, type === react_1.GridDataType.IntMoney, renderProps?.numberFormatOptions);
else
return shared_1.NumberUtils.format(data, renderProps?.culture, renderProps?.numberFormatOptions);
}
// Array
if (Array.isArray(data))
return data.join(", ");
if (typeof data === "string")
return data;
return `${data}`;
}