react-selectize-wesm87
Version:
A Stateless & Flexible Select component for React inspired by Selectize
65 lines (64 loc) • 2.39 kB
JavaScript
(function(){
var ref$, each, objToPairs, React, input, createFactory, createReactClass, findDOMNode;
ref$ = require('prelude-ls'), each = ref$.each, objToPairs = ref$.objToPairs;
React = require('react'), input = React.DOM.input, createFactory = React.createFactory;
createReactClass = require('create-react-class');
findDOMNode = require('react-dom').findDOMNode;
module.exports = createReactClass({
displayName: 'ResizableInput',
render: function(){
var ref$;
return input((ref$ = import$({}, this.props), ref$.type = 'input', ref$.className = 'resizable-input', ref$));
},
autosize: function(){
var x$, inputElement, y$, dummpyInput, ref$;
x$ = inputElement = findDOMNode(this);
x$.style.width = '0px';
if (inputElement.value.length === 0) {
return inputElement.style.width = !!(inputElement != null && inputElement.currentStyle) ? '4px' : '2px';
} else {
if (inputElement.scrollWidth > 0) {
return inputElement.style.width = (2 + inputElement.scrollWidth) + "px";
} else {
y$ = dummpyInput = document.createElement('div');
y$.innerHTML = inputElement.value;
(function(){
var ref$;
return ref$ = dummpyInput.style, ref$.display = 'inline-block', ref$.width = "", ref$;
})(
each(function(arg$){
var key, value;
key = arg$[0], value = arg$[1];
return dummpyInput.style[key] = value;
})(
objToPairs(
!!inputElement.currentStyle
? inputElement.currentStyle
: (ref$ = document.defaultView) != null
? ref$
: window.getComputedStyle(inputElement))));
document.body.appendChild(dummpyInput);
inputElement.style.width = (4 + dummpyInput.clientWidth) + "px";
return document.body.removeChild(dummpyInput);
}
}
},
componentDidMount: function(){
this.autosize();
},
componentDidUpdate: function(){
this.autosize();
},
blur: function(){
return findDOMNode(this).blur();
},
focus: function(){
return findDOMNode(this).focus();
}
});
function import$(obj, src){
var own = {}.hasOwnProperty;
for (var key in src) if (own.call(src, key)) obj[key] = src[key];
return obj;
}
}).call(this);