# Grids

Domain-specific grid components, one per entity type. All inherit `FruitBankGridBase<TEntity>`.

> For the MgGrid framework reference see: `AyCode.Blazor/AyCode.Blazor.Components/docs/MGGRID/README.md`

## FruitBankGridBase

`FruitBankGridBase<TDataItem>` is the project-specific adapter that fixes the generic parameters:

```
MgGridBase<SignalRDataSourceObservable<TDataItem>, TDataItem, int, LoggerClient>
```

Adds these defaults in `OnParametersSet` (based on `IsMasterGrid`):

| Setting | Master | Detail |
|---|---|---|
| `SizeMode` | `Small` | `Small` |
| `ShowGroupPanel` | `true` | `false` |
| `ShowSearchBox` | `true` | `false` |
| `ShowFilterRow` | `true` | `false` |
| `FilterMenuButtonDisplayMode` | `Never` | `Always` |
| `DetailRowDisplayMode` | `Auto` | `Never` |
| `DetailExpandButtonDisplayMode` | `Auto` | `Never` |
| `PagerVisible` | `true` | `true` |
| `PageSize` | 20 (Small) / 15 | 10 |
| `AllowColumnReorder` | `true` | `true` |
| `AllowGroup` | `true` | `false` |
| `EditMode` | `EditRow` | `EditRow` |
| `FocusedRowEnabled` | `true` | `true` |
| `ColumnResizeMode` | `NextColumn` | `NextColumn` |
| `PageSizeSelectorVisible` | `true` | `true` |

Also adds `OnCustomizeElement`: alternating row colors (`.alt-item`), header background (`#E6E6E6`), `hideDetailButton` for non-admin users.

## Legacy MgGridBase

`Components/MgGridBase.cs` — a non-generic legacy class that directly extends `DxGrid` and implements `IMgGridBase`. Used by older pages that predate the generic `MgGridBase<…>`. New grids should use `FruitBankGridBase<TEntity>` instead.

## Subfolders

| Folder | Entity | Notes |
|---|---|---|
| `GenericAttributes/` | `GridGenericAttributeBase` | Context-based (ContextIds: EntityId, KeyGroup, StoreId). Parent type switching: Product, Order, OrderItem |
| `OrderItems/` | `GridOrderItem` | Commented out — placeholder |
| `Partners/` | `GridPartnerBase` | Simple master grid with CRUD tags |
| `Products/` | `GridStockQuantityHistoryDtoBase` | Detail grid under ProductDto |
| `ShippingDocuments/` | `GridShippingDocumentBase` | Parent type switching: Shipping, Product, Partner. Sets ContextIds/KeyFieldNameToParentId per parent type |
| `ShippingItems/` | `GridShippingItemBase` | Parent type switching: ShippingDocument, Shipping, Partner |
| `Shippings/` | `GridShippingBase` | Simple master grid with CRUD tags |
| `StockTakingItems/` | `GridStockTakingItemBase` | Simple master grid, GetAll only |
