-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjquery.yaar.min.js
1 lines (1 loc) · 1.72 KB
/
jquery.yaar.min.js
1
(function($){var cssAttrs=['font-family','font-size','font-weight','font-style','font-size-adjust','text-transform','text-decoration','letter-spacing','word-spacing','line-height','word-wrap','white-space'];var YAAR=function(textarea,options){this.options=$.extend({},options);this.textarea=textarea;var rows=textarea.attr("rows");if(rows){rows=parseInt(rows,10);if(rows>=1){this.options.minRows=rows}}this.init()};$.extend(YAAR.prototype,{init:function(){this.sizer=$('<div/>');var sizer=this.sizer;var textarea=this.textarea;textarea.css("resize","none");textarea.css("overflow","hidden");var sizer=this.sizer;sizer.css("position","absolute");sizer.css("display","inline-block");sizer.css("visibility","hidden");sizer.css("display","inline-block");$.each(cssAttrs,function(i,attr){sizer.css(attr,textarea.css(attr))});$("body").append(sizer);sizer.text("a");this.lineHeight=sizer.height();sizer.text("");sizer.remove();var _this=this;textarea.on("textchange.yaar",function(){_this.setHeight()})},uninit:function(){this.textarea.off("textchange.yaar")},setHeight:function(){$("body").append(this.sizer);this.sizer.css("width",this.textarea.width());this.sizer.text(this.textarea.val()+(this.options.textPadding||""));var rows=Math.ceil(this.sizer.height()/this.lineHeight);if(rows<this.options.minRows){rows=this.options.minRows}this.textarea.attr("rows",rows);this.sizer.remove()}});$.fn.yaar=function(option){return this.each(function(){var el=$(this);var yaar=el.data("yaar");if(option==='destroy'){if(yaar){yaar.uninit();el.data("yaar",null)}return}if(!yaar){option=option||{};var options=$.extend({},$.fn.yaar.defaults,option);yaar=new YAAR(el,options);el.data("yaar",yaar)}yaar.setHeight()})};$.fn.yaar.defaults={textPadding:"W",minRows:1}})(jQuery);