synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
125 lines (124 loc) • 3.19 kB
JavaScript
import { jsx as o } from "react/jsx-runtime";
import { dateTimeColumn as m } from "../columns/DateTimeColumn.js";
import { createTextColumn as s, keyColumn as a, floatColumn as d } from "@sage-bionetworks/react-datasheet-grid";
import { autocompleteColumn as l } from "../columns/AutocompleteColumn.js";
import { autocompleteMultipleEnumColumn as p } from "../columns/AutocompleteMultipleEnumColumn.js";
import { calculateDefaultColumnWidth as i } from "./calculateColumnWidth.js";
import { ColumnHeaderWithTooltip as c } from "../components/ColumnHeaderWithTooltip.js";
function h(e) {
return e ? "header-cell-required" : "header-cell";
}
function y(e, t) {
return ({ rowData: r }) => ({
...r,
[e]: t ? null : void 0
});
}
function C(e) {
return (t) => {
const r = t.trim();
return r === "" ? e ? null : void 0 : r;
};
}
function u(e, t) {
const r = {
showPinIcon: e.showPinIcon,
hasDescription: !!e.description
}, n = e.customWidth ?? i(
e.columnName,
void 0,
// propertyInfo is not available here, passed from higher level
r
);
return {
...a(e.columnName, t),
title: /* @__PURE__ */ o(
c,
{
name: e.columnName,
description: e.description,
showPinIcon: e.showPinIcon,
isPinned: e.isPinned,
onTogglePin: e.onTogglePin
}
),
headerClassName: h(e.isRequired),
minWidth: n,
basis: n,
grow: 0,
shrink: 0,
disabled: e.disabled,
deleteValue: y(e.columnName, e.isRequired),
stickyLeft: e.isPinned
};
}
const T = {
multipleEnum: (e) => u(
e,
p({
choices: e.enumeratedValues ?? [],
colType: e.typeInfo?.type || null,
limitTags: 3,
clearValue: e.isRequired ? null : void 0
})
),
boolean: (e) => u(
e,
l({
choices: [!0, !1],
colType: "boolean",
clearValue: e.isRequired ? null : void 0
})
),
number: (e) => u(e, d),
enumerated: (e) => u(
e,
l({
choices: e.enumeratedValues ?? [],
colType: e.typeInfo?.type || null,
clearValue: e.isRequired ? null : void 0
})
),
"date-time": (e) => {
const t = m({
colType: e.typeInfo?.type || null
}), r = {
showPinIcon: e.showPinIcon,
hasDescription: !!e.description
}, n = e.customWidth ?? i(
e.columnName,
{
type: e.typeInfo ?? void 0,
isRequired: e.isRequired
},
r
);
return {
...u(e, t),
minWidth: n,
basis: n
};
},
text: (e) => {
const t = s({
continuousUpdates: !1,
deletedValue: void 0,
parseUserInput: C(e.isRequired)
});
return {
...u(e, t),
cellClassName: "MuiInputBase-input"
};
}
};
function I(e, t) {
return e ? e.format === "date-time" ? "date-time" : e.isArray ? "multipleEnum" : e.type === "boolean" ? "boolean" : e.type === "number" || e.type === "integer" ? "number" : t && t.length > 0 ? "enumerated" : "text" : t && t.length > 0 ? "enumerated" : "text";
}
function V(e) {
const t = I(e.typeInfo, e.enumeratedValues);
return T[t](e);
}
export {
V as createColumn
};
//# sourceMappingURL=columnFactory.js.map