mirror of
https://github.com/fspc/Yellow-Bike-Database.git
synced 2025-02-22 08:53:23 -05:00
Adds autogrow library (pulling with git) version 1.16
This commit is contained in:
parent
914d15f98c
commit
3e76e145c6
1
js/jquery.ns-autogrow/.gitignore
vendored
Normal file
1
js/jquery.ns-autogrow/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules
|
7
js/jquery.ns-autogrow/.npmignore
Normal file
7
js/jquery.ns-autogrow/.npmignore
Normal file
@ -0,0 +1,7 @@
|
||||
bower_components/
|
||||
bower.json
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
gulpfile.cofee
|
||||
src/
|
||||
.github
|
89
js/jquery.ns-autogrow/README.md
Normal file
89
js/jquery.ns-autogrow/README.md
Normal file
@ -0,0 +1,89 @@
|
||||
### Automatically adjust textarea width/height based on user input.
|
||||
#### Non-sucking version, still works great and used by a lot of people with no issues!
|
||||
|
||||
|
||||
The only reason I wrote this jQuery plugin is that other plugins suck. They are wide-spread, but outdated and buggy.
|
||||
|
||||
Advantages of jquery.ns-autogrow:
|
||||
|
||||
* Grows vertically, horizontally or both
|
||||
* Correctly handles 2 or more spaces
|
||||
* Copies more css and font styles to shadow div
|
||||
* Correctly handles long words on one line
|
||||
* Flickering can be disabled on Enter
|
||||
* Doesn't add more than one handler to textarea
|
||||
* Handles textarea scrollbar if any
|
||||
* Improved support of special characters
|
||||
|
||||
## Download
|
||||
Run one of these commands in your bash according to your needs.
|
||||
|
||||
`git clone https://github.com/ro31337/jquery.ns-autogrow.git`
|
||||
|
||||
`bower install jquery.ns-autogrow`
|
||||
|
||||
`npm install jquery.ns-autogrow`
|
||||
|
||||
Or download the latest version from the [releases](https://github.com/ro31337/jquery.ns-autogrow/releases) page.
|
||||
|
||||
### Options
|
||||
|
||||
You can provide multiple options to autogrow like:
|
||||
|
||||
```
|
||||
$('.example2 textarea').autogrow({vertical: true, horizontal: false});
|
||||
```
|
||||
|
||||
List of options:
|
||||
|
||||
Option | Description
|
||||
-------|------------
|
||||
vertical | (true/false) - Enable/Disable vertical autogrow (true by default)
|
||||
horizontal | (true/false) - Enable/Disable horizontal autogrow (true by default)
|
||||
postGrowCallback | Post grow callback. Executes after dimensions of textarea have been adjusted.
|
||||
flickering | (true/false) - Enable/Disable flickering. If flickering is disabled, extra line will be added to textarea. Flickering is _enabled_ by default.
|
||||
|
||||
There are few more options reserved for debugging purposes. All debugging options start with `debug` prefix:
|
||||
|
||||
Option | Description
|
||||
-------|------------
|
||||
debugx | X position of shadow element (-10000 by default)
|
||||
debugy | Y position of shadow element (-10000 by default)
|
||||
debugcolor | Color of shadow element (yellow by default)
|
||||
|
||||
|
||||
### Demo
|
||||
|
||||
[Click here](http://htmlpreview.github.io/?https://raw.githubusercontent.com/ro31337/jquery.ns-autogrow/master/demo/index.html)
|
||||
|
||||
### Plans:
|
||||
|
||||
* Test and support arabic languages
|
||||
|
||||
### :heart: Like it? :heart:
|
||||
|
||||
:star: Star it! :star:
|
||||
|
||||
### The MIT License (MIT)
|
||||
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Roman Pushkin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
29
js/jquery.ns-autogrow/bower.json
Normal file
29
js/jquery.ns-autogrow/bower.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"name": "jquery.ns-autogrow",
|
||||
"description": "Automatically adjust textarea height based on user input. Non-sucking version.",
|
||||
"main": "dist/jquery.ns-autogrow.js",
|
||||
"keywords": [
|
||||
"autogrow",
|
||||
"textarea",
|
||||
"form",
|
||||
"autosize",
|
||||
"ui",
|
||||
"jquery-plugin",
|
||||
"ecosystem:jquery"
|
||||
],
|
||||
"author": "Roman Pushkin <roman.pushkin@gmail.com>",
|
||||
"homepage": "https://github.com/ro31337/jquery.ns-autogrow",
|
||||
"license": "MIT",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"bower_components",
|
||||
"node_modules",
|
||||
"npm-debug.log",
|
||||
"gulpfile.coffee",
|
||||
"package.json",
|
||||
"src"
|
||||
],
|
||||
"dependencies": {
|
||||
"jquery": "1"
|
||||
}
|
||||
}
|
31
js/jquery.ns-autogrow/demo/index.html
Normal file
31
js/jquery.ns-autogrow/demo/index.html
Normal file
@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<script data-require="jquery@2.1.4" data-semver="2.1.4" src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
|
||||
<script src="../dist/jquery.ns-autogrow.min.js"></script>
|
||||
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css" />
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
<script src="script.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="example1">
|
||||
<textarea placeholder="horizontal and vertical"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="example2">
|
||||
<textarea placeholder="vertical only"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="example3">
|
||||
<textarea placeholder="horizontal only"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="example4">
|
||||
<textarea placeholder="horizontal and vertical, no flickering"></textarea>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
6
js/jquery.ns-autogrow/demo/script.js
Normal file
6
js/jquery.ns-autogrow/demo/script.js
Normal file
@ -0,0 +1,6 @@
|
||||
$(function(){
|
||||
$('.example1 textarea').autogrow();
|
||||
$('.example2 textarea').autogrow({vertical: true, horizontal: false});
|
||||
$('.example3 textarea').autogrow({vertical: false, horizontal: true});
|
||||
$('.example4 textarea').autogrow({flickering: false});
|
||||
});
|
3
js/jquery.ns-autogrow/demo/style.css
Normal file
3
js/jquery.ns-autogrow/demo/style.css
Normal file
@ -0,0 +1,3 @@
|
||||
body { padding: 20px; }
|
||||
textarea { min-width: 240px; font-size: 18px; }
|
||||
.example3 textarea { min-height: 50px; }
|
139
js/jquery.ns-autogrow/dist/jquery.ns-autogrow.js
vendored
Normal file
139
js/jquery.ns-autogrow/dist/jquery.ns-autogrow.js
vendored
Normal file
@ -0,0 +1,139 @@
|
||||
/*!
|
||||
Non-Sucking Autogrow 1.1.6
|
||||
license: MIT
|
||||
author: Roman Pushkin
|
||||
https://github.com/ro31337/jquery.ns-autogrow
|
||||
*/
|
||||
(function() {
|
||||
var getVerticalScrollbarWidth;
|
||||
|
||||
(function($, window) {
|
||||
return $.fn.autogrow = function(options) {
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
if (options.horizontal == null) {
|
||||
options.horizontal = true;
|
||||
}
|
||||
if (options.vertical == null) {
|
||||
options.vertical = true;
|
||||
}
|
||||
if (options.debugx == null) {
|
||||
options.debugx = -10000;
|
||||
}
|
||||
if (options.debugy == null) {
|
||||
options.debugy = -10000;
|
||||
}
|
||||
if (options.debugcolor == null) {
|
||||
options.debugcolor = 'yellow';
|
||||
}
|
||||
if (options.flickering == null) {
|
||||
options.flickering = true;
|
||||
}
|
||||
if (options.postGrowCallback == null) {
|
||||
options.postGrowCallback = function() {};
|
||||
}
|
||||
if (options.verticalScrollbarWidth == null) {
|
||||
options.verticalScrollbarWidth = getVerticalScrollbarWidth();
|
||||
}
|
||||
if (options.horizontal === false && options.vertical === false) {
|
||||
return;
|
||||
}
|
||||
return this.filter('textarea').each(function() {
|
||||
var $e, $shadow, fontSize, heightPadding, minHeight, minWidth, update;
|
||||
$e = $(this);
|
||||
if ($e.data('autogrow-enabled')) {
|
||||
return;
|
||||
}
|
||||
$e.data('autogrow-enabled');
|
||||
minHeight = $e.height();
|
||||
minWidth = $e.width();
|
||||
heightPadding = $e.css('lineHeight') * 1 || 0;
|
||||
$e.hasVerticalScrollBar = function() {
|
||||
return $e[0].clientHeight < $e[0].scrollHeight;
|
||||
};
|
||||
$shadow = $('<div class="autogrow-shadow"></div>').css({
|
||||
position: 'absolute',
|
||||
display: 'inline-block',
|
||||
'background-color': options.debugcolor,
|
||||
top: options.debugy,
|
||||
left: options.debugx,
|
||||
'max-width': $e.css('max-width'),
|
||||
'padding': $e.css('padding'),
|
||||
fontSize: $e.css('fontSize'),
|
||||
fontFamily: $e.css('fontFamily'),
|
||||
fontWeight: $e.css('fontWeight'),
|
||||
lineHeight: $e.css('lineHeight'),
|
||||
resize: 'none',
|
||||
'word-wrap': 'break-word'
|
||||
}).appendTo(document.body);
|
||||
if (options.horizontal === false) {
|
||||
$shadow.css({
|
||||
'width': $e.width()
|
||||
});
|
||||
} else {
|
||||
fontSize = $e.css('font-size');
|
||||
$shadow.css('padding-right', '+=' + fontSize);
|
||||
$shadow.normalPaddingRight = $shadow.css('padding-right');
|
||||
}
|
||||
update = (function(_this) {
|
||||
return function(event) {
|
||||
var height, val, width;
|
||||
val = _this.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\n /g, '<br/> ').replace(/"/g, '"').replace(/'/g, ''').replace(/\n$/, '<br/> ').replace(/\n/g, '<br/>').replace(/ {2,}/g, function(space) {
|
||||
return Array(space.length - 1).join(' ') + ' ';
|
||||
});
|
||||
if (/(\n|\r)/.test(_this.value)) {
|
||||
val += '<br />';
|
||||
if (options.flickering === false) {
|
||||
val += '<br />';
|
||||
}
|
||||
}
|
||||
$shadow.html(val);
|
||||
if (options.vertical === true) {
|
||||
height = Math.max($shadow.height() + heightPadding, minHeight);
|
||||
$e.height(height);
|
||||
}
|
||||
if (options.horizontal === true) {
|
||||
$shadow.css('padding-right', $shadow.normalPaddingRight);
|
||||
if (options.vertical === false && $e.hasVerticalScrollBar()) {
|
||||
$shadow.css('padding-right', "+=" + options.verticalScrollbarWidth + "px");
|
||||
}
|
||||
width = Math.max($shadow.outerWidth(), minWidth);
|
||||
$e.width(width);
|
||||
}
|
||||
return options.postGrowCallback($e);
|
||||
};
|
||||
})(this);
|
||||
$e.change(update).keyup(update).keydown(update);
|
||||
$(window).resize(update);
|
||||
return update();
|
||||
});
|
||||
};
|
||||
})(window.jQuery, window);
|
||||
|
||||
getVerticalScrollbarWidth = function() {
|
||||
var inner, outer, w1, w2;
|
||||
inner = document.createElement('p');
|
||||
inner.style.width = "100%";
|
||||
inner.style.height = "200px";
|
||||
outer = document.createElement('div');
|
||||
outer.style.position = "absolute";
|
||||
outer.style.top = "0px";
|
||||
outer.style.left = "0px";
|
||||
outer.style.visibility = "hidden";
|
||||
outer.style.width = "200px";
|
||||
outer.style.height = "150px";
|
||||
outer.style.overflow = "hidden";
|
||||
outer.appendChild(inner);
|
||||
document.body.appendChild(outer);
|
||||
w1 = inner.offsetWidth;
|
||||
outer.style.overflow = 'scroll';
|
||||
w2 = inner.offsetWidth;
|
||||
if (w1 === w2) {
|
||||
w2 = outer.clientWidth;
|
||||
}
|
||||
document.body.removeChild(outer);
|
||||
return w1 - w2;
|
||||
};
|
||||
|
||||
}).call(this);
|
7
js/jquery.ns-autogrow/dist/jquery.ns-autogrow.min.js
vendored
Normal file
7
js/jquery.ns-autogrow/dist/jquery.ns-autogrow.min.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*!
|
||||
Non-Sucking Autogrow 1.1.6
|
||||
license: MIT
|
||||
author: Roman Pushkin
|
||||
https://github.com/ro31337/jquery.ns-autogrow
|
||||
*/
|
||||
(function(){var e;!function(t,l){return t.fn.autogrow=function(i){if(null==i&&(i={}),null==i.horizontal&&(i.horizontal=!0),null==i.vertical&&(i.vertical=!0),null==i.debugx&&(i.debugx=-1e4),null==i.debugy&&(i.debugy=-1e4),null==i.debugcolor&&(i.debugcolor="yellow"),null==i.flickering&&(i.flickering=!0),null==i.postGrowCallback&&(i.postGrowCallback=function(){}),null==i.verticalScrollbarWidth&&(i.verticalScrollbarWidth=e()),i.horizontal!==!1||i.vertical!==!1)return this.filter("textarea").each(function(){var e,n,r,o,a,c,d;if(e=t(this),!e.data("autogrow-enabled"))return e.data("autogrow-enabled"),a=e.height(),c=e.width(),o=1*e.css("lineHeight")||0,e.hasVerticalScrollBar=function(){return e[0].clientHeight<e[0].scrollHeight},n=t('<div class="autogrow-shadow"></div>').css({position:"absolute",display:"inline-block","background-color":i.debugcolor,top:i.debugy,left:i.debugx,"max-width":e.css("max-width"),padding:e.css("padding"),fontSize:e.css("fontSize"),fontFamily:e.css("fontFamily"),fontWeight:e.css("fontWeight"),lineHeight:e.css("lineHeight"),resize:"none","word-wrap":"break-word"}).appendTo(document.body),i.horizontal===!1?n.css({width:e.width()}):(r=e.css("font-size"),n.css("padding-right","+="+r),n.normalPaddingRight=n.css("padding-right")),d=function(t){return function(l){var r,d,s;return d=t.value.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\n /g,"<br/> ").replace(/"/g,""").replace(/'/g,"'").replace(/\n$/,"<br/> ").replace(/\n/g,"<br/>").replace(/ {2,}/g,function(e){return Array(e.length-1).join(" ")+" "}),/(\n|\r)/.test(t.value)&&(d+="<br />",i.flickering===!1&&(d+="<br />")),n.html(d),i.vertical===!0&&(r=Math.max(n.height()+o,a),e.height(r)),i.horizontal===!0&&(n.css("padding-right",n.normalPaddingRight),i.vertical===!1&&e.hasVerticalScrollBar()&&n.css("padding-right","+="+i.verticalScrollbarWidth+"px"),s=Math.max(n.outerWidth(),c),e.width(s)),i.postGrowCallback(e)}}(this),e.change(d).keyup(d).keydown(d),t(l).resize(d),d()})}}(window.jQuery,window),e=function(){var e,t,l,i;return e=document.createElement("p"),e.style.width="100%",e.style.height="200px",t=document.createElement("div"),t.style.position="absolute",t.style.top="0px",t.style.left="0px",t.style.visibility="hidden",t.style.width="200px",t.style.height="150px",t.style.overflow="hidden",t.appendChild(e),document.body.appendChild(t),l=e.offsetWidth,t.style.overflow="scroll",i=e.offsetWidth,l===i&&(i=t.clientWidth),document.body.removeChild(t),l-i}}).call(this);
|
54
js/jquery.ns-autogrow/gulpfile.coffee
Normal file
54
js/jquery.ns-autogrow/gulpfile.coffee
Normal file
@ -0,0 +1,54 @@
|
||||
gulp = require 'gulp'
|
||||
del = require 'del'
|
||||
coffee = require 'gulp-coffee'
|
||||
coffeelint = require 'gulp-coffeelint'
|
||||
header = require 'gulp-header'
|
||||
uglify = require 'gulp-uglify'
|
||||
rename = require 'gulp-rename'
|
||||
pjson = require './package.json'
|
||||
copyright = """
|
||||
/*!
|
||||
Non-Sucking Autogrow #{pjson.version}
|
||||
license: #{pjson.license}
|
||||
author: Roman Pushkin
|
||||
#{pjson.homepage}
|
||||
*/
|
||||
|
||||
"""
|
||||
|
||||
dest = 'dist/'
|
||||
source = 'src/'
|
||||
code =
|
||||
in: "#{source}*.coffee"
|
||||
out: "#{dest}"
|
||||
|
||||
gulp.task 'clean', ->
|
||||
del [dest + '*']
|
||||
|
||||
gulp.task 'build', ->
|
||||
gulp
|
||||
.src code.in
|
||||
.pipe coffeelint()
|
||||
.pipe coffeelint.reporter() # Show coffeelint errors
|
||||
.pipe coffeelint.reporter('fail') # Make sure it fails in case of error
|
||||
.pipe coffee()
|
||||
.pipe header copyright
|
||||
.pipe gulp.dest(code.out)
|
||||
|
||||
gulp
|
||||
.src code.in
|
||||
.pipe coffeelint()
|
||||
.pipe coffeelint.reporter() # Show coffeelint errors
|
||||
.pipe coffeelint.reporter('fail') # Make sure it fails in case of error
|
||||
.pipe coffee()
|
||||
.pipe uglify()
|
||||
.pipe rename({ suffix: '.min' })
|
||||
.pipe header copyright
|
||||
.pipe gulp.dest(code.out)
|
||||
|
||||
gulp.task 'watch', ->
|
||||
gulp
|
||||
.watch code.in, ['build']
|
||||
|
||||
gulp.task 'default', ['clean', 'build', 'watch'], ->
|
||||
|
45
js/jquery.ns-autogrow/package.json
Normal file
45
js/jquery.ns-autogrow/package.json
Normal file
@ -0,0 +1,45 @@
|
||||
{
|
||||
"name": "jquery.ns-autogrow",
|
||||
"version": "1.1.6",
|
||||
"description": "Automatically adjust textarea height based on user input. Non-sucking version.",
|
||||
"main": "dist/jquery.ns-autogrow.js",
|
||||
"keywords": [
|
||||
"autogrow",
|
||||
"textarea",
|
||||
"form",
|
||||
"autosize",
|
||||
"ui",
|
||||
"jquery-plugin",
|
||||
"ecosystem:jquery"
|
||||
],
|
||||
"author": "Roman Pushkin <roman.pushkin@gmail.com>",
|
||||
"homepage": "https://github.com/ro31337/jquery.ns-autogrow",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ro31337/jquery.ns-autogrow.git"
|
||||
},
|
||||
"files": [
|
||||
"demo",
|
||||
"dist"
|
||||
],
|
||||
"directories": {
|
||||
"example": "demo"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/ro31337/jquery.ns-autogrow/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"jquery": "^1.12.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"coffee-script": "^1.10.0",
|
||||
"del": "^2.0.2",
|
||||
"gulp": "^3.9.0",
|
||||
"gulp-coffee": "^2.3.1",
|
||||
"gulp-coffeelint": "^0.5.0",
|
||||
"gulp-header": "^1.7.1",
|
||||
"gulp-rename": "^1.2.2",
|
||||
"gulp-uglify": "^1.4.1"
|
||||
}
|
||||
}
|
131
js/jquery.ns-autogrow/src/jquery.ns-autogrow.coffee
Normal file
131
js/jquery.ns-autogrow/src/jquery.ns-autogrow.coffee
Normal file
@ -0,0 +1,131 @@
|
||||
(($, window) ->
|
||||
|
||||
$.fn.autogrow = (options) ->
|
||||
options ?= {}
|
||||
options.horizontal ?= true
|
||||
options.vertical ?= true
|
||||
options.debugx ?= -10000
|
||||
options.debugy ?= -10000
|
||||
options.debugcolor ?= 'yellow'
|
||||
options.flickering ?= true
|
||||
options.postGrowCallback ?= ->
|
||||
options.verticalScrollbarWidth ?= getVerticalScrollbarWidth()
|
||||
|
||||
if options.horizontal is false and options.vertical is false
|
||||
return
|
||||
|
||||
@.filter('textarea').each ->
|
||||
|
||||
$e = $(@)
|
||||
|
||||
return if $e.data 'autogrow-enabled'
|
||||
$e.data 'autogrow-enabled'
|
||||
|
||||
minHeight = $e.height()
|
||||
minWidth = $e.width()
|
||||
heightPadding = $e.css('lineHeight') * 1 || 0
|
||||
$e.hasVerticalScrollBar = ->
|
||||
$e[0].clientHeight < $e[0].scrollHeight
|
||||
|
||||
$shadow = $('<div class="autogrow-shadow"></div>')
|
||||
.css (
|
||||
position: 'absolute'
|
||||
display: 'inline-block'
|
||||
'background-color': options.debugcolor
|
||||
top: options.debugy
|
||||
left: options.debugx
|
||||
'max-width': $e.css 'max-width'
|
||||
'padding': $e.css 'padding'
|
||||
fontSize: $e.css 'fontSize'
|
||||
fontFamily: $e.css 'fontFamily'
|
||||
fontWeight: $e.css 'fontWeight'
|
||||
lineHeight: $e.css 'lineHeight'
|
||||
resize: 'none'
|
||||
'word-wrap': 'break-word' )
|
||||
.appendTo document.body
|
||||
|
||||
if options.horizontal is false
|
||||
# fix width of shadow div, so it will remain unchanged
|
||||
$shadow.css({'width': $e.width()})
|
||||
else
|
||||
# make sure we have right padding to avoid flickering
|
||||
fontSize = $e.css 'font-size' # => 20px
|
||||
$shadow.css('padding-right', '+=' + fontSize)
|
||||
$shadow.normalPaddingRight = $shadow.css 'padding-right'
|
||||
|
||||
update = (event) =>
|
||||
val = @
|
||||
.value
|
||||
.replace /&/g, '&'
|
||||
.replace /</g, '<'
|
||||
.replace />/g, '>'
|
||||
.replace /\n /g, '<br/> '
|
||||
.replace /"/g, '"'
|
||||
.replace /'/g, '''
|
||||
.replace /\n$/, '<br/> '
|
||||
.replace /\n/g, '<br/>'
|
||||
.replace(
|
||||
/ {2,}/g
|
||||
(space) -> Array(space.length - 1).join(' ') + ' '
|
||||
)
|
||||
|
||||
if /(\n|\r)/.test @.value
|
||||
val += '<br />'
|
||||
|
||||
# no flickering, but one extra line will be added
|
||||
if options.flickering is false
|
||||
val += '<br />'
|
||||
|
||||
$shadow.html val
|
||||
|
||||
if options.vertical is true
|
||||
height = Math.max($shadow.height() + heightPadding, minHeight)
|
||||
$e.height height
|
||||
|
||||
if options.horizontal is true
|
||||
$shadow.css 'padding-right', $shadow.normalPaddingRight
|
||||
|
||||
# if it should not grow vertically and if we have scrollbar,
|
||||
# add additional padding to shadow div to emulate the scrollbar
|
||||
if options.vertical is false and $e.hasVerticalScrollBar()
|
||||
$shadow.css 'padding-right', "+=#{options.verticalScrollbarWidth}px"
|
||||
|
||||
# outerWidth is width with padding
|
||||
width = Math.max $shadow.outerWidth(), minWidth
|
||||
$e.width width
|
||||
|
||||
options.postGrowCallback $e
|
||||
|
||||
$e.change update
|
||||
.keyup update
|
||||
.keydown update
|
||||
|
||||
$(window).resize update
|
||||
update()
|
||||
|
||||
) window.jQuery, window
|
||||
|
||||
getVerticalScrollbarWidth = ->
|
||||
inner = document.createElement('p')
|
||||
inner.style.width = "100%"
|
||||
inner.style.height = "200px"
|
||||
|
||||
outer = document.createElement('div')
|
||||
outer.style.position = "absolute"
|
||||
outer.style.top = "0px"
|
||||
outer.style.left = "0px"
|
||||
outer.style.visibility = "hidden"
|
||||
outer.style.width = "200px"
|
||||
outer.style.height = "150px"
|
||||
outer.style.overflow = "hidden"
|
||||
outer.appendChild (inner)
|
||||
|
||||
document.body.appendChild (outer)
|
||||
w1 = inner.offsetWidth
|
||||
outer.style.overflow = 'scroll'
|
||||
w2 = inner.offsetWidth
|
||||
if w1 is w2
|
||||
w2 = outer.clientWidth
|
||||
|
||||
document.body.removeChild (outer)
|
||||
w1 - w2
|
Loading…
x
Reference in New Issue
Block a user