diff --git a/Source/Extensions/Blazorise.DataGrid/Internal/_DataGridRowEdit.razor b/Source/Extensions/Blazorise.DataGrid/Internal/_DataGridRowEdit.razor index d76da4d2bc..54d91e6eb0 100644 --- a/Source/Extensions/Blazorise.DataGrid/Internal/_DataGridRowEdit.razor +++ b/Source/Extensions/Blazorise.DataGrid/Internal/_DataGridRowEdit.razor @@ -135,11 +135,21 @@ else if ( EditMode == DataGridEditMode.Inline || EditMode == DataGridEditMode.Ce else if ( column.Displaying ) { var cellStyle = column.BuildCellStyle( Item ); + var isCustomEditTemplate = column.EditTemplate is not null; + var cellEditWrapperStyle = isCustomEditTemplate + ? "width:100%;max-width:100%;min-width:0;" + : "width:100%;max-width:100%;min-width:0;overflow:hidden;"; + if ( column.CellValueIsEditable ) { cellStyle = string.IsNullOrWhiteSpace( cellStyle ) - ? "min-width:0;overflow:hidden;" - : $"{cellStyle};min-width:0;overflow:hidden;"; + ? "min-width:0;" + : $"{cellStyle};min-width:0;"; + + if ( !isCustomEditTemplate ) + { + cellStyle = $"{cellStyle};overflow:hidden;"; + } if ( column.CellEditing && !string.IsNullOrWhiteSpace( ParentDataGrid.activeCellEditWidth ) ) { @@ -149,7 +159,7 @@ else if ( EditMode == DataGridEditMode.Inline || EditMode == DataGridEditMode.Ce await HandleCellClick( column ) : default) @ondblclick=@(ParentDataGrid.IsCellEditOnDoubleClick && !column.CellValueIsEditable ? async () => await HandleCellClick( column ) : default) TextAlignment="@column.TextAlignment" TextTransform="@column.TextTransform" TextDecoration="@column.TextDecoration" TextWeight="@column.TextWeight" TextOverflow="@column.TextOverflow" TextSize="@column.TextSize" @@ -157,7 +167,7 @@ else if ( EditMode == DataGridEditMode.Inline || EditMode == DataGridEditMode.Ce MobileModeCaption="@column.Caption"> @if ( column.CellValueIsEditable ) { -
+
<_DataGridCell TItem="TItem" Column="@column" Item="@Item" ValidationItem="@ValidationItem" CellEditContext="@CellValues[column.ElementId]" ShowValidationFeedback="@ParentDataGrid.ShowValidationFeedback" />
} diff --git a/Tests/BasicTestApp.Client/DataGridComponent.razor b/Tests/BasicTestApp.Client/DataGridComponent.razor index 8e8dc57622..68b53305e1 100644 --- a/Tests/BasicTestApp.Client/DataGridComponent.razor +++ b/Tests/BasicTestApp.Client/DataGridComponent.razor @@ -34,18 +34,37 @@ - - + + @if ( UseNameEditTemplate ) + { + Field="@nameof( Employee.Name )" + Caption="Name" + Editable> + + + + + } + else + { + + } No Records... @@ -66,6 +85,17 @@ [Parameter] public DataGridEditMode DataGridEditMode { get; set; } + [Parameter] + public bool UseNameEditTemplate { get; set; } + + public IEnumerable Names { get; set; } = new List + { + "John", + "Sarah", + "Paul", + "Ana", + }; + [Parameter] public IEnumerable Data { get; set; } = new List() { diff --git a/Tests/Blazorise.Tests/Components/DataGridComponentTest.cs b/Tests/Blazorise.Tests/Components/DataGridComponentTest.cs index 2c29b0c943..33a96c8609 100644 --- a/Tests/Blazorise.Tests/Components/DataGridComponentTest.cs +++ b/Tests/Blazorise.Tests/Components/DataGridComponentTest.cs @@ -744,6 +744,35 @@ await comp.Input( "input", updatedName, comp.WaitForAssertion( () => Assert.Contains( comp.Instance.Data, x => x.Name == updatedName ), System.TimeSpan.FromSeconds( 3 ) ); } + [Fact] + public async Task EditTemplate_Should_NotClip_CustomEditor() + { + // setup + var comp = Render( parameters => + { + parameters.Add( x => x.DataGridEditMode, DataGridEditMode.Inline ); + parameters.Add( x => x.UseNameEditTemplate, true ); + } ); + + // test + await comp.Click( "#btnEdit" ); + + var autocomplete = comp.Find( ".b-is-autocomplete" ); + var wrapper = autocomplete.ParentElement; + var cell = wrapper; + + while ( cell is not null && cell.TagName != "TD" ) + { + cell = cell.ParentElement; + } + + // validate + Assert.NotNull( wrapper ); + Assert.NotNull( cell ); + Assert.DoesNotContain( "overflow:hidden", wrapper.GetAttribute( "style" ) ); + Assert.DoesNotContain( "overflow:hidden", cell.GetAttribute( "style" ) ); + } + [Theory] [InlineData( DataGridEditMode.Form )] [InlineData( DataGridEditMode.Inline )]