mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-25 05:19:22 +00:00
created textarea 2.0 object
This commit is contained in:
parent
37adf3aa0d
commit
836127d08f
@ -15,3 +15,4 @@ ComunicWeb would not exists without the following technologies developped by the
|
|||||||
- Select2 4.0
|
- Select2 4.0
|
||||||
- bootstrap-notify
|
- bootstrap-notify
|
||||||
- Twitter Emoji (https://github.com/twitter/twemoji)
|
- Twitter Emoji (https://github.com/twitter/twemoji)
|
||||||
|
- jQuery Textarea AutoSize plugin (by Javier Julio)
|
54
assets/3rdparty/jquery.textarea_autosize/jquery.textarea_autosize.js
vendored
Executable file
54
assets/3rdparty/jquery.textarea_autosize/jquery.textarea_autosize.js
vendored
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery Textarea AutoSize plugin
|
||||||
|
* Author: Javier Julio
|
||||||
|
* Licensed under the MIT license
|
||||||
|
*/
|
||||||
|
;(function ($, window, document, undefined) {
|
||||||
|
|
||||||
|
var pluginName = "textareaAutoSize";
|
||||||
|
var pluginDataName = "plugin_" + pluginName;
|
||||||
|
|
||||||
|
var containsText = function (value) {
|
||||||
|
return (value.replace(/\s/g, '').length > 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
function Plugin(element, options) {
|
||||||
|
this.element = element;
|
||||||
|
this.$element = $(element);
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
Plugin.prototype = {
|
||||||
|
init: function() {
|
||||||
|
var height = this.$element.outerHeight();
|
||||||
|
var diff = parseInt(this.$element.css('paddingBottom')) +
|
||||||
|
parseInt(this.$element.css('paddingTop')) || 0;
|
||||||
|
|
||||||
|
if (containsText(this.element.value)) {
|
||||||
|
this.$element.height(this.element.scrollHeight - diff);
|
||||||
|
}
|
||||||
|
|
||||||
|
// keyup is required for IE to properly reset height when deleting text
|
||||||
|
this.$element.on('input keyup', function(event) {
|
||||||
|
var $window = $(window);
|
||||||
|
var currentScrollPosition = $window.scrollTop();
|
||||||
|
|
||||||
|
$(this)
|
||||||
|
.height(0)
|
||||||
|
.height(this.scrollHeight - diff);
|
||||||
|
|
||||||
|
$window.scrollTop(currentScrollPosition);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
$.fn[pluginName] = function (options) {
|
||||||
|
this.each(function() {
|
||||||
|
if (!$.data(this, pluginDataName)) {
|
||||||
|
$.data(this, pluginDataName, new Plugin(this, options));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return this;
|
||||||
|
};
|
||||||
|
|
||||||
|
})(jQuery, window, document);
|
1
assets/3rdparty/jquery.textarea_autosize/jquery.textarea_autosize.min.js
vendored
Executable file
1
assets/3rdparty/jquery.textarea_autosize/jquery.textarea_autosize.min.js
vendored
Executable file
@ -0,0 +1 @@
|
|||||||
|
!function(t,e,i,n){function s(e,i){this.element=e,this.$element=t(e),this.init()}var h="textareaAutoSize",o="plugin_"+h,r=function(t){return t.replace(/\s/g,"").length>0};s.prototype={init:function(){var i=parseInt(this.$element.css("paddingBottom"))+parseInt(this.$element.css("paddingTop"))+parseInt(this.$element.css("borderTopWidth"))+parseInt(this.$element.css("borderBottomWidth"))||0;r(this.element.value)&&this.$element.height(this.element.scrollHeight-i),this.$element.on("input keyup",function(n){var s=t(e),h=s.scrollTop();t(this).height(0).height(this.scrollHeight-i),s.scrollTop(h)})}},t.fn[h]=function(e){return this.each(function(){t.data(this,o)||t.data(this,o,new s(this,e))}),this}}(jQuery,window,document);
|
@ -602,6 +602,13 @@ var ComunicWeb = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modern textarea handler
|
||||||
|
*/
|
||||||
|
textarea: {
|
||||||
|
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,14 +27,15 @@ function createElem(nodeType, appendTo){
|
|||||||
* @param {Object} infos Informations about the HTML node to create
|
* @param {Object} infos Informations about the HTML node to create
|
||||||
* @info {String} type The type of the new node
|
* @info {String} type The type of the new node
|
||||||
* @info {HTMLElement} appendTo HTML Element that will receive the new node
|
* @info {HTMLElement} appendTo HTML Element that will receive the new node
|
||||||
* @info {HTMLElement} insertBefore Insert before specified HTML element
|
* @info {String} insertBefore Insert before specified HTML element
|
||||||
* @info {HTMLElement} class The class of the new element
|
* @info {String} class The class of the new element
|
||||||
* @info {HTMLElement} id The ID of the new element
|
* @info {String} id The ID of the new element
|
||||||
* @info {HTMLElement} title The title of the new element
|
* @info {String} title The title of the new element
|
||||||
* @info {HTMLElement} src The src attribute of the new element
|
* @info {String} src The src attribute of the new element
|
||||||
* @info {HTMLElement} type The type of the new element
|
* @info {String} type The type of the new element
|
||||||
* @info {HTMLElement} value The value of the new element
|
* @info {String} value The value of the new element
|
||||||
* @info {HTMLElement} innerHTML Specify the html content of the newly created element
|
* @info {String} placeholder The placeholder of the new element
|
||||||
|
* @info {String} innerHTML Specify the html content of the newly created element
|
||||||
* @return {HTMLElement} The newly created element
|
* @return {HTMLElement} The newly created element
|
||||||
*/
|
*/
|
||||||
function createElem2(infos){
|
function createElem2(infos){
|
||||||
@ -73,6 +74,10 @@ function createElem2(infos){
|
|||||||
if(infos.value)
|
if(infos.value)
|
||||||
newElem.value = infos.value;
|
newElem.value = infos.value;
|
||||||
|
|
||||||
|
//Specify element placeholder
|
||||||
|
if(infos.placeholder)
|
||||||
|
newElem.placeholder = infos.placeholder;
|
||||||
|
|
||||||
//Specify node content
|
//Specify node content
|
||||||
if(infos.innerHTML)
|
if(infos.innerHTML)
|
||||||
newElem.innerHTML = infos.innerHTML;
|
newElem.innerHTML = infos.innerHTML;
|
||||||
@ -214,6 +219,23 @@ function createFormGroup(infos){
|
|||||||
if(infos.placeholder) //Placeholder if required
|
if(infos.placeholder) //Placeholder if required
|
||||||
input.setAttribute("data-placeholder", infos.placeholder);
|
input.setAttribute("data-placeholder", infos.placeholder);
|
||||||
|
|
||||||
|
}
|
||||||
|
//In case of textarea
|
||||||
|
else if(infos.type = "textarea"){
|
||||||
|
//Fill label value
|
||||||
|
if(infos.label)
|
||||||
|
labelElem.innerHTML = infos.label;
|
||||||
|
else
|
||||||
|
labelElem.remove(); //Remove useless label element
|
||||||
|
|
||||||
|
//Create textarea element
|
||||||
|
var input = createElem2({
|
||||||
|
appendTo: formGroup,
|
||||||
|
type: "textarea",
|
||||||
|
class: "form-control",
|
||||||
|
placeholder: infos.placeholder,
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//Else continue the function as a normal input type
|
//Else continue the function as a normal input type
|
||||||
|
43
assets/js/components/textarea.js
Normal file
43
assets/js/components/textarea.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/**
|
||||||
|
* Modern textarea handler
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a modern textarea element object
|
||||||
|
*/
|
||||||
|
var textArea2 = function(infos){
|
||||||
|
//Nothing now
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializate textarea 2.0 element
|
||||||
|
*
|
||||||
|
* @param {Object} infos Informations about the textarea to enable
|
||||||
|
* @info {HTMLElement} element The element to make modern
|
||||||
|
*/
|
||||||
|
textArea2.prototype.init = function(infos){
|
||||||
|
|
||||||
|
//Save Textarea element
|
||||||
|
this.element = infos.element;
|
||||||
|
|
||||||
|
//Adapt textarea style
|
||||||
|
this.element.style.overflow = "hidden";
|
||||||
|
|
||||||
|
//Initializate textarea auto-size
|
||||||
|
$(this.element).textareaAutoSize();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the textarea value
|
||||||
|
*
|
||||||
|
* @return {String} Textarea value
|
||||||
|
*/
|
||||||
|
textArea2.prototype.getValue = function(){
|
||||||
|
return this.element.innerText;
|
||||||
|
};
|
||||||
|
|
||||||
|
//Save the function in the system
|
||||||
|
ComunicWeb.components.textarea = textArea2;
|
@ -28,6 +28,8 @@ ComunicWeb.pages.home.home = {
|
|||||||
loginButton.innerHTML="Logout";
|
loginButton.innerHTML="Logout";
|
||||||
targetElement.appendChild(loginButton);
|
targetElement.appendChild(loginButton);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Dev feature emojies
|
//Dev feature emojies
|
||||||
var emojiesArea = createElem2({
|
var emojiesArea = createElem2({
|
||||||
appendTo: targetElement,
|
appendTo: targetElement,
|
||||||
@ -40,6 +42,23 @@ ComunicWeb.pages.home.home = {
|
|||||||
ComunicWeb.components.emoji.parser.parse({
|
ComunicWeb.components.emoji.parser.parse({
|
||||||
element: emojiesArea,
|
element: emojiesArea,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Create textarea element
|
||||||
|
var textarea = createFormGroup({
|
||||||
|
target: targetElement,
|
||||||
|
type: "textarea",
|
||||||
|
label: "Textarea",
|
||||||
|
placeholder: "New message",
|
||||||
|
});
|
||||||
|
textarea.style.width = "200px";
|
||||||
|
|
||||||
|
//Initializate textarea
|
||||||
|
var textarea2 = new ComunicWeb.components.textarea();
|
||||||
|
textarea2.init({
|
||||||
|
element: textarea
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(textarea2);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
//Display landing page
|
//Display landing page
|
||||||
|
@ -77,6 +77,9 @@ $config['JSfiles'] = array(
|
|||||||
//Twitter emojies
|
//Twitter emojies
|
||||||
"%PATH_ASSETS%3rdparty/twemoji/2/twemoji.min.js",
|
"%PATH_ASSETS%3rdparty/twemoji/2/twemoji.min.js",
|
||||||
|
|
||||||
|
//Textarea auto-size
|
||||||
|
"%PATH_ASSETS%3rdparty/jquery.textarea_autosize/jquery.textarea_autosize.min.js",
|
||||||
|
|
||||||
//Utilities
|
//Utilities
|
||||||
"%PATH_ASSETS%js/common/utils.js",
|
"%PATH_ASSETS%js/common/utils.js",
|
||||||
|
|
||||||
@ -139,6 +142,9 @@ $config['JSfiles'] = array(
|
|||||||
"%PATH_ASSETS%js/components/emoji/parser.js",
|
"%PATH_ASSETS%js/components/emoji/parser.js",
|
||||||
"%PATH_ASSETS%js/components/emoji/list.js",
|
"%PATH_ASSETS%js/components/emoji/list.js",
|
||||||
|
|
||||||
|
//Modern textarea handler
|
||||||
|
"%PATH_ASSETS%js/components/textarea.js",
|
||||||
|
|
||||||
//User scripts
|
//User scripts
|
||||||
"%PATH_ASSETS%js/user/loginTokens.js",
|
"%PATH_ASSETS%js/user/loginTokens.js",
|
||||||
"%PATH_ASSETS%js/user/userLogin.js",
|
"%PATH_ASSETS%js/user/userLogin.js",
|
||||||
|
Loading…
Reference in New Issue
Block a user