GUILayout.TextField blocks Undo(Ctrl+Z)

view8
To get this adaptive view in my Editor window, I use the following code:

/// <summary>
/// Header render method.
/// </summary>
/// <param name="position"><see cref="Rect"/></param>
/// <param name="localization"><see cref="Localization"/></param>
private void DrawHeader(Rect position, Localization localization, bool isDefault = false)
{
	GUILayout.BeginHorizontal(EditorStyles.inspectorFullWidthMargins);

	GUIContent content = new GUIContent(EditorGUIUtility.IconContent("tab_prev").image, "Back");
	if (GUILayout.Button(content, EditorStyles.label, GUILayout.Width(20f), GUILayout.Height(20f)))
	{
		GoBack();
	}

	GUILayout.FlexibleSpace();

	EditorGUI.BeginChangeCheck();
	string name = GUILayout.TextField(localization.Name);
	if (!string.IsNullOrWhiteSpace(name)) { localization.Name = name; }
	if (EditorGUI.EndChangeCheck())
	{
		Debug.Log("EndChangeCheck");
		Undo.RecordObject((Object)Storage, $"Changed data for {localization.Name} in {Storage} v{Storage.Version}");
		Storage?.SaveChanges();
	}

	GUILayout.FlexibleSpace();

	content = new GUIContent(EditorGUIUtility.IconContent("CreateAddNew").image, "Add");
	if (GUILayout.Button(content, EditorStyles.label, GUILayout.Width(20), GUILayout.Height(20)))
	{
		Storage.AddLocalization(localization);
		noticeView.Show(position, new GUIContent($"{localization.Name} has been added"));
		GoBack();
	}

	GUILayout.EndHorizontal();
	EditorExtends.DrawLine(Color.black);
}

But if GUILayout.TextField has focus, Undo doesn’t work at all.

I know that you can use EditorGUILayout.TextField, and Undo will work, but GUILayout.FlexibleSpace() does not work on EditorGUILayout.TextField and the field does not look cool.
view3

Tell me how I can make Undo work with GUILayout.TextField or make EditorGUILayout.TextField as pretty as GUILayout.TextField?