@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
391 lines (298 loc) • 12.1 kB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ({
/***/ 0:
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(1490);
/***/ }),
/***/ 3:
/***/ (function(module, exports) {
module.exports = function() { throw new Error("define cannot be used indirect"); };
/***/ }),
/***/ 1051:
/***/ (function(module, exports) {
module.exports = require("./kendo.core");
/***/ }),
/***/ 1330:
/***/ (function(module, exports) {
module.exports = require("./kendo.floatinglabel");
/***/ }),
/***/ 1490:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(f, define) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(1051), __webpack_require__(1330)], __WEBPACK_AMD_DEFINE_FACTORY__ = (f), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
})(function() {
var __meta__ = { // jshint ignore:line
id: "textarea",
name: "TextArea",
category: "web",
description: "The TextArea widget represents a multi-line plain-text editing control which enables you to style and provide a floating label functionality to textarea elements",
depends: ["core", "floatinglabel"]
};
(function($, undefined) {
var kendo = window.kendo,
Widget = kendo.ui.Widget,
ui = kendo.ui,
isPlainObject = $.isPlainObject,
NS = ".kendoTextArea",
CHANGE = "change",
DISABLED = "disabled",
READONLY = "readonly",
INPUT = "k-input-inner",
FOCUSED = "k-focus",
LABELCLASSES = "k-label k-input-label",
STATEDISABLED = "k-disabled",
STATEREADONLY = "k-readonly",
ARIA_DISABLED = "aria-disabled",
TEXTAREACONTAINER = "k-textarea-container";
var TextArea = Widget.extend({
init: function(element, options) {
var that = this;
Widget.fn.init.call(that, element, options);
options = $.extend(true, {}, options);
that.options.value = options.value || that.element.val();
that.options.readonly = options.readonly !== undefined ? options.readonly : Boolean(that.element.attr("readonly"));
that.options.enable = options.enable !== undefined ? options.enable : !(Boolean(that.element.attr("disabled")));
that.options.placeholder = options.placeholder || that.element.attr("placeholder");
if (!that.options.value.replace(/\s/g, '').length) {
that.options.value = '';
that.element.val('');
}
that.value(that.options.value);
that._wrapper();
that._label();
that._editable({
readonly: that.options.readonly,
disable: !(that.options.enable)
});
that._applyAttributes();
that._applyCssClasses();
that.element
.addClass(INPUT)
.css("resize", that.options.resizable)
.attr("autocomplete", "off");
kendo.notify(that);
},
events: [
CHANGE
],
attributes: [
"maxLength",
"rows",
"placeholder"
],
options: {
name: 'TextArea',
value: '',
readonly: false,
enable: true,
placeholder: '',
label: null,
resizable: "none",
maxLength: null,
cols: 20,
rows: 1,
rounded: "medium",
size: "medium",
fillMode: "solid",
resize: "none",
overflow: "auto"
},
_applyCssClasses: function(action) {
var that = this,
options = that.options,
resize = kendo.cssProperties.getValidClass({
widget: options.name,
propName: "resize",
value: options.resize
}),
overflow = kendo.cssProperties.getValidClass({
widget: options.name,
propName: "overflow",
value: options.overflow
});
Widget.fn._applyCssClasses.call(that);
if (!resize && options.resize === "none") {
resize = "k-resize-none";
}
action = action || "addClass";
if (options.overflow === "auto") {
overflow = "!k-overflow-y-auto";
}
that.wrapper[action](resize);
that.element[action](overflow);
},
_applyAttributes: function() {
var that = this;
var property;
var attributes = {};
for (property in that.attributes) {
attributes[that.attributes[property]] = that.options[that.attributes[property]];
}
that.element.attr(attributes);
},
value: function(value) {
var that = this;
if (value === undefined) {
return that._value;
}
that._value = value;
that.element.val(value);
},
readonly: function(readonly) {
var that = this;
this._editable({
readonly: readonly === undefined ? true : readonly,
disable: false
});
if (that.floatingLabel) {
that.floatingLabel.readonly(readonly === undefined ? true : readonly);
}
},
enable: function(enable) {
var that = this;
this._editable({
readonly: false,
disable: !(enable = enable === undefined ? true : enable)
});
if (that.floatingLabel) {
that.floatingLabel.enable(enable = enable === undefined ? true : enable);
}
},
focus: function() {
var that = this;
that.element[0].focus();
},
destroy: function() {
var that = this;
if (that.floatingLabel) {
that.floatingLabel.destroy();
}
that.element.off(NS);
Widget.fn.destroy.call(that);
},
setOptions: function(options) {
var that = this;
that._applyCssClasses("removeClass");
Widget.fn.setOptions.call(that, options);
},
_editable: function(options) {
var that = this;
var element = that.element;
var wrapper = that.wrapper;
var disable = options.disable;
var readonly = options.readonly;
element.off(NS);
if (!readonly && !disable) {
element.prop(DISABLED, false)
.prop(READONLY, false)
.attr(ARIA_DISABLED, false);
wrapper.removeClass(STATEDISABLED)
.removeClass(STATEREADONLY);
element.on("focusin" + NS, that._focusin.bind(that));
element.on("focusout" + NS, that._focusout.bind(that));
} else {
element.attr(DISABLED, disable)
.attr(READONLY, readonly)
.attr(ARIA_DISABLED, disable);
wrapper.toggleClass(STATEDISABLED, disable)
.toggleClass(STATEREADONLY, readonly);
}
},
_label: function() {
var that = this;
var element = that.element;
var options = that.options;
var id = element.attr("id");
var floating;
var labelText;
if (options.label !== null) {
floating = isPlainObject(options.label) ? options.label.floating : false;
labelText = isPlainObject(options.label) ? options.label.content : options.label;
if (floating) {
that._floatingLabelContainer = that.wrapper.wrap("<span></span>").parent();
that.floatingLabel = new kendo.ui.FloatingLabel(that._floatingLabelContainer, { widget: that, useReadOnlyClass: true });
that._floatingLabelContainer.addClass(TEXTAREACONTAINER);
}
if (kendo.isFunction(labelText)) {
labelText = labelText.call(that);
}
if (!labelText) {
labelText = "";
}
if (!id) {
id = options.name + "_" + kendo.guid();
element.attr("id", id);
}
that._inputLabel = $("<label class='" + LABELCLASSES + "' for='" + id + "'>" + labelText + "</label>'").insertBefore(that.wrapper);
}
},
_focusin: function() {
var that = this;
that.wrapper.addClass(FOCUSED);
},
_focusout: function() {
var that = this;
var value = that._value;
var newValue = that.element.val();
that.wrapper.removeClass(FOCUSED);
if (value === null) {
value = "";
}
if (value !== newValue) {
that._value = newValue;
that.trigger(CHANGE);
}
},
_wrapper: function() {
var that = this;
var element = that.element;
var DOMElement = element[0];
var wrapper;
wrapper = element.wrap("<span class='k-input k-textarea'></span>").parent();
wrapper[0].style.cssText = DOMElement.style.cssText;
DOMElement.style.width = "100%";
that.wrapper = wrapper.addClass(DOMElement.className).removeClass('input-validation-error');
}
});
kendo.cssProperties.registerPrefix("TextArea", "k-input-");
kendo.cssProperties.registerValues("TextArea", [{
prop: "rounded",
values: kendo.cssProperties.roundedValues.concat([['full', 'full']])
}]);
ui.plugin(TextArea);
})(window.kendo.jQuery);
return window.kendo;
}, __webpack_require__(3));
/***/ })
/******/ });