diff --git a/src/frontend/src/components/forms/fields/TableField.tsx b/src/frontend/src/components/forms/fields/TableField.tsx
index fb626a3992..7f3c6439eb 100644
--- a/src/frontend/src/components/forms/fields/TableField.tsx
+++ b/src/frontend/src/components/forms/fields/TableField.tsx
@@ -29,7 +29,6 @@ export interface TableFieldRowProps {
function TableFieldRow({
item,
- idx,
rowId,
errors,
definition,
@@ -37,7 +36,6 @@ function TableFieldRow({
removeFn
}: Readonly<{
item: any;
- idx: number;
rowId: string | number;
errors: any;
definition: ApiFormFieldType;
@@ -59,7 +57,6 @@ function TableFieldRow({
return definition.modelRenderer({
item: item,
- idx: idx,
rowId: rowId,
rowErrors: errors,
changeFn: changeFn,
@@ -127,6 +124,7 @@ function TableFieldComponent({
generatedRowIdCounterRef.current += 1;
const generatedId = `table-row-generated-${generatedRowIdCounterRef.current}`;
generatedRowIdsRef.current.set(item, generatedId);
+
return generatedId;
}
@@ -243,7 +241,7 @@ function TableFieldComponent({
{definition.headers?.map((header, index) => {
return (
{header.title}
@@ -262,7 +260,6 @@ function TableFieldComponent({
(props.item?.quantity ?? 0);
+
+ const callChangeFn = useCallback(
+ (identifier: number | string, key: string, value: any) => {
+ queueMicrotask(() => {
+ props.changeFn(identifier, key, value);
+ });
+ },
+ [props.changeFn]
+ );
+
+ useWhyDidYouUpdate('BuildConsumeItemRow', { props, record, quantity });
+
return (
@@ -824,9 +838,10 @@ function BuildConsumeItemRow({
{
let nextValue: number | '' = '';
@@ -837,13 +852,14 @@ function BuildConsumeItemRow({
nextValue = Number.isFinite(parsed) ? parsed : '';
}
- props.changeFn(props.idx, 'quantity', nextValue);
+ setQuantity(nextValue === '' ? 0 : nextValue);
+ callChangeFn(props.rowId, 'quantity', nextValue);
}}
error={props.rowErrors?.quantity?.message}
/>
- props.removeFn(props.idx)} />
+ props.removeFn(props.rowId)} />
);
@@ -879,7 +895,7 @@ export function useConsumeBuildItemsForm({
);
return (
-
+
);
}
},
@@ -898,6 +914,7 @@ export function useConsumeBuildItemsForm({
initialData: {
items: allocatedItems.map((item) => {
return {
+ id: item.pk,
build_item: item.pk,
quantity: item.quantity
};
@@ -942,7 +959,7 @@ function BuildConsumeLineRow({
/>
- props.removeFn(props.idx)} />
+ props.removeFn(props.rowId)} />
);