You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.7 KiB

YUI.add('gallery-sm-treeview-sortable', function (Y, NAME) {
/**
Provides `Y.TreeView.Sortable`, a `Y.TreeView` extension that mixes in
`Y.Tree.Sortable` and provides related TreeView-specific functionality.
@module gallery-sm-treeview
@submodule gallery-sm-treeview-sortable
**/
/**
Extension for `Y.TreeView` that mixes in `Y.Tree.Sortable` and provides related
TreeView-specific functionality (such as re-rendering a node after it's sorted).
@class TreeView.Sortable
@constructor
@extensionfor TreeView
@extends Tree.Sortable
**/
var Sortable = Y.TreeView.Sortable = function () {};
Y.mix(Sortable.prototype, Y.Tree.Sortable.prototype);
// -- Protected Methods ----------------------------------------------------
// Overrides Y.TreeView#_attachTreeViewEvents().
Sortable.prototype._attachTreeViewEvents = function () {
Y.TreeView.prototype._attachTreeViewEvents.call(this);
this._treeViewEvents.push(
this.after('sort', this._afterSort)
);
};
// -- Event Handlers -------------------------------------------------------
/**
Re-renders a node if necessary after a `sort` event.
@method _afterSort
@param {EventFacade} e
@protected
**/
Sortable.prototype._afterSort = function (e) {
var node = e.node;
// If this tree hasn't been rendered yet or the sorted node's children
// haven't been rendered yet, there's nothing to do.
if (!this.rendered || !node.state.renderedChildren) {
return;
}
// Re-render the sorted node and its children.
if (node.isRoot()) {
this.render();
} else {
this.renderNode(node, {renderChildren: true});
}
};
}, 'gallery-2013.06.20-02-07', {"requires": ["gallery-sm-treeview", "tree-sortable"]});