# BdndDraggable (Component) `Bit.Bdnd.BdndDraggable`1` - inherits `ComponentBase` - implements `IAsyncDisposable`, `IComponent`, `IHandleAfterRender`, `IHandleEvent` Wires its host element into the DnD system as a drag source. This is the component equivalent of React DnD's useDrag hook: you declare a BdndDraggable.Type and an BdndDraggable.Item (the data), and the child content receives a BdndDragState with the collected props (e.g. IsDragging). ## Parameter - **AdditionalAttributes** : `IReadOnlyDictionary` - Any other attribute (class, style, id...), applied to the host element. - **CanDrag** : `bool` = `true` - Whether dragging is allowed. Defaults to true. - **CanDragPredicate** : `Func` - Optional predicate overriding BdndDraggable.CanDrag, evaluated at render time and at drag start. - **ChildContent** : `RenderFragment` - The draggable's content; it receives the collected BdndDragState. - **DropEffect** : `string` = `"move"` - The drop effects the source allows, assigned to the native dataTransfer.effectAllowed (drives the cursor): move (default), copy, link, copyMove, copyLink, linkMove or all. - **IsDraggingOverride** : `Func` - Custom isDragging implementation (e.g. id-based for re-parented items). - **Item** : `TItem` - The item payload. Ignored when BdndDraggable.ItemFactory is supplied. - **ItemFactory** : `Func` - Produces the item lazily at drag start. Return null to cancel the drag (use a nullable TItem for value types, where default is a valid item). - **OnBegin** : `EventCallback` - Fired when the drag begins, right after the browser started the drag and before any hover, drop or end callback of that drag. - **OnEnd** : `EventCallback>` - Fired when the drag ends (drop or cancel), even if this component was removed meanwhile. - **Tag** : `string` = `"div"` - Host element tag name. Defaults to div. - **Type** : `string` **(required)** - Required. The item type used to match against drop-target Accept lists. - **UseCustomDragLayer** : `bool` = `false` - Hide the native drag image (use together with a BdndDragLayer). - **UseHandle** : `bool` = `false` - Require a BdndDragHandle child to initiate the drag. ## Method - **DisposeAsync**() : `ValueTask`