-
Notifications
You must be signed in to change notification settings - Fork 117
Description
Prerequisites
- I have read the Contributing Guidelines.
- I have not leaked any internal/restricted information like screenshots, videos, code snippets, links etc.
Suggestion / feature request
Description:
The system shall provide a drag-and-drop feature for a hierarchical tree structure. The tree will support multiple parent nodes, each with multiple child nodes, and each child node may contain its own nested children. Users should be able to drag and drop nodes within the tree while adhering to configurable business rules. Users should be able to render large tress without lag.
Functional Requirements:
-
The system shall allow users to drag a child node from one parent and drop it under another parent.
-
The system shall support nested hierarchies (i.e., children can also contain their own children).
-
When a child node is moved, all of its nested children and associated icons shall be moved together.
-
The system shall provide configurable restrictions to prevent certain child nodes from being dropped under specific parent nodes.
-
The system shall visually indicate valid and invalid drop targets during drag-and-drop.
-
A feature similar to CDKVirtualScroll to improve performance when rendering big trees (Lazy loading).
Constraints
-
A node cannot be dropped into itself or into one of its descendants.
-
Restricted parent-child mappings (as defined in business rules) must be enforced at all times.
-
Drag-and-drop must work consistently across all supported browsers and devices.
Acceptance Criteria
AC1: Users can successfully drag a child node (with its subtree and icons) from one parent to another.
AC2: Invalid drop targets (restricted parents or descendants) are disallowed, and the system prevents the drop operation.
AC3: Icons and metadata associated with a node are preserved after a drag-and-drop operation.
AC4: Visual feedback (e.g., highlight or cursor change) is provided to indicate allowed and disallowed drop zones.
AC5: The feature supports unlimited nesting levels without data corruption.
AC6: Smooth rendering of large trees with lazy loading.
Functional Requirement Specification: Tree Drag and Drop Feature and Virtual Scrolling for Performance