private bool IsColumnInEditMode(PDColumn <TItem> column, TItem item)
 {
     // is editing current row?
     if (IsEditing && item == EditItem)
     {
         var editable = column.Editable;
         // override with dynamic config?
         var config = ColumnsConfig?.Find(x => x.Id == column.Id);
         return(config?.Editable ?? editable);
     }
     return(false);
 }
 /// <summary>
 /// Adds the given column to the list of available columns.
 /// </summary>
 /// <param name="column">The PDColumn to be added.</param>
 public async Task AddColumnAsync(PDColumn <TItem> column)
 {
     try
     {
         Columns.Add(column);
         if (column.Id == SortCriteria?.Key)
         {
             column.SortDirection = SortCriteria.Direction;
         }
         StateHasChanged();
     }
     catch (Exception ex)
     {
         await HandleExceptionAsync(ex).ConfigureAwait(false);
     }
 }
        /// <summary>
        /// Sort the data by the specified column.
        /// </summary>
        /// <param name="column">The column to sort by.</param>
        /// <remarks>To disable sorting for any given column, set its Sortable property set to false.</remarks>
        protected async Task SortByAsync(PDColumn <TItem> column, SortDirection?direction = null)
        {
            if (column.Sortable && !string.IsNullOrWhiteSpace(column.Id))
            {
                // if direction specified then sort as requested
                if (direction.HasValue)
                {
                    column.SortDirection = direction.Value;
                }
                else
                {
                    // if column already sorted then reverse direction
                    if (column.Id == SortCriteria?.Key)
                    {
                        column.SortDirection = column.SortDirection == SortDirection.Ascending ? SortDirection.Descending : SortDirection.Ascending;
                    }
                    else
                    {
                        var previousCol = Columns.Find(x => x.Id == SortCriteria?.Key);
                        if (previousCol != null)
                        {
                            previousCol.SortDirection = SortDirection.None;
                        }
                        column.SortDirection = SortDirection.Ascending;
                    }
                }

                if (SortCriteria != null)
                {
                    SortCriteria.Key       = column.Id;
                    SortCriteria.Direction = column.SortDirection;
                }

                await GetDataAsync().ConfigureAwait(true);

                await SortChanged.InvokeAsync(new SortCriteria { Key = column.Id, Direction = direction ?? column.SortDirection }).ConfigureAwait(true);
            }
        }
 public void OnEditInput(PDColumn <TItem> column, object?value)
 {
     _editValues[column.Id] = value;
 }