@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
102 lines (101 loc) • 5.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.rowGroupingReorderValidator = void 0;
var _internals = require("@mui/x-data-grid-pro/internals");
const validationRules = [
// ===== Basic invalid cases =====
{
name: 'same-position',
applies: ctx => ctx.sourceNode.id === ctx.targetNode.id,
isInvalid: () => true,
message: 'Source and target are the same'
}, {
name: 'adjacent-position',
applies: ctx => _internals.commonReorderConditions.isAdjacentPosition(ctx),
isInvalid: () => true,
message: 'Source and target are adjacent'
}, {
name: 'group-to-leaf',
applies: _internals.commonReorderConditions.isGroupToLeaf,
isInvalid: () => true,
message: 'Cannot drop group on leaf'
},
// ===== Group to Group Rules =====
{
name: 'group-to-group-above-leaf-belongs-to-source',
applies: ctx => _internals.commonReorderConditions.isGroupToGroup(ctx) && _internals.commonReorderConditions.isDropAbove(ctx) && _internals.commonReorderConditions.prevIsLeaf(ctx),
isInvalid: _internals.commonReorderConditions.prevBelongsToSource,
message: 'Previous leaf belongs to source group or its descendants'
}, {
name: 'group-to-group-above-invalid-depth',
applies: ctx => _internals.commonReorderConditions.isGroupToGroup(ctx) && _internals.commonReorderConditions.isDropAbove(ctx) && !_internals.commonReorderConditions.sameDepth(ctx) && !(ctx.targetNode.depth < ctx.sourceNode.depth && (_internals.commonReorderConditions.prevIsLeaf(ctx) || _internals.commonReorderConditions.prevIsGroup(ctx) && _internals.commonReorderConditions.prevDepthEqualsSource(ctx))),
isInvalid: () => true,
message: 'Invalid depth configuration for group above group'
}, {
name: 'group-to-group-above-different-parent-depth',
applies: ctx => _internals.commonReorderConditions.isGroupToGroup(ctx) && _internals.commonReorderConditions.isDropAbove(ctx) && _internals.commonReorderConditions.prevIsGroup(ctx) && _internals.commonReorderConditions.prevDepthEqualsSource(ctx) && _internals.commonReorderConditions.targetGroupExpanded(ctx),
isInvalid: ctx => ctx.prevNode.depth !== ctx.sourceNode.depth,
message: 'Cannot reorder groups with different depths'
}, {
name: 'group-to-group-below-invalid-config',
applies: ctx => _internals.commonReorderConditions.isGroupToGroup(ctx) && _internals.commonReorderConditions.isDropBelow(ctx),
isInvalid: ctx => {
// Valid case 1: Same depth and target not expanded
if (_internals.commonReorderConditions.sameDepth(ctx) && _internals.commonReorderConditions.targetGroupCollapsed(ctx)) {
return false;
}
// Valid case 2: Target is parent level, expanded, with compatible first child
if (_internals.commonReorderConditions.targetDepthIsSourceMinusOne(ctx) && _internals.commonReorderConditions.targetGroupExpanded(ctx) && _internals.commonReorderConditions.targetFirstChildIsGroupWithSourceDepth(ctx)) {
return false;
}
return true;
},
message: 'Invalid group below group configuration'
},
// ===== Leaf to Leaf Rules =====
{
name: 'leaf-to-leaf-different-depth',
applies: ctx => _internals.commonReorderConditions.isLeafToLeaf(ctx) && !_internals.commonReorderConditions.sameDepth(ctx),
isInvalid: () => true,
message: 'Leaves at different depths cannot be reordered'
}, {
name: 'leaf-to-leaf-invalid-below',
applies: ctx => _internals.commonReorderConditions.isLeafToLeaf(ctx) && _internals.commonReorderConditions.sameDepth(ctx) && !_internals.commonReorderConditions.sameParent(ctx) && _internals.commonReorderConditions.isDropBelow(ctx),
isInvalid: ctx => !(_internals.commonReorderConditions.nextIsGroup(ctx) && ctx.sourceNode.depth > ctx.nextNode.depth) && !_internals.commonReorderConditions.nextIsLeaf(ctx),
message: 'Invalid leaf below leaf configuration'
},
// ===== Leaf to Group Rules =====
{
name: 'leaf-to-group-above-no-prev-leaf',
applies: ctx => _internals.commonReorderConditions.isLeafToGroup(ctx) && _internals.commonReorderConditions.isDropAbove(ctx),
isInvalid: ctx => !_internals.commonReorderConditions.hasPrevNode(ctx) || !_internals.commonReorderConditions.prevIsLeaf(ctx),
message: 'No valid previous leaf for leaf above group'
}, {
name: 'leaf-to-group-above-depth-mismatch',
applies: ctx => _internals.commonReorderConditions.isLeafToGroup(ctx) && _internals.commonReorderConditions.isDropAbove(ctx) && _internals.commonReorderConditions.prevIsLeaf(ctx) && !(ctx.sourceNode.depth > ctx.targetNode.depth && ctx.targetNode.depth === 0),
isInvalid: ctx => ctx.prevNode.depth !== ctx.sourceNode.depth,
message: 'Previous node depth mismatch for leaf above group'
}, {
name: 'leaf-to-group-below-collapsed',
applies: ctx => _internals.commonReorderConditions.isLeafToGroup(ctx) && _internals.commonReorderConditions.isDropBelow(ctx),
isInvalid: _internals.commonReorderConditions.targetGroupCollapsed,
message: 'Cannot drop below collapsed group'
}, {
name: 'leaf-to-group-below-invalid-depth',
applies: ctx => _internals.commonReorderConditions.isLeafToGroup(ctx) && _internals.commonReorderConditions.isDropBelow(ctx) && _internals.commonReorderConditions.targetGroupExpanded(ctx),
isInvalid: ctx => {
// Valid case 1: Target is parent level
if (ctx.sourceNode.depth > ctx.targetNode.depth && ctx.targetNode.depth === ctx.sourceNode.depth - 1) {
return false;
}
// Valid case 2: First child has same depth as source
if (_internals.commonReorderConditions.targetFirstChildDepthEqualsSource(ctx)) {
return false;
}
return true;
},
message: 'Invalid depth configuration for leaf below group'
}];
const rowGroupingReorderValidator = exports.rowGroupingReorderValidator = new _internals.RowReorderValidator(validationRules);