77 * Released under the MIT license
88 * https://github.com/mar10/fancytree/wiki/LicenseInfo
99 *
10- * @version 2.1 .0
11- * @date 2014-05-29T16:44
10+ * @version 2.2 .0
11+ * @date 2014-06-28T17:15
1212 */
1313
1414/** Core Fancytree module.
@@ -614,7 +614,7 @@ FancytreeNode.prototype = /** @lends FancytreeNode# */{
614614 var i , l , child , s , state , allSelected , someSelected ,
615615 children = node . children ;
616616
617- if ( children ) {
617+ if ( children && children . length ) {
618618 // check all children recursively
619619 allSelected = true ;
620620 someSelected = false ;
@@ -852,6 +852,16 @@ FancytreeNode.prototype = /** @lends FancytreeNode# */{
852852 hasFocus : function ( ) {
853853 return ( this . tree . hasFocus ( ) && this . tree . focusNode === this ) ;
854854 } ,
855+ /** Write to browser console if debugLevel >= 1 (prepending node info)
856+ *
857+ * @param {* } msg string or object or array of such
858+ */
859+ info : function ( msg ) {
860+ if ( this . tree . options . debugLevel >= 1 ) {
861+ Array . prototype . unshift . call ( arguments , this . toString ( ) ) ;
862+ consoleApply ( "info" , arguments ) ;
863+ }
864+ } ,
855865 /** Return true if node is active (see also FancytreeNode#isSelected).
856866 * @returns {boolean }
857867 */
@@ -1196,7 +1206,7 @@ FancytreeNode.prototype = /** @lends FancytreeNode# */{
11961206 // Navigate to node
11971207 function _goto ( n ) {
11981208 if ( n ) {
1199- n . makeVisible ( ) ;
1209+ try { n . makeVisible ( ) ; } catch ( e ) { } // #272
12001210 // Node may still be hidden by a filter
12011211 if ( ! $ ( n . span ) . is ( ":visible" ) ) {
12021212 n . debug ( "Navigate: skipping hidden node" ) ;
@@ -1883,17 +1893,17 @@ Fancytree.prototype = /** @lends Fancytree# */{
18831893 generateFormElements : function ( selected , active ) {
18841894 // TODO: test case
18851895 var nodeList ,
1886- selectedName = ( selected !== false ) ? "ft_" + this . _id : selected ,
1896+ selectedName = ( selected !== false ) ? "ft_" + this . _id + "[]" : selected ,
18871897 activeName = ( active !== false ) ? "ft_" + this . _id + "_active" : active ,
18881898 id = "fancytree_result_" + this . _id ,
1889- $result = this . $container . find ( "div #" + id ) ;
1899+ $result = $ ( " #" + id ) ;
18901900
18911901 if ( $result . length ) {
18921902 $result . empty ( ) ;
18931903 } else {
18941904 $result = $ ( "<div>" , {
18951905 id : id
1896- } ) . hide ( ) . appendTo ( this . $container ) ;
1906+ } ) . hide ( ) . insertAfter ( this . $container ) ;
18971907 }
18981908 if ( selectedName ) {
18991909 nodeList = this . getSelectedNodes ( this . options . selectMode === 3 ) ;
@@ -1967,7 +1977,12 @@ Fancytree.prototype = /** @lends Fancytree# */{
19671977 } , true ) ;
19681978 return match ;
19691979 } ,
1970- // TODO: getRoot()
1980+ /** Return the invisible system root node.
1981+ * @returns {FancytreeNode }
1982+ */
1983+ getRootNode : function ( ) {
1984+ return this . rootNode ;
1985+ } ,
19711986 /**
19721987 * Return an array of selected nodes.
19731988 * @param {boolean } [stopOnParents=false] only return the topmost selected
@@ -3791,7 +3806,7 @@ $.extend($.ui.fancytree,
37913806 /** @lends Fancytree_Static# */
37923807 {
37933808 /** @type {string } */
3794- version : "2.1 .0" , // Set to semver by 'grunt release'
3809+ version : "2.2 .0" , // Set to semver by 'grunt release'
37953810 /** @type {string } */
37963811 buildType : "production" , // Set to 'production' by 'grunt build'
37973812 /** @type {int } */
@@ -4090,8 +4105,8 @@ $.extend($.ui.fancytree,
40904105 * Released under the MIT license
40914106 * https://github.com/mar10/fancytree/wiki/LicenseInfo
40924107 *
4093- * @version 2.1 .0
4094- * @date 2014-05-29T16:44
4108+ * @version 2.2 .0
4109+ * @date 2014-06-28T17:15
40954110 */
40964111
40974112// To keep the global namespace clean, we wrap everything in a closure
@@ -4266,8 +4281,8 @@ $.ui.fancytree.registerExtension({
42664281 * Released under the MIT license
42674282 * https://github.com/mar10/fancytree/wiki/LicenseInfo
42684283 *
4269- * @version 2.1 .0
4270- * @date 2014-05-29T16:44
4284+ * @version 2.2 .0
4285+ * @date 2014-06-28T17:15
42714286 */
42724287
42734288; ( function ( $ , window , document , undefined ) {
@@ -4461,6 +4476,7 @@ $.ui.fancytree.registerExtension({
44614476 autoExpandMS : 1000 , // Expand nodes after n milliseconds of hovering.
44624477 preventVoidMoves : true , // Prevent dropping nodes 'before self', etc.
44634478 preventRecursiveMoves : true , // Prevent dropping nodes on own descendants
4479+ focusOnClick : false , // Focus, although draggable cancels mousedown event (#270)
44644480 dragEnter : null , // Callback(targetNode, data)
44654481 dragOver : null , // Callback(targetNode, data)
44664482 dragDrop : null , // Callback(targetNode, data)
@@ -4473,6 +4489,20 @@ $.ui.fancytree.registerExtension({
44734489 treeInit : function ( ctx ) {
44744490 var tree = ctx . tree ;
44754491 this . _super ( ctx ) ;
4492+ // issue #270: draggable eats mousedown events
4493+ if ( tree . options . dnd . dragStart ) {
4494+ tree . $container . on ( "mousedown" , function ( event ) {
4495+ if ( ! tree . hasFocus ( ) && ctx . options . dnd . focusOnClick ) {
4496+ var node = $ . ui . fancytree . getNode ( event ) ;
4497+ node . debug ( "Re-enable focus that was prevented by jQuery UI draggable." ) ;
4498+ // node.setFocus();
4499+ // $(node.span).closest(":tabbable").focus();
4500+ // $(event.target).trigger("focus");
4501+ // $(event.target).closest(":tabbable").trigger("focus");
4502+ $ ( event . target ) . closest ( ":tabbable" ) . focus ( ) ;
4503+ }
4504+ } ) ;
4505+ }
44764506 _initDragAndDrop ( tree ) ;
44774507 } ,
44784508 /* Override key handler in order to cancel dnd on escape.*/
@@ -4483,6 +4513,12 @@ $.ui.fancytree.registerExtension({
44834513 }
44844514 return this . _super ( ctx ) ;
44854515 } ,
4516+ nodeClick : function ( ctx ) {
4517+ // if( ctx.options.dnd.dragStart ){
4518+ // ctx.tree.$container.focus();
4519+ // }
4520+ return this . _super ( ctx ) ;
4521+ } ,
44864522 /* Display drop marker according to hitMode ('after', 'before', 'over', 'out', 'start', 'stop'). */
44874523 _setDndStatus : function ( sourceNode , targetNode , helper , hitMode , accept ) {
44884524 var posOpts ,
@@ -4790,8 +4826,8 @@ $.ui.fancytree.registerExtension({
47904826 * Released under the MIT license
47914827 * https://github.com/mar10/fancytree/wiki/LicenseInfo
47924828 *
4793- * @version 2.1 .0
4794- * @date 2014-05-29T16:44
4829+ * @version 2.2 .0
4830+ * @date 2014-06-28T17:15
47954831 */
47964832
47974833; ( function ( $ , window , document , undefined ) {
@@ -5105,8 +5141,8 @@ $.ui.fancytree.registerExtension({
51055141 * Released under the MIT license
51065142 * https://github.com/mar10/fancytree/wiki/LicenseInfo
51075143 *
5108- * @version 2.1 .0
5109- * @date 2014-05-29T16:44
5144+ * @version 2.2 .0
5145+ * @date 2014-06-28T17:15
51105146 */
51115147
51125148; ( function ( $ , window , document , undefined ) {
@@ -5267,8 +5303,8 @@ $.ui.fancytree.registerExtension({
52675303 * Released under the MIT license
52685304 * https://github.com/mar10/fancytree/wiki/LicenseInfo
52695305 *
5270- * @version 2.1 .0
5271- * @date 2014-05-29T16:44
5306+ * @version 2.2 .0
5307+ * @date 2014-06-28T17:15
52725308 */
52735309
52745310; ( function ( $ , window , document , undefined ) {
@@ -5395,8 +5431,8 @@ $.ui.fancytree.registerExtension({
53955431 * Released under the MIT license
53965432 * https://github.com/mar10/fancytree/wiki/LicenseInfo
53975433 *
5398- * @version 2.1 .0
5399- * @date 2014-05-29T16:44
5434+ * @version 2.2 .0
5435+ * @date 2014-06-28T17:15
54005436 */
54015437
54025438; ( function ( $ , window , document , undefined ) {
@@ -5597,8 +5633,8 @@ $.ui.fancytree.registerExtension({
55975633 * Released under the MIT license
55985634 * https://github.com/mar10/fancytree/wiki/LicenseInfo
55995635 *
5600- * @version 2.1 .0
5601- * @date 2014-05-29T16:44
5636+ * @version 2.2 .0
5637+ * @date 2014-06-28T17:15
56025638 */
56035639
56045640; ( function ( $ , window , document , undefined ) {
@@ -5935,8 +5971,8 @@ $.ui.fancytree.registerExtension({
59355971 * Released under the MIT license
59365972 * https://github.com/mar10/fancytree/wiki/LicenseInfo
59375973 *
5938- * @version 2.1 .0
5939- * @date 2014-05-29T16:44
5974+ * @version 2.2 .0
5975+ * @date 2014-06-28T17:15
59405976 */
59415977
59425978; ( function ( $ , window , document , undefined ) {
@@ -6297,8 +6333,8 @@ $.ui.fancytree.registerExtension({
62976333 * Released under the MIT license
62986334 * https://github.com/mar10/fancytree/wiki/LicenseInfo
62996335 *
6300- * @version 2.1 .0
6301- * @date 2014-05-29T16:44
6336+ * @version 2.2 .0
6337+ * @date 2014-06-28T17:15
63026338 */
63036339
63046340; ( function ( $ , window , document , undefined ) {
0 commit comments