diff --git a/src/components/StockTakeManagement/PickerCardList.tsx b/src/components/StockTakeManagement/PickerCardList.tsx index e1f136be..46844717 100644 --- a/src/components/StockTakeManagement/PickerCardList.tsx +++ b/src/components/StockTakeManagement/PickerCardList.tsx @@ -1072,17 +1072,17 @@ const PickerCardList: React.FC = ({ applyFilters({ ...searchFilters, searchKind: value })} - sx={{ minHeight: 36 }} + sx={{ minHeight: 48 }} > @@ -1204,7 +1204,6 @@ const PickerCardList: React.FC = ({ { const pick = { storeId: next ?? "", warehouse: "", area: "", slot: "" }; @@ -1213,7 +1212,7 @@ const PickerCardList: React.FC = ({ }} > {locationFloorOptions.map((floor) => ( - + {floor === LOCATION_ALL ? t("All") : floor} ))} @@ -1228,7 +1227,6 @@ const PickerCardList: React.FC = ({ { @@ -1247,7 +1245,7 @@ const PickerCardList: React.FC = ({ }} > {row.map((zone) => ( - + {zone === LOCATION_ALL ? t("All") : zone} ))} @@ -1276,7 +1274,6 @@ const PickerCardList: React.FC = ({ { @@ -1295,7 +1292,7 @@ const PickerCardList: React.FC = ({ }} > {row.map((area) => ( - + {area === LOCATION_ALL ? t("All") : area} ))} @@ -1324,7 +1321,6 @@ const PickerCardList: React.FC = ({ { @@ -1343,7 +1339,7 @@ const PickerCardList: React.FC = ({ }} > {row.map((slot) => ( - + {slot === LOCATION_ALL ? t("All") : slot} ))} @@ -1361,7 +1357,7 @@ const PickerCardList: React.FC = ({ )} - @@ -1406,7 +1402,7 @@ const PickerCardList: React.FC = ({ ].filter((v): v is string => Boolean(v && v.trim())).join(" / "); return ( - + = ({ - @@ -584,8 +631,18 @@ const PickerStockTake: React.FC = ({ detail.firstStockTakeQty != null && detail.secondStockTakeQty == null; + const canEditQty = !submitDisabled && (isFirstSubmit || isSecondSubmit); + return ( - + {detail.warehouseArea || "-"} {detail.warehouseSlot || "-"} @@ -624,16 +681,27 @@ const PickerStockTake: React.FC = ({ {t("First")}: setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:first`]: false })) } - onBlur={() => - setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:first`]: true })) - } - inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} - onKeyDown={blockNonIntegerKeys} + onBlur={(e) => { + const next = e.relatedTarget as HTMLElement | null; + if (next?.dataset.stockTakeQty === "1") return; + setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:first`]: true })); + }} + inputRef={(el) => { + if (el) qtyInputRefs.current.set(detail.id, el); + else qtyInputRefs.current.delete(detail.id); + }} + inputProps={{ + inputMode: "numeric", + enterKeyHint: "next", + pattern: "[0-9]*", + "data-stock-take-qty": "1", + }} + onKeyDown={onQtyKeyDown(detail.id)} onChange={(e) => { const clean = sanitizeStockTakeQtyInput(e.target.value); const val = clean; @@ -643,18 +711,7 @@ const PickerStockTake: React.FC = ({ InputProps={{ endAdornment: stockTakeQtyEndAdornment(detail.uomShortDesc), }} - sx={{ - width: 148, - minWidth: 148, - "& .MuiInputBase-input": { - height: "1.4375em", - padding: "4px 8px", - }, - "& .MuiInputBase-input::placeholder": { - color: "grey.400", // MUI light grey - opacity: 1, - }, - }} + sx={pickerQtyFieldSx} placeholder={t("Stock Take Qty")} /> {/* @@ -710,16 +767,27 @@ const PickerStockTake: React.FC = ({ {t("Second")}: setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:second`]: false })) } - onBlur={() => - setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:second`]: true })) - } - inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} - onKeyDown={blockNonIntegerKeys} + onBlur={(e) => { + const next = e.relatedTarget as HTMLElement | null; + if (next?.dataset.stockTakeQty === "1") return; + setGapCheckOpen((prev) => ({ ...prev, [`${detail.id}:second`]: true })); + }} + inputRef={(el) => { + if (el) qtyInputRefs.current.set(detail.id, el); + else qtyInputRefs.current.delete(detail.id); + }} + inputProps={{ + inputMode: "numeric", + enterKeyHint: "next", + pattern: "[0-9]*", + "data-stock-take-qty": "1", + }} + onKeyDown={onQtyKeyDown(detail.id)} onChange={(e) => { const clean = sanitizeStockTakeQtyInput(e.target.value); const val = clean; @@ -729,14 +797,7 @@ const PickerStockTake: React.FC = ({ InputProps={{ endAdornment: stockTakeQtyEndAdornment(detail.uomShortDesc), }} - sx={{ - width: 148, - minWidth: 148, - "& .MuiInputBase-input": { - height: "1.4375em", - padding: "4px 8px", - }, - }} + sx={pickerQtyFieldSx} placeholder={t("Stock Take Qty")} /> {/* @@ -797,8 +858,8 @@ const PickerStockTake: React.FC = ({