Skip to main content

OrderedTable

Live Editor
function SimpleEditableTable() {
	const initialValues = keyBy(
		[
			{
				id: 0,
				listIndex: 1,
				course: "Linear Algebra",
				program: "mathematics",
				EC: "6",
			},
			{
				id: 1,
				listIndex: 2,
				course: "Type Theory",
				program: "computing science",
				EC: "6",
			},
			{
				id: 2,
				listIndex: 3,
				course: "Category Theory",
				program: "computing science",
				EC: "6",
			},
		],
		"id"
	);

	//mock resource:
	const [values, controller] = useLocalList(initialValues);

	const CourseComponent = useMemo(
		() =>
			({ value, onChange, editable, inline }) => {
				return (
					<div>
						<IntegerField label="Index" value={value.listIndex} editable={false} />
						<StringField
							label="Module"
							value={value.course}
							editable={editable}
							onChange={(course) => onChange({ course })}
						/>
						<StringField
							label="Studie"
							value={value.program}
							editable={editable}
							onChange={(program) => onChange({ program })}
						/>
						<StringField
							label="EC"
							value={value.EC}
							editable={editable}
							onChange={(EC) => onChange({ EC })}
						/>
					</div>
				);
			},
		[]
	);

	return (
		<OrderedTable
			title="Title"
			values={values}
			emptyValue={{
				id: 0,
				listIndex: values.length + 1,
				course: "",
				program: "",
				EC: "3",
			}}
			columnLabels={{
				listIndex: "Index",
				course: "Module",
				program: "Studie",
				EC: "EC",
			}}
			EditComponent={CourseComponent}
			controller={controller}
			inline
		/>
	);
}
Result
Loading...