diff --git a/src/Spectre.Console.Tests/Unit/Composition/GridTests.cs b/src/Spectre.Console.Tests/Unit/Composition/GridTests.cs
index cc40a82..4368afd 100644
--- a/src/Spectre.Console.Tests/Unit/Composition/GridTests.cs
+++ b/src/Spectre.Console.Tests/Unit/Composition/GridTests.cs
@@ -99,13 +99,12 @@ namespace Spectre.Console.Tests.Unit.Composition
}
[Fact]
- public void Should_Render_Grid_Column_Padding_Correctly()
+ public void Should_Use_Default_Padding()
{
// Given
var console = new PlainConsole(width: 80);
var grid = new Grid();
- grid.AddColumn(new GridColumn { Padding = new Padding(3, 0) });
- grid.AddColumns(2);
+ grid.AddColumns(3);
grid.AddRow("Foo", "Bar", "Baz");
grid.AddRow("Qux", "Corgi", "Waldo");
grid.AddRow("Grault", "Garply", "Fred");
@@ -115,9 +114,32 @@ namespace Spectre.Console.Tests.Unit.Composition
// Then
console.Lines.Count.ShouldBe(3);
- console.Lines[0].ShouldBe(" Foo Bar Baz ");
- console.Lines[1].ShouldBe(" Qux Corgi Waldo");
- console.Lines[2].ShouldBe(" Grault Garply Fred ");
+ console.Lines[0].ShouldBe("Foo Bar Baz ");
+ console.Lines[1].ShouldBe("Qux Corgi Waldo");
+ console.Lines[2].ShouldBe("Grault Garply Fred ");
+ }
+
+ [Fact]
+ public void Should_Render_Explicit_Grid_Column_Padding_Correctly()
+ {
+ // Given
+ var console = new PlainConsole(width: 80);
+ var grid = new Grid();
+ grid.AddColumn(new GridColumn { Padding = new Padding(3, 0) });
+ grid.AddColumn(new GridColumn { Padding = new Padding(0, 0) });
+ grid.AddColumn(new GridColumn { Padding = new Padding(0, 3) });
+ grid.AddRow("Foo", "Bar", "Baz");
+ grid.AddRow("Qux", "Corgi", "Waldo");
+ grid.AddRow("Grault", "Garply", "Fred");
+
+ // When
+ console.Render(grid);
+
+ // Then
+ console.Lines.Count.ShouldBe(3);
+ console.Lines[0].ShouldBe(" Foo Bar Baz ");
+ console.Lines[1].ShouldBe(" Qux Corgi Waldo ");
+ console.Lines[2].ShouldBe(" GraultGarplyFred ");
}
[Fact]
diff --git a/src/Spectre.Console.Tests/Unit/Composition/TableTests.cs b/src/Spectre.Console.Tests/Unit/Composition/TableTests.cs
index bc17ff0..2be64cb 100644
--- a/src/Spectre.Console.Tests/Unit/Composition/TableTests.cs
+++ b/src/Spectre.Console.Tests/Unit/Composition/TableTests.cs
@@ -254,9 +254,9 @@ namespace Spectre.Console.Tests.Unit.Composition
// Then
console.Lines.Count.ShouldBe(3);
- console.Lines[0].ShouldBe("Foo Bar Baz ");
- console.Lines[1].ShouldBe("Qux Corgi Waldo");
- console.Lines[2].ShouldBe("Grault Garply Fred ");
+ console.Lines[0].ShouldBe("Foo Bar Baz ");
+ console.Lines[1].ShouldBe("Qux Corgi Waldo");
+ console.Lines[2].ShouldBe("Grault Garply Fred ");
}
[Fact]
diff --git a/src/Spectre.Console/Composition/Grid.cs b/src/Spectre.Console/Composition/Grid.cs
index 5a2c95c..e688b25 100644
--- a/src/Spectre.Console/Composition/Grid.cs
+++ b/src/Spectre.Console/Composition/Grid.cs
@@ -21,6 +21,7 @@ namespace Spectre.Console
Border = BorderKind.None,
ShowHeaders = false,
IsGrid = true,
+ PadRightCell = false,
};
}
@@ -55,11 +56,14 @@ namespace Spectre.Console
throw new ArgumentNullException(nameof(column));
}
+ // Only pad the most right cell if we've explicitly set a padding.
+ _table.PadRightCell = column.Padding != null;
+
_table.AddColumn(new TableColumn(string.Empty)
{
Width = column.Width,
NoWrap = column.NoWrap,
- Padding = column.Padding,
+ Padding = column.Padding ?? new Padding(0, 2),
Alignment = column.Alignment,
});
}
diff --git a/src/Spectre.Console/Composition/GridColumn.cs b/src/Spectre.Console/Composition/GridColumn.cs
index a67f31f..1fc658a 100644
--- a/src/Spectre.Console/Composition/GridColumn.cs
+++ b/src/Spectre.Console/Composition/GridColumn.cs
@@ -20,7 +20,7 @@ namespace Spectre.Console
///
/// Gets or sets the padding of the column.
///
- public Padding Padding { get; set; } = new Padding(0, 1);
+ public Padding? Padding { get; set; } = null;
///
/// Gets or sets the alignment of the column.
diff --git a/src/Spectre.Console/Composition/Table.cs b/src/Spectre.Console/Composition/Table.cs
index 17ce99c..3e6f286 100644
--- a/src/Spectre.Console/Composition/Table.cs
+++ b/src/Spectre.Console/Composition/Table.cs
@@ -53,8 +53,14 @@ namespace Spectre.Console
///
public bool SafeBorder { get; set; } = true;
+ // Whether this is a grid or not.
internal bool IsGrid { get; set; } = false;
+ // Whether or not the most right cell should be padded.
+ // This is almost always the case, unless we're rendering
+ // a grid without explicit padding in the last cell.
+ internal bool PadRightCell { get; set; } = true;
+
///
/// Initializes a new instance of the class.
///
@@ -279,7 +285,7 @@ namespace Spectre.Console
}
// Pad column on the right side
- if (showBorder || (hideBorder && !lastCell) || (IsGrid && !lastCell))
+ if (showBorder || (hideBorder && !lastCell) || (hideBorder && lastCell && IsGrid && PadRightCell))
{
var rightPadding = _columns[cellIndex].Padding.Right;
if (rightPadding > 0)
@@ -293,7 +299,7 @@ namespace Spectre.Console
// Add right column edge
result.Add(new Segment(border.GetPart(BorderPart.CellRight)));
}
- else if (showBorder || (hideBorder && !lastCell))
+ else if (showBorder)
{
// Add column separator
result.Add(new Segment(border.GetPart(BorderPart.CellSeparator)));