From 46b2143589fe2c3a85f79ca0fa2c60b78a9a273c Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Fri, 23 Mar 2018 08:41:17 +0100 Subject: [PATCH] [lib.content-controller] textarea auto_grow() [scss.container] textarea layout for auto_grow() [channel.vue] texarea auto_grow() --- webpack/lib/content-controller.js | 15 +++++++++++++++ webpack/lib/room-controller.js | 6 +++--- webpack/scss/container.scss | 27 +++++++++++++++++---------- webpack/vue/channel.vue | 2 +- 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/webpack/lib/content-controller.js b/webpack/lib/content-controller.js index a9fc6b7..700df76 100644 --- a/webpack/lib/content-controller.js +++ b/webpack/lib/content-controller.js @@ -75,4 +75,19 @@ export class ContentController{ } + /* (6) Textarea auto_grow + * + * @e Textarea event + * + ---------------------------------------------------------*/ + auto_grow(e){ + + setTimeout(() => { + e.target.style.height = '0'; + e.target.style.height = `calc( ${e.target.scrollHeight}px )`; + }, 1); + } + + + } \ No newline at end of file diff --git a/webpack/lib/room-controller.js b/webpack/lib/room-controller.js index 6da4dbf..b5c6356 100644 --- a/webpack/lib/room-controller.js +++ b/webpack/lib/room-controller.js @@ -28,7 +28,7 @@ export class RoomController{ let room = this.get(type, id); /* (2) Manage invalid room */ - if( room == null ) + if( Object.keys(room).length == 0 ) return false; /* (3) Close last room */ @@ -111,7 +111,7 @@ export class RoomController{ /* (1) Manage invalid @type */ if( typeof type !== 'string' || this[type] == null ) - return null; + return {}; /* (1) Get @current room: if id is null ---------------------------------------------------------*/ @@ -142,7 +142,7 @@ export class RoomController{ /* (2) Return default: if ID not found */ this[type].current = null; - return null; + return {}; } diff --git a/webpack/scss/container.scss b/webpack/scss/container.scss index 29d1d6d..c3f389c 100644 --- a/webpack/scss/container.scss +++ b/webpack/scss/container.scss @@ -187,10 +187,10 @@ section.message-input{ - display: block; + display: flex; position: relative; min-height: calc( #{$input-height} - 2*1em ); - // height: 6em; + height: auto; margin: 1em 1.2em; @@ -198,17 +198,26 @@ background-color: #484b52; + flex-direction: row; + justify-content: stretch; + align-items: center; + flex-wrap: nowrap; + + overflow: hidden; + & > textarea{ display: block; position: relative; - left: 1.5em; - width: calc( 100% - 2*1.5em - 2*1.5em - 1em ); - height: calc( 100% - 2*.4em - 2*1em ); + min-height: calc( 1em + 1.5em ); + height: calc( 1em + 1.5em ); + max-height: calc( 5em + .4em ); - margin: 1em 1.5em; - padding: .4em 0; - padding-left: 1em; + flex: 1 1 0; + + margin: 1.5em 3em; + + padding: .4em 1em; color: #ddd; font-family: inherit; @@ -216,8 +225,6 @@ border: none; border-left: 1px solid #666; - box-sizing: content-box; - // reset -moz-appearance: none; -webkit-appearance: none; diff --git a/webpack/vue/channel.vue b/webpack/vue/channel.vue index a648d2d..ee482aa 100644 --- a/webpack/vue/channel.vue +++ b/webpack/vue/channel.vue @@ -22,7 +22,7 @@
- +