primo commit
This commit is contained in:
		
							
								
								
									
										83
									
								
								components/com_tabulizer/assets/js/slickgrid/plugins/slick.autotooltips.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								components/com_tabulizer/assets/js/slickgrid/plugins/slick.autotooltips.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,83 @@ | ||||
| (function ($) { | ||||
|   // Register namespace | ||||
|   $.extend(true, window, { | ||||
|     "Slick": { | ||||
|       "AutoTooltips": AutoTooltips | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   /** | ||||
|    * AutoTooltips plugin to show/hide tooltips when columns are too narrow to fit content. | ||||
|    * @constructor | ||||
|    * @param {boolean} [options.enableForCells=true]        - Enable tooltip for grid cells | ||||
|    * @param {boolean} [options.enableForHeaderCells=false] - Enable tooltip for header cells | ||||
|    * @param {number}  [options.maxToolTipLength=null]      - The maximum length for a tooltip | ||||
|    */ | ||||
|   function AutoTooltips(options) { | ||||
|     var _grid; | ||||
|     var _self = this; | ||||
|     var _defaults = { | ||||
|       enableForCells: true, | ||||
|       enableForHeaderCells: false, | ||||
|       maxToolTipLength: null | ||||
|     }; | ||||
|      | ||||
|     /** | ||||
|      * Initialize plugin. | ||||
|      */ | ||||
|     function init(grid) { | ||||
|       options = $.extend(true, {}, _defaults, options); | ||||
|       _grid = grid; | ||||
|       if (options.enableForCells) _grid.onMouseEnter.subscribe(handleMouseEnter); | ||||
|       if (options.enableForHeaderCells) _grid.onHeaderMouseEnter.subscribe(handleHeaderMouseEnter); | ||||
|     } | ||||
|      | ||||
|     /** | ||||
|      * Destroy plugin. | ||||
|      */ | ||||
|     function destroy() { | ||||
|       if (options.enableForCells) _grid.onMouseEnter.unsubscribe(handleMouseEnter); | ||||
|       if (options.enableForHeaderCells) _grid.onHeaderMouseEnter.unsubscribe(handleHeaderMouseEnter); | ||||
|     } | ||||
|      | ||||
|     /** | ||||
|      * Handle mouse entering grid cell to add/remove tooltip. | ||||
|      * @param {jQuery.Event} e - The event | ||||
|      */ | ||||
|     function handleMouseEnter(e) { | ||||
|       var cell = _grid.getCellFromEvent(e); | ||||
|       if (cell) { | ||||
|         var $node = $(_grid.getCellNode(cell.row, cell.cell)); | ||||
|         var text; | ||||
|         if ($node.innerWidth() < $node[0].scrollWidth) { | ||||
|           text = $.trim($node.text()); | ||||
|           if (options.maxToolTipLength && text.length > options.maxToolTipLength) { | ||||
|             text = text.substr(0, options.maxToolTipLength - 3) + "..."; | ||||
|           } | ||||
|         } else { | ||||
|           text = ""; | ||||
|         } | ||||
|         $node.attr("title", text); | ||||
|       } | ||||
|     } | ||||
|      | ||||
|     /** | ||||
|      * Handle mouse entering header cell to add/remove tooltip. | ||||
|      * @param {jQuery.Event} e     - The event | ||||
|      * @param {object} args.column - The column definition | ||||
|      */ | ||||
|     function handleHeaderMouseEnter(e, args) { | ||||
|       var column = args.column, | ||||
|           $node = $(e.target).closest(".slick-header-column"); | ||||
|       if (!column.toolTip) { | ||||
|         $node.attr("title", ($node.innerWidth() < $node[0].scrollWidth) ? column.name : ""); | ||||
|       } | ||||
|     } | ||||
|      | ||||
|     // Public API | ||||
|     $.extend(this, { | ||||
|       "init": init, | ||||
|       "destroy": destroy | ||||
|     }); | ||||
|   } | ||||
| })(jQuery); | ||||
		Reference in New Issue
	
	Block a user