in app/src/sandbox/editableTable/columns.tsx [16:175]
export function getColumns(columnsProps: ColumnsProps) {
const columns: DataColumnProps<ProjectTask, number, DataQueryFilter<Task>>[] = [
{
key: 'name',
caption: 'Name',
width: 300,
fix: 'left',
isSortable: true,
renderCell: (props) => (
<DataTableCell
{ ...props.rowLens.prop('name').toProps() }
renderEditor={ (props) => <TextInput { ...props } /> }
{ ...props }
/>
),
},
{
key: 'estimate',
textAlign: 'right',
caption: 'Estimate',
info: 'Estimate in man/days',
width: 120,
isSortable: true,
renderCell: (props) => (
<DataTableCell
{ ...props.rowLens.prop('estimate').toProps() }
renderEditor={ (props) => <NumericInput { ...props } formatOptions={ { maximumFractionDigits: 1 } } /> }
{ ...props }
/>
),
},
{
key: 'status',
caption: 'Status',
width: 160,
minWidth: 150,
renderCell: (props) => (
<DataTableCell
{ ...props.rowLens.prop('status').toProps() }
size="24"
renderEditor={ (props) => (
<PickerInput
valueType="id"
placeholder="Add Status"
dataSource={ statusDataSource }
selectionMode="single"
minBodyWidth={ 150 }
renderRow={ (props) => (
<DataPickerRow
{ ...props }
padding="12"
renderItem={ (item) => (
<PickerItem
title={ item.name }
icon={ () => <IconContainer icon={ statusIcon } style={ { fill: item.color } } /> }
{ ...props }
/>
) }
/>
) }
renderToggler={ (togglerProps) => {
const row = togglerProps.selection?.[0];
const fill = row?.value?.color && togglerProps.value && row?.value?.name?.includes(togglerProps.value)
? row?.value?.color
: '#E1E3EB';
return (
<PickerToggler
{ ...props }
{ ...togglerProps }
icon={ () => <IconContainer icon={ statusIcon } style={ { fill: fill, marginBottom: '0' } } cx={ css.statusIcon } /> }
iconPosition="left"
/>
);
} }
{ ...props }
/>
) }
{ ...props }
/>
),
},
{
key: 'startDate',
caption: 'Start date',
width: 150,
renderCell: (props) => (
<DataTableCell
{ ...props.rowLens.prop('startDate').toProps() }
renderEditor={ (props) => <DatePicker format="MMM D, YYYY" placeholder="" { ...props } /> }
{ ...props }
/>
),
},
{
key: 'dueDate',
caption: 'Due date',
width: 150,
renderCell: (props) => (
<DataTableCell
{ ...props.rowLens.prop('dueDate').toProps() }
renderEditor={ (props) => <DatePicker format="MMM D, YYYY" placeholder="" { ...props } /> }
{ ...props }
/>
),
},
{
key: 'teams',
caption: 'Teams',
width: 220,
renderCell: (props) => (
<DataTableCell
{ ...props.rowLens.prop('resources').toProps() }
renderEditor={ (props) => (
<PickerInput
valueType="id"
selectionMode="multi"
emptyValue={ undefined }
dataSource={ resourceDataSource }
renderRow={ (props) => (
<DataPickerRow
{ ...props }
renderItem={ (item) => (
<PickerItem
title={ item.name }
subtitle={ item.fullName }
{ ...props }
/>
) }
/>
) }
placeholder=""
{ ...props }
/>
) }
{ ...props }
/>
),
},
{
key: 'description',
caption: 'Description',
width: 200,
grow: 1,
renderCell: (props) => (
<DataTableCell { ...props.rowLens.prop('description').toProps() } renderEditor={ (props) => <TextArea { ...props } autoSize={ true } /> } { ...props } />
),
},
{
key: 'actions',
render: (_, row) => <RowKebabButton row={ row } { ...columnsProps } />,
width: 54,
fix: 'right',
alignSelf: 'center',
allowResizing: false,
},
];
return columns;
}