diff --git a/app/assets/javascripts/app/controllers/_channel/chat.coffee b/app/assets/javascripts/app/controllers/_channel/chat.coffee index ccb90c5c4..f4329949c 100644 --- a/app/assets/javascripts/app/controllers/_channel/chat.coffee +++ b/app/assets/javascripts/app/controllers/_channel/chat.coffee @@ -6,6 +6,17 @@ class App.ChannelChat extends App.Controller 'click .js-widget': 'widget' 'change .js-params': 'updateParams' 'keyup .js-params': 'updateParams' + 'submit .js-testurl': 'changeTestWebsite' + 'blur .js-testurl-input': 'changeTestWebsite' + 'click .js-zoom-in': 'zoomIn' + 'click .js-zoom-out': 'zoomOut' + + elements: + '.js-demo': 'demo' + '.js-iframe': 'iframe' + '.js-chat': 'chat' + '.js-testurl-input': 'urlInput' + '.js-backgroundColor': 'chatBackground' constructor: -> super @@ -14,6 +25,8 @@ class App.ChannelChat extends App.Controller @widgetDesignerPermanentParams = id: 'id' + $(window).on 'resize.chat-designer', @resizeDemo + load: => @startLoading() @ajax( @@ -37,6 +50,7 @@ class App.ChannelChat extends App.Controller baseurl: window.location.origin chats: chats ) + @updateParams() new App.SettingsArea( @@ -44,6 +58,35 @@ class App.ChannelChat extends App.Controller area: 'Chat::Base' ) + zoomOut: => + if @demo.width() < 1024 + percentage = @demo.width()/1024 + @chat.css('transform', "scale(#{ percentage })") + @iframe.css + transform: "scale(#{ percentage })" + width: @demo.width() / percentage + height: @demo.height() / percentage + + zoomIn: => + @chat.css('transform', "") + @iframe.css + transform: "" + width: "" + height: "" + + + changeTestWebsite: (event) => + event.preventDefault() if event + + return if @urlInput.val() is @url + @url = @urlInput.val() + + src = @url + if !src.startsWith('http') + src = "http://#{ src }" + + @iframe.attr 'src', src + new: (e) => new App.ControllerGenericNew( pageData: @@ -94,6 +137,11 @@ class App.ChannelChat extends App.Controller .replace(/\>/g, '>') value params = @formParam(@$('.js-params')) + + if parseInt(params.fontSize, 10) > 2 + @chat.css('font-size', params.fontSize) + @chatBackground.css('background', params.background) + if @permanent for key, value of @permanent params[key] = value diff --git a/app/assets/javascripts/app/views/channel/chat.jst.eco b/app/assets/javascripts/app/views/channel/chat.jst.eco index 581572704..de301491e 100644 --- a/app/assets/javascripts/app/views/channel/chat.jst.eco +++ b/app/assets/javascripts/app/views/channel/chat.jst.eco @@ -1,10 +1,140 @@
-

<%- @T('With form you can add a formular to your web page witch directly generates a Ticket for you.') %>

+

<%- @T('You can embedd this widget into your web page to allow visitors to directly chat with you.') %>

+ +

<%- @T('Designer') %>

+ +
+
+
+ +
+
<%- @Icon('zoom-out') %>
+
<%- @Icon('zoom-in') %>
+
+
+ + +
+
+
+
+ Online + + + + +
+
+ + + John Smith + +
+
+ + Chatten sie mit uns! +
+
+
+
Heute 14:45
+
+ Hello! I need help with your product. +
+
+ Hi! Which one of our products? +
+
+
+ + +
+
+
+
+
+ +
+
+
+
+ +
+
+ +
+ <%- @T('Shown when the chat is closed.') %> +
+
+
+ +
+
+ +
+ <%- @T('Can be in any CSS color format.') %> +
+
+
+ +
+
+ +
+ <%- @T('The default font size is 12px.') %> +
+
+ +
+ + + + + + + + + + + +
<%- @T('Option') %>
+ +
+ +
+
+ +

<%- @T('You need to add the following Java Script code snipped to your web page') %>: + +

+<script src="<%= @baseurl %>/assets/chat/chat.min.js"></script>
+
+<script>
+$(function() {
+  new ZammadChat({
+
+  });
+});
+</script>
+
@@ -60,82 +190,4 @@ <% end %>
-

<%- @T('Widget Designer') %>

- -
- -
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
-
- -
- - - - - - - - - - - -
<%- @T('Option') %>
- -
- -
- - -

<%- @T('You need to add the following Java Script code snipped to your web page') %>: - -

-<script src="<%= @baseurl %>/assets/chat/chat.min.js"></script>
-
-<script>
-$(function() {
-  new ZammadChat({
-
-  });
-});
-</script>
-
- diff --git a/app/assets/stylesheets/svg-dimensions.css b/app/assets/stylesheets/svg-dimensions.css index 65954e67a..7085e16b5 100644 --- a/app/assets/stylesheets/svg-dimensions.css +++ b/app/assets/stylesheets/svg-dimensions.css @@ -45,7 +45,7 @@ .icon-mood-ok { width: 60px; height: 59px; } .icon-mood-super-bad { width: 60px; height: 59px; } .icon-mood-supergood { width: 60px; height: 59px; } -.icon-note { width: 17px; height: 16px; } +.icon-note { width: 16px; height: 16px; } .icon-one-ticket { width: 48px; height: 10px; } .icon-organization { width: 16px; height: 16px; } .icon-outbound-calls { width: 17px; height: 17px; } @@ -80,4 +80,6 @@ .icon-trash { width: 16px; height: 16px; } .icon-twitter-button { width: 29px; height: 22px; } .icon-twitter { width: 17px; height: 17px; } -.icon-user { width: 16px; height: 16px; } \ No newline at end of file +.icon-user { width: 16px; height: 16px; } +.icon-zoom-in { width: 20px; height: 20px; } +.icon-zoom-out { width: 20px; height: 20px; } \ No newline at end of file diff --git a/app/assets/stylesheets/zammad.scss b/app/assets/stylesheets/zammad.scss index 7e08d6cbd..e8d330259 100644 --- a/app/assets/stylesheets/zammad.scss +++ b/app/assets/stylesheets/zammad.scss @@ -1837,6 +1837,7 @@ kbd { .help-block { margin: 0; color: #bcbcbc; + font-size: 12px; &.help-block--center { text-align: center; @@ -1844,7 +1845,7 @@ kbd { } .help-block:not(:empty) { - margin: 8px 2px 10px; + margin: 6px 2px 10px; } /* replace music icon with attachment */ @@ -7322,6 +7323,76 @@ output { overflow: auto; } +.browser { + margin: 0 0 20px; + border: 1px solid hsl(0,0%,90%); + border-radius: 5px; + height: 500px; + position: relative; + display: flex; + flex-direction: column; +} + +.browser-body { + position: relative; + overflow: hidden; + flex: 1; + + iframe { + position: absolute; + border: none; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform-origin: left top; + } +} + +.browser-head { + display: flex; + padding: 5px; + border-bottom: 1px solid hsl(0,0%,90%); + + .browser-input { + flex: 1; + margin: 5px; + } + + .browser-control { + width: 39px; + margin: 5px; + display: flex; + align-items: center; + justify-content: center; + fill: hsl(202,8%,28%); + cursor: pointer; + } +} + + +.chat-demo { + .zammad-chat { + position: absolute; + transform-origin: right bottom; + pointer-events: auto; + } + + .chat-demo-animationHolder { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + animation: slide-up 500ms; + pointer-events: none; + } +} + +@keyframes slide-up { + from { transform: translateY(100%); } +} + /* ---------------- diff --git a/contrib/icon-sprite.sketch b/contrib/icon-sprite.sketch index 1812c3ace..43fd28eda 100644 Binary files a/contrib/icon-sprite.sketch and b/contrib/icon-sprite.sketch differ diff --git a/public/assets/chat/chat.coffee b/public/assets/chat/chat.coffee index 99aa33d55..8f4aaf63e 100644 --- a/public/assets/chat/chat.coffee +++ b/public/assets/chat/chat.coffee @@ -330,8 +330,10 @@ do($ = window.jQuery, window) -> @el.addClass('zammad-chat-is-visible') - @input.autoGrow - extraLine: false + if !@inputInitialized + @inputInitialized = true + @input.autoGrow + extraLine: false remainerHeight = @el.height() - @el.find('.zammad-chat-header').outerHeight() diff --git a/public/assets/chat/chat.css b/public/assets/chat/chat.css index bfaa7252e..ea490364a 100644 --- a/public/assets/chat/chat.css +++ b/public/assets/chat/chat.css @@ -30,7 +30,6 @@ background: #379ad7; color: white; line-height: 2.5em; - height: 2.5em; box-shadow: 0 -1px rgba(0, 0, 0, 0.1), 0 1px rgba(255, 255, 255, 0.3) inset, 0 -1px rgba(0, 0, 0, 0.1) inset, 0 1px 1px rgba(0, 0, 0, 0.13); position: relative; border-radius: 5px 5px 0 0; @@ -91,7 +90,7 @@ padding: 0 0.7em; border-radius: 1em; background: rgba(0, 0, 0, 0.1); - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.04); } + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.04) inset; } .zammad-chat-agent-status:before { content: ""; @@ -103,7 +102,7 @@ position: relative; margin-right: 0.3em; vertical-align: middle; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.04); } + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.04) inset; } .zammad-chat-agent-status[data-status="online"]:before { background: #52c782; } @@ -169,7 +168,7 @@ .zammad-chat-body { padding: 0.5em 1em; - height: 300px; + height: 25em; overflow: auto; background: white; } @@ -278,6 +277,7 @@ .zammad-chat-input { float: left; + height: auto; font-family: inherit; line-height: inherit; font-size: inherit; diff --git a/public/assets/chat/chat.js b/public/assets/chat/chat.js index f77bc75b9..331863fd4 100644 --- a/public/assets/chat/chat.js +++ b/public/assets/chat/chat.js @@ -484,9 +484,12 @@ var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); return this.state; } this.el.addClass('zammad-chat-is-visible'); - this.input.autoGrow({ - extraLine: false - }); + if (!this.inputInitialized) { + this.inputInitialized = true; + this.input.autoGrow({ + extraLine: false + }); + } remainerHeight = this.el.height() - this.el.find('.zammad-chat-header').outerHeight(); return this.el.css('bottom', -remainerHeight); }; @@ -847,7 +850,7 @@ window.zammadChatTemplates["chat"] = function (__obj) { __out.push('"'); if (this.fontSize) { - __out.push(__sanitize(" style='font-size: " + this.fontSize + "px'")); + __out.push(__sanitize(" style='font-size: " + this.fontSize + "'")); } __out.push('>\n
/g,">").replace(/"/g,""")}),function(){(function(){this.agent.avatar&&(s.push('\n\n')),s.push('\n\n '),s.push(n(this.agent.name)),s.push("\n")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")};var bind=function(t,e){return function(){return t.apply(e,arguments)}},slice=[].slice;!function(t,e){var s,n,i,a;return a=document.getElementsByTagName("script"),n=a[a.length-1],i=n.src.match(".*://([^:/]*).*")[1],s=function(){function s(s){return this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.setSessionId=bind(this.setSessionId,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.onWebSocketOpen=bind(this.onWebSocketOpen,this),this.wsReconnect=bind(this.wsReconnect,this),this.wsClose=bind(this.wsClose,this),this.wsConnect=bind(this.wsConnect,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onQueue=bind(this.onQueue,this),this.onQueueScreen=bind(this.onQueueScreen,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.closeWindow=bind(this.closeWindow,this),this.close=bind(this.close,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.open=bind(this.open,this),this.renderMessage=bind(this.renderMessage,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onTypingEnd=bind(this.onTypingEnd,this),this.onInput=bind(this.onInput,this),this.reopenSession=bind(this.reopenSession,this),this.onError=bind(this.onError,this),this.onReady=bind(this.onReady,this),this.onWebSocketMessage=bind(this.onWebSocketMessage,this),this.send=bind(this.send,this),this.checkForEnter=bind(this.checkForEnter,this),this.view=bind(this.view,this),this.log=bind(this.log,this),this.T=bind(this.T,this),e.WebSocket&&sessionStorage?(this.options=t.extend({},this.defaults,s),this.el=t(this.view("chat")()),this.options.target.append(this.el),this.input=this.el.find(".zammad-chat-input"),this.el.find(".js-chat-open").click(this.open),this.el.find(".js-chat-close").click(this.close),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.input.on({keydown:this.checkForEnter,input:this.onInput}),void this.wsConnect()):(this.state="unsupported",void this.log("notice","Chat: Browser not supported!"))}return s.prototype.defaults={show:!0,target:t("body"),host:"",port:6042,debug:!1,fontSize:void 0,buttonSelector:".open-zammad-chat",hiddenButtonClass:"is-inactive"},s.prototype._messageCount=0,s.prototype.isOpen=!0,s.prototype.blinkOnlineInterval=null,s.prototype.stopBlinOnlineStateTimeout=null,s.prototype.showTimeEveryXMinutes=1,s.prototype.lastTimestamp=null,s.prototype.lastAddedType=null,s.prototype.inputTimeout=null,s.prototype.isTyping=!1,s.prototype.state="offline",s.prototype.initialQueueDelay=1e4,s.prototype.wsReconnectEnable=!0,s.prototype.strings={"Chat with us!":"Chatten sie mit uns!",Online:"Online",Offline:"Offline",Connecting:"Verbinden","Connection re-established":"Verbindung wiederhergestellt",Today:"Heute",Send:"Senden","Compose your message...":"Ihre Nachricht...","All colleges are busy.":"Alle Kollegen sind belegt.","You are on waiting list position %s.":"Sie sind in der Warteliste an der Position %s.","Start new conversation":"Neue Konversation starten","Since you didn't respond in the last %s your conversation with %s got closed.":"Da sie in den letzten %s nichts geschrieben haben wurde ihre Konversation mit %s geschlossen.",minutes:"Minuten"},s.prototype.sessionId=void 0,s.prototype.T=function(){var t,e,s,n,i,a;if(i=arguments[0],s=2<=arguments.length?slice.call(arguments,1):[],this.strings[i]||this.log("notice","Translation needed for '"+i+"'"),a=this.strings[i]||i,s)for(t=0,n=s.length;n>t;t++)e=s[t],a=a.replace(/%s/,e);return a},s.prototype.log=function(){var t,e;return t=arguments[0],e=2<=arguments.length?slice.call(arguments,1):[],this.options.debug||"debug"!==t?(e.unshift(t),console.log.apply(console,e)):void 0},s.prototype.view=function(t){return function(s){return function(n){return n||(n={}),n.T=s.T,n.background=s.options.background,n.flat=s.options.flat,n.fontSize=s.options.fontSize,e.zammadChatTemplates[t](n)}}(this)},s.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},s.prototype.send=function(t,e){var s;return this.log("debug","ws:send",t,e),s=JSON.stringify({event:t,data:e}),this.ws.send(s)},s.prototype.onWebSocketMessage=function(t){var e,s,n,i;for(i=JSON.parse(t.data),e=0,s=i.length;s>e;e++)switch(n=i[e],this.log("debug","ws:onmessage",n),n.event){case"chat_session_message":if(n.data.self_written)return;this.receiveMessage(n.data);break;case"chat_session_typing":if(n.data.self_written)return;this.onAgentTypingStart();break;case"chat_session_start":this.onConnectionEstablished(n.data);break;case"chat_session_queue":this.onQueueScreen(n.data);break;case"chat_session_closed":this.onSessionClosed(n.data);break;case"chat_session_left":this.onSessionClosed(n.data);break;case"chat_status_customer":switch(n.data.state){case"online":this.sessionId=void 0,this.onReady(),this.log("debug","Zammad Chat: ready");break;case"offline":this.onError("Zammad Chat: No agent online"),this.state="off",this.hide(),this.wsClose();break;case"chat_disabled":this.onError("Zammad Chat: Chat is disabled"),this.state="off",this.hide(),this.wsClose();break;case"no_seats_available":this.onError("Zammad Chat: Too many clients in queue. Clients in queue: ",n.data.queue),this.state="off",this.hide(),this.wsClose();break;case"reconnect":this.log("debug","old messages",n.data.session),this.reopenSession(n.data)}}},s.prototype.onReady=function(){return t(this.options.buttonSelector).click(this.open).removeClass(this.hiddenButtonClass),this.options.show?this.show():void 0},s.prototype.onError=function(e){return this.log("debug",e),t(this.options.buttonSelector).hide()},s.prototype.reopenSession=function(t){var e,s,n,i,a;if(a=sessionStorage.getItem("unfinished_message"),t.agent){for(this.onConnectionEstablished(t),i=t.session,e=0,s=i.length;s>e;e++)n=i[e],this.renderMessage({message:n.content,id:n.id,from:n.created_by_id?"agent":"customer"});a&&this.input.val(a)}return t.position&&this.onQueue(t),this.show(),this.open(),this.scrollToBottom(),a?this.input.focus():void 0},s.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),sessionStorage.setItem("unfinished_message",this.input.val()),this.onTypingStart()},s.prototype.onTypingStart=function(){return this.isTypingTimeout&&clearTimeout(this.isTypingTimeout),this.isTypingTimeout=setTimeout(this.onTypingEnd,1500),this.isTyping?void 0:(this.isTyping=!0,this.send("chat_session_typing",{session_id:this.sessionId}))},s.prototype.onTypingEnd=function(){return this.isTyping=!1},s.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},s.prototype.sendMessage=function(){var t,e;return(t=this.input.val())?(sessionStorage.removeItem("unfinished_message"),e=this.view("message")({message:t,from:"customer",id:this._messageCount++}),this.maybeAddTimestamp(),this.el.find(".zammad-chat-message--typing").size()?(this.lastAddedType="typing-placeholder",this.el.find(".zammad-chat-message--typing").before(e)):(this.lastAddedType="message--customer",this.el.find(".zammad-chat-body").append(e)),this.input.val(""),this.scrollToBottom(),this.isTyping=!1,this.send("chat_session_message",{content:t,id:this._messageCount,session_id:this.sessionId})):void 0},s.prototype.receiveMessage=function(t){return this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.renderMessage({message:t.message.content,id:t.id,from:"agent"})},s.prototype.renderMessage=function(t){var e,s;return this.lastAddedType="message--"+t.from,s=null!=(e=document.hidden)?e:{" zammad-chat-message--unread":""},this.el.find(".zammad-chat-body").append(this.view("message")(t)),this.scrollToBottom()},s.prototype.open=function(){return this.isOpen&&this.show(),this.sessionId||this.showLoader(),this.el.addClass("zammad-chat-is-open"),this.sessionId?(this.el.css("bottom",0),this.onOpenAnimationEnd()):this.el.animate({bottom:0},500,this.onOpenAnimationEnd),this.isOpen=!0,this.sessionId?void 0:this.session_init()},s.prototype.onOpenAnimationEnd=function(){},s.prototype.close=function(t){return"off"===this.state||"unsupported"===this.state?this.state:(t&&t.stopPropagation(),this.sessionId?(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.closeWindow()):void 0)},s.prototype.closeWindow=function(){var t;return t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-t},500,this.onCloseAnimationEnd)},s.prototype.onCloseAnimationEnd=function(){return this.el.removeClass("zammad-chat-is-open"),this.disconnect(),this.isOpen=!1,this.send("chat_session_close",{session_id:this.sessionId}),this.setSessionId(void 0),sessionStorage.removeItem("unfinished_message"),this.onWebSocketOpen()},s.prototype.hide=function(){return this.el.removeClass("zammad-chat-is-visible")},s.prototype.show=function(){var t;return"off"===this.state||"unsupported"===this.state?this.state:(this.el.addClass("zammad-chat-is-visible"),this.input.autoGrow({extraLine:!1}),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t))},s.prototype.disableInput=function(){return this.input.prop("disabled",!0),this.el.find(".zammad-chat-send").prop("disabled",!0)},s.prototype.enableInput=function(){return this.input.prop("disabled",!1),this.el.find(".zammad-chat-send").prop("disabled",!1)},s.prototype.onQueueScreen=function(t){var e;return this.setSessionId(t.session_id),e=function(e){return function(){return e.onQueue(t)}}(this),this.initialQueueDelay&&!this.onInitialQueueDelayId?void(this.onInitialQueueDelayId=setTimeout(e,this.initialQueueDelay)):(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),e())},s.prototype.onQueue=function(t){return this.log("notice","onQueue",t.position),this.inQueue=!0,this.el.find(".zammad-chat-body").html(this.view("waiting")({position:t.position}))},s.prototype.onAgentTypingStart=function(){return this.stopTypingId&&clearTimeout(this.stopTypingId),this.stopTypingId=setTimeout(this.onAgentTypingEnd,3e3),this.el.find(".zammad-chat-message--typing").size()?void 0:(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.scrollToBottom())},s.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},s.prototype.maybeAddTimestamp=function(){var t,e,s;return s=Date.now(),!this.lastTimestamp||s-this.lastTimestamp>6e4*this.showTimeEveryXMinutes?(t=this.T("Today"),e=(new Date).toTimeString().substr(0,5),"timestamp"===this.lastAddedType?(this.updateLastTimestamp(t,e),this.lastTimestamp=s):(this.el.find(".zammad-chat-body").append(this.view("timestamp")({label:t,time:e})),this.lastTimestamp=s,this.lastAddedType="timestamp",this.scrollToBottom())):void 0},s.prototype.updateLastTimestamp=function(t,e){return this.el.find(".zammad-chat-body").find(".zammad-chat-timestamp").last().replaceWith(this.view("timestamp")({label:t,time:e}))},s.prototype.addStatus=function(t){return this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("status")({status:t})),this.scrollToBottom()},s.prototype.scrollToBottom=function(){return this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight"))},s.prototype.session_init=function(){return this.send("chat_session_init")},s.prototype.detectHost=function(){return this.options.host="ws://"+i},s.prototype.wsConnect=function(){return this.options.host||this.detectHost(),this.log("notice","Connecting to "+this.options.host+":"+this.options.port),this.ws=new e.WebSocket(this.options.host+":"+this.options.port),this.ws.onopen=this.onWebSocketOpen,this.ws.onmessage=this.onWebSocketMessage,this.ws.onclose=function(t){return function(e){return t.log("debug","close websocket connection"),t.wsReconnectEnable?t.reconnect():void 0}}(this),this.ws.onerror=function(t){return function(e){return t.log("debug","ws:onerror",e)}}(this)},s.prototype.wsClose=function(){return this.wsReconnectEnable=!1,this.ws.close()},s.prototype.wsReconnect=function(){return this.reconnectDelayId&&clearTimeout(this.reconnectDelayId),this.reconnectDelayId=setTimeout(this.wsConnect,5e3)},s.prototype.onWebSocketOpen=function(){return this.sessionId=sessionStorage.getItem("sessionId"),this.log("debug","ws connected"),this.send("chat_status_customer",{session_id:this.sessionId}),this.setAgentOnlineState("online")},s.prototype.reconnect=function(){return this.log("notice","reconnecting"),this.disableInput(),this.lastAddedType="status",this.setAgentOnlineState("connecting"),this.addStatus(this.T("Connection lost")),this.wsReconnect()},s.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.setAgentOnlineState("online"),this.addStatus(this.T("Connection re-established"))},s.prototype.onSessionClosed=function(t){return this.addStatus(this.T("Chat closed by %s",t.realname)),this.disableInput()},s.prototype.disconnect=function(){return this.showLoader(),this.el.find(".zammad-chat-welcome").removeClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent").addClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent-status").addClass("zammad-chat-is-hidden")},s.prototype.setSessionId=function(t){return this.sessionId=t,void 0===t?sessionStorage.removeItem("sessionId"):sessionStorage.setItem("sessionId",t)},s.prototype.onConnectionEstablished=function(t){return this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.inQueue=!1,t.agent&&(this.agent=t.agent),t.session_id&&this.setSessionId(t.session_id),this.el.find(".zammad-chat-agent").html(this.view("agent")({agent:this.agent})),this.enableInput(),this.el.find(".zammad-chat-body").empty(),this.el.find(".zammad-chat-welcome").addClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent").removeClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent-status").removeClass("zammad-chat-is-hidden"),this.input.focus()},s.prototype.showTimeout=function(){return this.el.find(".zammad-chat-body").html(this.view("timeout")({agent:this.agent.name,delay:10,unit:this.T("minutes")}))},s.prototype.showLoader=function(){return this.el.find(".zammad-chat-body").html(this.view("loader")())},s.prototype.setAgentOnlineState=function(t){var e;return this.state=t,e=t.charAt(0).toUpperCase()+t.slice(1),this.el.find(".zammad-chat-agent-status").attr("data-status",t).text(this.T(e))},s}(),e.ZammadChat=s}(window.jQuery,window),jQuery.fn.autoGrow=function(t){return this.each(function(){var e=jQuery.extend({extraLine:!0},t),s=function(t){return jQuery(t).after('
'),jQuery(t).next(".autogrow-textarea-mirror")[0]},n=function(t){a.innerHTML=String(t.value).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">").replace(/ /g," ").replace(/\n/g,"
")+(e.extraLine?".
.":""),jQuery(t).height()!=jQuery(a).height()&&jQuery(t).height(jQuery(a).height())},i=function(){n(this)},a=s(this);a.style.display="none",a.style.wordWrap="break-word",a.style.whiteSpace="normal",a.style.padding=jQuery(this).css("paddingTop")+" "+jQuery(this).css("paddingRight")+" "+jQuery(this).css("paddingBottom")+" "+jQuery(this).css("paddingLeft"),a.style.width=jQuery(this).css("width"),a.style.fontFamily=jQuery(this).css("font-family"),a.style.fontSize=jQuery(this).css("font-size"),a.style.lineHeight=jQuery(this).css("line-height"),this.style.overflow="hidden",this.style.minHeight=this.rows+"em",this.onkeyup=i,n(this)})},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n '),s.push(this.T("Chat with us!")),s.push('\n
\n
\n
\n
\n \n \n
\n
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.loader=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n \n \n \n \n \n '),s.push(n(this.T("Connecting"))),s.push("\n
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n "),s.push(this.message),s.push("\n
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,s=[],n=t.safe,i=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},i||(i=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
'),s.push(this.status),s.push("
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n '),s.push(this.T("Since you didn't respond in the last %s your conversation with %s got closed.",this.delay+" "+this.unit,this.agent)),s.push('
\n
"),s.push(n(this.T("Start new conversation"))),s.push("
\n
\n
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timestamp=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
'),s.push(n(this.label)),s.push(" "),s.push(n(this.time)),s.push("
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,s=[],n=t.safe,i=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},i||(i=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n \n \n \n \n \n \n \n
')}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting=function(t){t||(t={});var e,s=[],n=t.safe,i=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},i||(i=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n \n \n \n \n \n '),s.push(this.T("All colleges are busy.")),s.push("
\n "),s.push(this.T("You are on waiting list position %s.",this.position)),s.push("\n
\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")}; \ No newline at end of file +window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.agent=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){this.agent.avatar&&(s.push('\n\n')),s.push('\n\n '),s.push(n(this.agent.name)),s.push("\n")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")};var bind=function(t,e){return function(){return t.apply(e,arguments)}},slice=[].slice;!function(t,e){var s,n,i,a;return a=document.getElementsByTagName("script"),n=a[a.length-1],i=n.src.match(".*://([^:/]*).*")[1],s=function(){function s(s){return this.setAgentOnlineState=bind(this.setAgentOnlineState,this),this.onConnectionEstablished=bind(this.onConnectionEstablished,this),this.setSessionId=bind(this.setSessionId,this),this.onConnectionReestablished=bind(this.onConnectionReestablished,this),this.reconnect=bind(this.reconnect,this),this.onWebSocketOpen=bind(this.onWebSocketOpen,this),this.wsReconnect=bind(this.wsReconnect,this),this.wsClose=bind(this.wsClose,this),this.wsConnect=bind(this.wsConnect,this),this.onAgentTypingEnd=bind(this.onAgentTypingEnd,this),this.onAgentTypingStart=bind(this.onAgentTypingStart,this),this.onQueue=bind(this.onQueue,this),this.onQueueScreen=bind(this.onQueueScreen,this),this.onCloseAnimationEnd=bind(this.onCloseAnimationEnd,this),this.closeWindow=bind(this.closeWindow,this),this.close=bind(this.close,this),this.onOpenAnimationEnd=bind(this.onOpenAnimationEnd,this),this.open=bind(this.open,this),this.renderMessage=bind(this.renderMessage,this),this.receiveMessage=bind(this.receiveMessage,this),this.onSubmit=bind(this.onSubmit,this),this.onTypingEnd=bind(this.onTypingEnd,this),this.onInput=bind(this.onInput,this),this.reopenSession=bind(this.reopenSession,this),this.onError=bind(this.onError,this),this.onReady=bind(this.onReady,this),this.onWebSocketMessage=bind(this.onWebSocketMessage,this),this.send=bind(this.send,this),this.checkForEnter=bind(this.checkForEnter,this),this.view=bind(this.view,this),this.log=bind(this.log,this),this.T=bind(this.T,this),e.WebSocket&&sessionStorage?(this.options=t.extend({},this.defaults,s),this.el=t(this.view("chat")()),this.options.target.append(this.el),this.input=this.el.find(".zammad-chat-input"),this.el.find(".js-chat-open").click(this.open),this.el.find(".js-chat-close").click(this.close),this.el.find(".zammad-chat-controls").on("submit",this.onSubmit),this.input.on({keydown:this.checkForEnter,input:this.onInput}),void this.wsConnect()):(this.state="unsupported",void this.log("notice","Chat: Browser not supported!"))}return s.prototype.defaults={show:!0,target:t("body"),host:"",port:6042,debug:!1,fontSize:void 0,buttonSelector:".open-zammad-chat",hiddenButtonClass:"is-inactive"},s.prototype._messageCount=0,s.prototype.isOpen=!0,s.prototype.blinkOnlineInterval=null,s.prototype.stopBlinOnlineStateTimeout=null,s.prototype.showTimeEveryXMinutes=1,s.prototype.lastTimestamp=null,s.prototype.lastAddedType=null,s.prototype.inputTimeout=null,s.prototype.isTyping=!1,s.prototype.state="offline",s.prototype.initialQueueDelay=1e4,s.prototype.wsReconnectEnable=!0,s.prototype.strings={"Chat with us!":"Chatten sie mit uns!",Online:"Online",Offline:"Offline",Connecting:"Verbinden","Connection re-established":"Verbindung wiederhergestellt",Today:"Heute",Send:"Senden","Compose your message...":"Ihre Nachricht...","All colleges are busy.":"Alle Kollegen sind belegt.","You are on waiting list position %s.":"Sie sind in der Warteliste an der Position %s.","Start new conversation":"Neue Konversation starten","Since you didn't respond in the last %s your conversation with %s got closed.":"Da sie in den letzten %s nichts geschrieben haben wurde ihre Konversation mit %s geschlossen.",minutes:"Minuten"},s.prototype.sessionId=void 0,s.prototype.T=function(){var t,e,s,n,i,a;if(i=arguments[0],s=2<=arguments.length?slice.call(arguments,1):[],this.strings[i]||this.log("notice","Translation needed for '"+i+"'"),a=this.strings[i]||i,s)for(t=0,n=s.length;n>t;t++)e=s[t],a=a.replace(/%s/,e);return a},s.prototype.log=function(){var t,e;return t=arguments[0],e=2<=arguments.length?slice.call(arguments,1):[],this.options.debug||"debug"!==t?(e.unshift(t),console.log.apply(console,e)):void 0},s.prototype.view=function(t){return function(s){return function(n){return n||(n={}),n.T=s.T,n.background=s.options.background,n.flat=s.options.flat,n.fontSize=s.options.fontSize,e.zammadChatTemplates[t](n)}}(this)},s.prototype.checkForEnter=function(t){return t.shiftKey||13!==t.keyCode?void 0:(t.preventDefault(),this.sendMessage())},s.prototype.send=function(t,e){var s;return this.log("debug","ws:send",t,e),s=JSON.stringify({event:t,data:e}),this.ws.send(s)},s.prototype.onWebSocketMessage=function(t){var e,s,n,i;for(i=JSON.parse(t.data),e=0,s=i.length;s>e;e++)switch(n=i[e],this.log("debug","ws:onmessage",n),n.event){case"chat_session_message":if(n.data.self_written)return;this.receiveMessage(n.data);break;case"chat_session_typing":if(n.data.self_written)return;this.onAgentTypingStart();break;case"chat_session_start":this.onConnectionEstablished(n.data);break;case"chat_session_queue":this.onQueueScreen(n.data);break;case"chat_session_closed":this.onSessionClosed(n.data);break;case"chat_session_left":this.onSessionClosed(n.data);break;case"chat_status_customer":switch(n.data.state){case"online":this.sessionId=void 0,this.onReady(),this.log("debug","Zammad Chat: ready");break;case"offline":this.onError("Zammad Chat: No agent online"),this.state="off",this.hide(),this.wsClose();break;case"chat_disabled":this.onError("Zammad Chat: Chat is disabled"),this.state="off",this.hide(),this.wsClose();break;case"no_seats_available":this.onError("Zammad Chat: Too many clients in queue. Clients in queue: ",n.data.queue),this.state="off",this.hide(),this.wsClose();break;case"reconnect":this.log("debug","old messages",n.data.session),this.reopenSession(n.data)}}},s.prototype.onReady=function(){return t(this.options.buttonSelector).click(this.open).removeClass(this.hiddenButtonClass),this.options.show?this.show():void 0},s.prototype.onError=function(e){return this.log("debug",e),t(this.options.buttonSelector).hide()},s.prototype.reopenSession=function(t){var e,s,n,i,a;if(a=sessionStorage.getItem("unfinished_message"),t.agent){for(this.onConnectionEstablished(t),i=t.session,e=0,s=i.length;s>e;e++)n=i[e],this.renderMessage({message:n.content,id:n.id,from:n.created_by_id?"agent":"customer"});a&&this.input.val(a)}return t.position&&this.onQueue(t),this.show(),this.open(),this.scrollToBottom(),a?this.input.focus():void 0},s.prototype.onInput=function(){return this.el.find(".zammad-chat-message--unread").removeClass("zammad-chat-message--unread"),sessionStorage.setItem("unfinished_message",this.input.val()),this.onTypingStart()},s.prototype.onTypingStart=function(){return this.isTypingTimeout&&clearTimeout(this.isTypingTimeout),this.isTypingTimeout=setTimeout(this.onTypingEnd,1500),this.isTyping?void 0:(this.isTyping=!0,this.send("chat_session_typing",{session_id:this.sessionId}))},s.prototype.onTypingEnd=function(){return this.isTyping=!1},s.prototype.onSubmit=function(t){return t.preventDefault(),this.sendMessage()},s.prototype.sendMessage=function(){var t,e;return(t=this.input.val())?(sessionStorage.removeItem("unfinished_message"),e=this.view("message")({message:t,from:"customer",id:this._messageCount++}),this.maybeAddTimestamp(),this.el.find(".zammad-chat-message--typing").size()?(this.lastAddedType="typing-placeholder",this.el.find(".zammad-chat-message--typing").before(e)):(this.lastAddedType="message--customer",this.el.find(".zammad-chat-body").append(e)),this.input.val(""),this.scrollToBottom(),this.isTyping=!1,this.send("chat_session_message",{content:t,id:this._messageCount,session_id:this.sessionId})):void 0},s.prototype.receiveMessage=function(t){return this.onAgentTypingEnd(),this.maybeAddTimestamp(),this.renderMessage({message:t.message.content,id:t.id,from:"agent"})},s.prototype.renderMessage=function(t){var e,s;return this.lastAddedType="message--"+t.from,s=null!=(e=document.hidden)?e:{" zammad-chat-message--unread":""},this.el.find(".zammad-chat-body").append(this.view("message")(t)),this.scrollToBottom()},s.prototype.open=function(){return this.isOpen&&this.show(),this.sessionId||this.showLoader(),this.el.addClass("zammad-chat-is-open"),this.sessionId?(this.el.css("bottom",0),this.onOpenAnimationEnd()):this.el.animate({bottom:0},500,this.onOpenAnimationEnd),this.isOpen=!0,this.sessionId?void 0:this.session_init()},s.prototype.onOpenAnimationEnd=function(){},s.prototype.close=function(t){return"off"===this.state||"unsupported"===this.state?this.state:(t&&t.stopPropagation(),this.sessionId?(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.closeWindow()):void 0)},s.prototype.closeWindow=function(){var t;return t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.animate({bottom:-t},500,this.onCloseAnimationEnd)},s.prototype.onCloseAnimationEnd=function(){return this.el.removeClass("zammad-chat-is-open"),this.disconnect(),this.isOpen=!1,this.send("chat_session_close",{session_id:this.sessionId}),this.setSessionId(void 0),sessionStorage.removeItem("unfinished_message"),this.onWebSocketOpen()},s.prototype.hide=function(){return this.el.removeClass("zammad-chat-is-visible")},s.prototype.show=function(){var t;return"off"===this.state||"unsupported"===this.state?this.state:(this.el.addClass("zammad-chat-is-visible"),this.inputInitialized||(this.inputInitialized=!0,this.input.autoGrow({extraLine:!1})),t=this.el.height()-this.el.find(".zammad-chat-header").outerHeight(),this.el.css("bottom",-t))},s.prototype.disableInput=function(){return this.input.prop("disabled",!0),this.el.find(".zammad-chat-send").prop("disabled",!0)},s.prototype.enableInput=function(){return this.input.prop("disabled",!1),this.el.find(".zammad-chat-send").prop("disabled",!1)},s.prototype.onQueueScreen=function(t){var e;return this.setSessionId(t.session_id),e=function(e){return function(){return e.onQueue(t)}}(this),this.initialQueueDelay&&!this.onInitialQueueDelayId?void(this.onInitialQueueDelayId=setTimeout(e,this.initialQueueDelay)):(this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),e())},s.prototype.onQueue=function(t){return this.log("notice","onQueue",t.position),this.inQueue=!0,this.el.find(".zammad-chat-body").html(this.view("waiting")({position:t.position}))},s.prototype.onAgentTypingStart=function(){return this.stopTypingId&&clearTimeout(this.stopTypingId),this.stopTypingId=setTimeout(this.onAgentTypingEnd,3e3),this.el.find(".zammad-chat-message--typing").size()?void 0:(this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("typingIndicator")()),this.scrollToBottom())},s.prototype.onAgentTypingEnd=function(){return this.el.find(".zammad-chat-message--typing").remove()},s.prototype.maybeAddTimestamp=function(){var t,e,s;return s=Date.now(),!this.lastTimestamp||s-this.lastTimestamp>6e4*this.showTimeEveryXMinutes?(t=this.T("Today"),e=(new Date).toTimeString().substr(0,5),"timestamp"===this.lastAddedType?(this.updateLastTimestamp(t,e),this.lastTimestamp=s):(this.el.find(".zammad-chat-body").append(this.view("timestamp")({label:t,time:e})),this.lastTimestamp=s,this.lastAddedType="timestamp",this.scrollToBottom())):void 0},s.prototype.updateLastTimestamp=function(t,e){return this.el.find(".zammad-chat-body").find(".zammad-chat-timestamp").last().replaceWith(this.view("timestamp")({label:t,time:e}))},s.prototype.addStatus=function(t){return this.maybeAddTimestamp(),this.el.find(".zammad-chat-body").append(this.view("status")({status:t})),this.scrollToBottom()},s.prototype.scrollToBottom=function(){return this.el.find(".zammad-chat-body").scrollTop(t(".zammad-chat-body").prop("scrollHeight"))},s.prototype.session_init=function(){return this.send("chat_session_init")},s.prototype.detectHost=function(){return this.options.host="ws://"+i},s.prototype.wsConnect=function(){return this.options.host||this.detectHost(),this.log("notice","Connecting to "+this.options.host+":"+this.options.port),this.ws=new e.WebSocket(this.options.host+":"+this.options.port),this.ws.onopen=this.onWebSocketOpen,this.ws.onmessage=this.onWebSocketMessage,this.ws.onclose=function(t){return function(e){return t.log("debug","close websocket connection"),t.wsReconnectEnable?t.reconnect():void 0}}(this),this.ws.onerror=function(t){return function(e){return t.log("debug","ws:onerror",e)}}(this)},s.prototype.wsClose=function(){return this.wsReconnectEnable=!1,this.ws.close()},s.prototype.wsReconnect=function(){return this.reconnectDelayId&&clearTimeout(this.reconnectDelayId),this.reconnectDelayId=setTimeout(this.wsConnect,5e3)},s.prototype.onWebSocketOpen=function(){return this.sessionId=sessionStorage.getItem("sessionId"),this.log("debug","ws connected"),this.send("chat_status_customer",{session_id:this.sessionId}),this.setAgentOnlineState("online")},s.prototype.reconnect=function(){return this.log("notice","reconnecting"),this.disableInput(),this.lastAddedType="status",this.setAgentOnlineState("connecting"),this.addStatus(this.T("Connection lost")),this.wsReconnect()},s.prototype.onConnectionReestablished=function(){return this.lastAddedType="status",this.setAgentOnlineState("online"),this.addStatus(this.T("Connection re-established"))},s.prototype.onSessionClosed=function(t){return this.addStatus(this.T("Chat closed by %s",t.realname)),this.disableInput()},s.prototype.disconnect=function(){return this.showLoader(),this.el.find(".zammad-chat-welcome").removeClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent").addClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent-status").addClass("zammad-chat-is-hidden")},s.prototype.setSessionId=function(t){return this.sessionId=t,void 0===t?sessionStorage.removeItem("sessionId"):sessionStorage.setItem("sessionId",t)},s.prototype.onConnectionEstablished=function(t){return this.onInitialQueueDelayId&&clearTimeout(this.onInitialQueueDelayId),this.inQueue=!1,t.agent&&(this.agent=t.agent),t.session_id&&this.setSessionId(t.session_id),this.el.find(".zammad-chat-agent").html(this.view("agent")({agent:this.agent})),this.enableInput(),this.el.find(".zammad-chat-body").empty(),this.el.find(".zammad-chat-welcome").addClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent").removeClass("zammad-chat-is-hidden"),this.el.find(".zammad-chat-agent-status").removeClass("zammad-chat-is-hidden"),this.input.focus()},s.prototype.showTimeout=function(){return this.el.find(".zammad-chat-body").html(this.view("timeout")({agent:this.agent.name,delay:10,unit:this.T("minutes")}))},s.prototype.showLoader=function(){return this.el.find(".zammad-chat-body").html(this.view("loader")())},s.prototype.setAgentOnlineState=function(t){var e;return this.state=t,e=t.charAt(0).toUpperCase()+t.slice(1),this.el.find(".zammad-chat-agent-status").attr("data-status",t).text(this.T(e))},s}(),e.ZammadChat=s}(window.jQuery,window),jQuery.fn.autoGrow=function(t){return this.each(function(){var e=jQuery.extend({extraLine:!0},t),s=function(t){return jQuery(t).after('
'),jQuery(t).next(".autogrow-textarea-mirror")[0]},n=function(t){a.innerHTML=String(t.value).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">").replace(/ /g," ").replace(/\n/g,"
")+(e.extraLine?".
.":""),jQuery(t).height()!=jQuery(a).height()&&jQuery(t).height(jQuery(a).height())},i=function(){n(this)},a=s(this);a.style.display="none",a.style.wordWrap="break-word",a.style.whiteSpace="normal",a.style.padding=jQuery(this).css("paddingTop")+" "+jQuery(this).css("paddingRight")+" "+jQuery(this).css("paddingBottom")+" "+jQuery(this).css("paddingLeft"),a.style.width=jQuery(this).css("width"),a.style.fontFamily=jQuery(this).css("font-family"),a.style.fontSize=jQuery(this).css("font-size"),a.style.lineHeight=jQuery(this).css("line-height"),this.style.overflow="hidden",this.style.minHeight=this.rows+"em",this.onkeyup=i,n(this)})},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.chat=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n \n '),s.push(this.T("Chat with us!")),s.push('\n
\n
\n
\n
\n \n \n
\n
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.loader=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n \n \n \n \n \n '),s.push(n(this.T("Connecting"))),s.push("\n
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.message=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n "),s.push(this.message),s.push("\n
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.status=function(t){t||(t={});var e,s=[],n=t.safe,i=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},i||(i=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
'),s.push(this.status),s.push("
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timeout=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n '),s.push(this.T("Since you didn't respond in the last %s your conversation with %s got closed.",this.delay+" "+this.unit,this.agent)),s.push('
\n
"),s.push(n(this.T("Start new conversation"))),s.push("
\n
\n
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.timestamp=function(t){t||(t={});var e,s=[],n=function(t){return t&&t.ecoSafe?t:"undefined"!=typeof t&&null!=t?a(t):""},i=t.safe,a=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},a||(a=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
'),s.push(n(this.label)),s.push(" "),s.push(n(this.time)),s.push("
")}).call(this)}.call(t),t.safe=i,t.escape=a,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.typingIndicator=function(t){t||(t={});var e,s=[],n=t.safe,i=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},i||(i=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n \n \n \n \n \n \n \n
')}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")},window.zammadChatTemplates||(window.zammadChatTemplates={}),window.zammadChatTemplates.waiting=function(t){t||(t={});var e,s=[],n=t.safe,i=t.escape;return e=t.safe=function(t){if(t&&t.ecoSafe)return t;("undefined"==typeof t||null==t)&&(t="");var e=new String(t);return e.ecoSafe=!0,e},i||(i=t.escape=function(t){return(""+t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}),function(){(function(){s.push('
\n
\n \n \n \n \n \n '),s.push(this.T("All colleges are busy.")),s.push("
\n "),s.push(this.T("You are on waiting list position %s.",this.position)),s.push("\n
\n
")}).call(this)}.call(t),t.safe=n,t.escape=i,s.join("")}; \ No newline at end of file diff --git a/public/assets/chat/chat.scss b/public/assets/chat/chat.scss index e807066ab..f6499f79b 100644 --- a/public/assets/chat/chat.scss +++ b/public/assets/chat/chat.scss @@ -28,7 +28,6 @@ background: hsl(203,67%,53%); color: white; line-height: 2.5em; - height: 2.5em; box-shadow: 0 -1px rgba(0,0,0,.1), 0 1px rgba(255,255,255,.3) inset, @@ -105,7 +104,7 @@ padding: 0 .7em; border-radius: 1em; background: rgba(0,0,0,.1); - box-shadow: 0 0 0 1px rgba(0,0,0,.04); + box-shadow: 0 0 0 1px rgba(0,0,0,.04) inset; } .zammad-chat-agent-status:before { @@ -118,7 +117,7 @@ position: relative; margin-right: 0.3em; vertical-align: middle; - box-shadow: 0 0 0 1px rgba(0,0,0,.04); + box-shadow: 0 0 0 1px rgba(0,0,0,.04) inset; } .zammad-chat-agent-status[data-status="online"]:before { @@ -172,7 +171,7 @@ .zammad-chat-body { padding: 0.5em 1em; - height: 300px; + height: 25em; overflow: auto; background: white; } @@ -277,6 +276,7 @@ .zammad-chat-input { float: left; + height: auto; font-family: inherit; line-height: inherit; font-size: inherit; diff --git a/public/assets/chat/views/chat.eco b/public/assets/chat/views/chat.eco index e44250e88..02e36a2f7 100644 --- a/public/assets/chat/views/chat.eco +++ b/public/assets/chat/views/chat.eco @@ -1,4 +1,4 @@ -
> +
>
>
diff --git a/public/assets/images/chat-demo-avatar.png b/public/assets/images/chat-demo-avatar.png new file mode 100644 index 000000000..58a83eebc Binary files /dev/null and b/public/assets/images/chat-demo-avatar.png differ diff --git a/public/assets/images/icons.svg b/public/assets/images/icons.svg index 3fff74520..6b45dd781 100644 --- a/public/assets/images/icons.svg +++ b/public/assets/images/icons.svg @@ -1 +1 @@ -arrow-downarrow-leftarrow-rightarrow-upchatcheckbox-checkedcheckboxcheckmarkclipboardclockcloudcogcrowndashboarddiagonal-crossdownloaddropdown-listemail-buttonemailfacebook-buttonfacebookgoogle-buttongrouphelpimportantin-processline-left-arrowline-right-arrowlinkedin-buttonlistloadinglock-openlocklogotypelong-arrow-rightmagnifiermarkermessageminus-smallminusmood-badmood-goodmood-okmood-super-badmood-supergoodnoteone-ticketorganizationoutbound-callsoverviewspackagepaperclippenpersonphoneplus-smallplusradio-checkedradioreceived-callsreloadreopeningreply-allreplyreportsignoutsplitstatus-modified-inner-circlestatus-modified-outer-circlestatusstopwatchswitchViewtask-stateteamtemplatestoolstotal-ticketstrashtwitter-buttontwitteruser \ No newline at end of file +arrow-downarrow-leftarrow-rightarrow-upchatcheckbox-checkedcheckboxcheckmarkclipboardclockcloudcogcrowndashboarddiagonal-crossdownloaddropdown-listemail-buttonemailfacebook-buttonfacebookgoogle-buttongrouphelpimportantin-processline-left-arrowline-right-arrowlinkedin-buttonlistloadinglock-openlocklogotypelong-arrow-rightmagnifiermarkermessageminus-smallminusmood-badmood-goodmood-okmood-super-badmood-supergoodnoteone-ticketorganizationoutbound-callsoverviewspackagepaperclippenpersonphoneplus-smallplusradio-checkedradioreceived-callsreloadreopeningreply-allreplyreportsignoutsplitstatus-modified-inner-circlestatus-modified-outer-circlestatusstopwatchswitchViewtask-stateteamtemplatestoolstotal-ticketstrashtwitter-buttontwitteruserzoom-inzoom-out \ No newline at end of file diff --git a/public/assets/images/icons/arrow-down.svg b/public/assets/images/icons/arrow-down.svg index 7b9411111..a21599116 100644 --- a/public/assets/images/icons/arrow-down.svg +++ b/public/assets/images/icons/arrow-down.svg @@ -1,6 +1,6 @@ - + arrow-down Created with Sketch. diff --git a/public/assets/images/icons/arrow-left.svg b/public/assets/images/icons/arrow-left.svg index 79625b613..6df15e70f 100644 --- a/public/assets/images/icons/arrow-left.svg +++ b/public/assets/images/icons/arrow-left.svg @@ -1,6 +1,6 @@ - + arrow-left Created with Sketch. diff --git a/public/assets/images/icons/arrow-right.svg b/public/assets/images/icons/arrow-right.svg index 4344b309a..476bee242 100644 --- a/public/assets/images/icons/arrow-right.svg +++ b/public/assets/images/icons/arrow-right.svg @@ -1,6 +1,6 @@ - + arrow-right Created with Sketch. diff --git a/public/assets/images/icons/arrow-up.svg b/public/assets/images/icons/arrow-up.svg index e5d09dba7..ed37a2da7 100644 --- a/public/assets/images/icons/arrow-up.svg +++ b/public/assets/images/icons/arrow-up.svg @@ -1,6 +1,6 @@ - + arrow-up Created with Sketch. diff --git a/public/assets/images/icons/chat.svg b/public/assets/images/icons/chat.svg index 4af80d383..ab2b4c537 100644 --- a/public/assets/images/icons/chat.svg +++ b/public/assets/images/icons/chat.svg @@ -1,6 +1,6 @@ - + chat Created with Sketch. diff --git a/public/assets/images/icons/checkbox-checked.svg b/public/assets/images/icons/checkbox-checked.svg index c7a1b67af..10dce42e3 100644 --- a/public/assets/images/icons/checkbox-checked.svg +++ b/public/assets/images/icons/checkbox-checked.svg @@ -1,6 +1,6 @@ - + checkbox-checked Created with Sketch. diff --git a/public/assets/images/icons/checkbox.svg b/public/assets/images/icons/checkbox.svg index 9619ee59d..602bc6bd0 100644 --- a/public/assets/images/icons/checkbox.svg +++ b/public/assets/images/icons/checkbox.svg @@ -1,6 +1,6 @@ - + checkbox Created with Sketch. diff --git a/public/assets/images/icons/checkmark.svg b/public/assets/images/icons/checkmark.svg index de82725a7..fbd6774ff 100644 --- a/public/assets/images/icons/checkmark.svg +++ b/public/assets/images/icons/checkmark.svg @@ -1,6 +1,6 @@ - + checkmark Created with Sketch. diff --git a/public/assets/images/icons/clipboard.svg b/public/assets/images/icons/clipboard.svg index 374b042cf..da8647d63 100644 --- a/public/assets/images/icons/clipboard.svg +++ b/public/assets/images/icons/clipboard.svg @@ -1,6 +1,6 @@ - + clipboard Created with Sketch. diff --git a/public/assets/images/icons/clock.svg b/public/assets/images/icons/clock.svg index a8491d0c6..5191c2cf7 100644 --- a/public/assets/images/icons/clock.svg +++ b/public/assets/images/icons/clock.svg @@ -1,6 +1,6 @@ - + clock Created with Sketch. diff --git a/public/assets/images/icons/cloud.svg b/public/assets/images/icons/cloud.svg index 381ecafc3..8b8d0f414 100644 --- a/public/assets/images/icons/cloud.svg +++ b/public/assets/images/icons/cloud.svg @@ -1,6 +1,6 @@ - + cloud Created with Sketch. diff --git a/public/assets/images/icons/cog.svg b/public/assets/images/icons/cog.svg index f937fd6a6..d4423bea8 100644 --- a/public/assets/images/icons/cog.svg +++ b/public/assets/images/icons/cog.svg @@ -1,6 +1,6 @@ - + cog Created with Sketch. diff --git a/public/assets/images/icons/crown.svg b/public/assets/images/icons/crown.svg index d55dc0849..950a164e6 100644 --- a/public/assets/images/icons/crown.svg +++ b/public/assets/images/icons/crown.svg @@ -1,13 +1,13 @@ - + crown Created with Sketch. - + diff --git a/public/assets/images/icons/dashboard.svg b/public/assets/images/icons/dashboard.svg index 376c4e89c..887059366 100644 --- a/public/assets/images/icons/dashboard.svg +++ b/public/assets/images/icons/dashboard.svg @@ -1,6 +1,6 @@ - + dashboard Created with Sketch. diff --git a/public/assets/images/icons/diagonal-cross.svg b/public/assets/images/icons/diagonal-cross.svg index 622a47e2a..f20e44e9f 100644 --- a/public/assets/images/icons/diagonal-cross.svg +++ b/public/assets/images/icons/diagonal-cross.svg @@ -1,6 +1,6 @@ - + diagonal-cross Created with Sketch. diff --git a/public/assets/images/icons/download.svg b/public/assets/images/icons/download.svg index 30562d7c0..c87207884 100644 --- a/public/assets/images/icons/download.svg +++ b/public/assets/images/icons/download.svg @@ -1,6 +1,6 @@ - + download Created with Sketch. diff --git a/public/assets/images/icons/email-button.svg b/public/assets/images/icons/email-button.svg index 1021b95fa..7a73630fb 100644 --- a/public/assets/images/icons/email-button.svg +++ b/public/assets/images/icons/email-button.svg @@ -1,12 +1,12 @@ - + email-button Created with Sketch. - + \ No newline at end of file diff --git a/public/assets/images/icons/email.svg b/public/assets/images/icons/email.svg index 535dfc285..178b9a45f 100644 --- a/public/assets/images/icons/email.svg +++ b/public/assets/images/icons/email.svg @@ -1,6 +1,6 @@ - + email Created with Sketch. diff --git a/public/assets/images/icons/facebook-button.svg b/public/assets/images/icons/facebook-button.svg index 7bf4e950d..09223ff8c 100644 --- a/public/assets/images/icons/facebook-button.svg +++ b/public/assets/images/icons/facebook-button.svg @@ -1,6 +1,6 @@ - + facebook-button Created with Sketch. diff --git a/public/assets/images/icons/facebook.svg b/public/assets/images/icons/facebook.svg index 99fdfcc6c..cbd1656ab 100644 --- a/public/assets/images/icons/facebook.svg +++ b/public/assets/images/icons/facebook.svg @@ -1,6 +1,6 @@ - + facebook Created with Sketch. diff --git a/public/assets/images/icons/full-logo.svg b/public/assets/images/icons/full-logo.svg index 8377db2c4..f159817fc 100644 --- a/public/assets/images/icons/full-logo.svg +++ b/public/assets/images/icons/full-logo.svg @@ -1,6 +1,6 @@ - + full-logo Created with Sketch. diff --git a/public/assets/images/icons/google-button.svg b/public/assets/images/icons/google-button.svg index 9d42817ac..63ac943d3 100644 --- a/public/assets/images/icons/google-button.svg +++ b/public/assets/images/icons/google-button.svg @@ -1,6 +1,6 @@ - + google-button Created with Sketch. diff --git a/public/assets/images/icons/group.svg b/public/assets/images/icons/group.svg index 132bb7d41..6f4227f45 100644 --- a/public/assets/images/icons/group.svg +++ b/public/assets/images/icons/group.svg @@ -1,6 +1,6 @@ - + group Created with Sketch. diff --git a/public/assets/images/icons/help.svg b/public/assets/images/icons/help.svg index 309dcb1ed..28a35f819 100644 --- a/public/assets/images/icons/help.svg +++ b/public/assets/images/icons/help.svg @@ -1,6 +1,6 @@ - + help Created with Sketch. diff --git a/public/assets/images/icons/important.svg b/public/assets/images/icons/important.svg index 24f9d0f94..c4253f170 100644 --- a/public/assets/images/icons/important.svg +++ b/public/assets/images/icons/important.svg @@ -1,6 +1,6 @@ - + important Created with Sketch. diff --git a/public/assets/images/icons/in-process.svg b/public/assets/images/icons/in-process.svg index 061cc39cc..d9f02ec41 100644 --- a/public/assets/images/icons/in-process.svg +++ b/public/assets/images/icons/in-process.svg @@ -1,6 +1,6 @@ - + in-process Created with Sketch. diff --git a/public/assets/images/icons/line-left-arrow.svg b/public/assets/images/icons/line-left-arrow.svg index e46413041..418403a59 100644 --- a/public/assets/images/icons/line-left-arrow.svg +++ b/public/assets/images/icons/line-left-arrow.svg @@ -1,6 +1,6 @@ - + line-left-arrow Created with Sketch. diff --git a/public/assets/images/icons/line-right-arrow.svg b/public/assets/images/icons/line-right-arrow.svg index 60629df69..414d78a53 100644 --- a/public/assets/images/icons/line-right-arrow.svg +++ b/public/assets/images/icons/line-right-arrow.svg @@ -1,6 +1,6 @@ - + line-right-arrow Created with Sketch. diff --git a/public/assets/images/icons/linkedin-button.svg b/public/assets/images/icons/linkedin-button.svg index d17dcda60..d02c903be 100644 --- a/public/assets/images/icons/linkedin-button.svg +++ b/public/assets/images/icons/linkedin-button.svg @@ -1,6 +1,6 @@ - + linkedin-button Created with Sketch. diff --git a/public/assets/images/icons/list.svg b/public/assets/images/icons/list.svg index 215fc403b..a147365b9 100644 --- a/public/assets/images/icons/list.svg +++ b/public/assets/images/icons/list.svg @@ -1,6 +1,6 @@ - + list Created with Sketch. diff --git a/public/assets/images/icons/loading.svg b/public/assets/images/icons/loading.svg index bb1863583..8e5964435 100644 --- a/public/assets/images/icons/loading.svg +++ b/public/assets/images/icons/loading.svg @@ -1,6 +1,6 @@ - + loading Created with Sketch. diff --git a/public/assets/images/icons/lock-open.svg b/public/assets/images/icons/lock-open.svg index e2999d259..70423b76f 100644 --- a/public/assets/images/icons/lock-open.svg +++ b/public/assets/images/icons/lock-open.svg @@ -1,6 +1,6 @@ - + lock-open Created with Sketch. diff --git a/public/assets/images/icons/lock.svg b/public/assets/images/icons/lock.svg index 83f0379b7..77d924659 100644 --- a/public/assets/images/icons/lock.svg +++ b/public/assets/images/icons/lock.svg @@ -1,6 +1,6 @@ - + lock Created with Sketch. diff --git a/public/assets/images/icons/logo.svg b/public/assets/images/icons/logo.svg index aabed355d..4f43a46b3 100644 --- a/public/assets/images/icons/logo.svg +++ b/public/assets/images/icons/logo.svg @@ -1,6 +1,6 @@ - + logo Created with Sketch. diff --git a/public/assets/images/icons/logotype.svg b/public/assets/images/icons/logotype.svg index e554c74fc..b20daa92a 100644 --- a/public/assets/images/icons/logotype.svg +++ b/public/assets/images/icons/logotype.svg @@ -1,6 +1,6 @@ - + logotype Created with Sketch. diff --git a/public/assets/images/icons/long-arrow-right.svg b/public/assets/images/icons/long-arrow-right.svg index 9b170a0ca..2e4362d22 100644 --- a/public/assets/images/icons/long-arrow-right.svg +++ b/public/assets/images/icons/long-arrow-right.svg @@ -1,6 +1,6 @@ - + long-arrow-right Created with Sketch. diff --git a/public/assets/images/icons/magnifier.svg b/public/assets/images/icons/magnifier.svg index 1b2062412..e97cff404 100644 --- a/public/assets/images/icons/magnifier.svg +++ b/public/assets/images/icons/magnifier.svg @@ -1,6 +1,6 @@ - + magnifier Created with Sketch. diff --git a/public/assets/images/icons/marker.svg b/public/assets/images/icons/marker.svg index cdf245e64..3ffeaa543 100644 --- a/public/assets/images/icons/marker.svg +++ b/public/assets/images/icons/marker.svg @@ -1,6 +1,6 @@ - + marker Created with Sketch. diff --git a/public/assets/images/icons/message.svg b/public/assets/images/icons/message.svg index e9f3af717..cea1661a4 100644 --- a/public/assets/images/icons/message.svg +++ b/public/assets/images/icons/message.svg @@ -1,6 +1,6 @@ - + message Created with Sketch. diff --git a/public/assets/images/icons/minus-small.svg b/public/assets/images/icons/minus-small.svg index 0b6dbb1b7..f23c4170b 100644 --- a/public/assets/images/icons/minus-small.svg +++ b/public/assets/images/icons/minus-small.svg @@ -1,6 +1,6 @@ - + minus-small Created with Sketch. diff --git a/public/assets/images/icons/minus.svg b/public/assets/images/icons/minus.svg index 1ab0233a0..44a4ebf83 100644 --- a/public/assets/images/icons/minus.svg +++ b/public/assets/images/icons/minus.svg @@ -1,6 +1,6 @@ - + minus Created with Sketch. diff --git a/public/assets/images/icons/mood-bad.svg b/public/assets/images/icons/mood-bad.svg index 94abd7d02..7ef91a4cf 100644 --- a/public/assets/images/icons/mood-bad.svg +++ b/public/assets/images/icons/mood-bad.svg @@ -1,6 +1,6 @@ - + mood-bad Created with Sketch. diff --git a/public/assets/images/icons/mood-good.svg b/public/assets/images/icons/mood-good.svg index aa7096ac5..6dedc5d42 100644 --- a/public/assets/images/icons/mood-good.svg +++ b/public/assets/images/icons/mood-good.svg @@ -1,6 +1,6 @@ - + mood-good Created with Sketch. diff --git a/public/assets/images/icons/mood-ok.svg b/public/assets/images/icons/mood-ok.svg index 6655875d3..820f50e40 100644 --- a/public/assets/images/icons/mood-ok.svg +++ b/public/assets/images/icons/mood-ok.svg @@ -1,6 +1,6 @@ - + mood-ok Created with Sketch. diff --git a/public/assets/images/icons/mood-super-bad.svg b/public/assets/images/icons/mood-super-bad.svg index 27c69e5e6..8d86fc554 100644 --- a/public/assets/images/icons/mood-super-bad.svg +++ b/public/assets/images/icons/mood-super-bad.svg @@ -1,6 +1,6 @@ - + mood-super-bad Created with Sketch. diff --git a/public/assets/images/icons/mood-supergood.svg b/public/assets/images/icons/mood-supergood.svg index 96fb337e1..00d4b8bb6 100644 --- a/public/assets/images/icons/mood-supergood.svg +++ b/public/assets/images/icons/mood-supergood.svg @@ -1,6 +1,6 @@ - + mood-supergood Created with Sketch. diff --git a/public/assets/images/icons/note.svg b/public/assets/images/icons/note.svg index ef9592b8b..7ea2a9482 100644 --- a/public/assets/images/icons/note.svg +++ b/public/assets/images/icons/note.svg @@ -1,11 +1,11 @@ - - + + note Created with Sketch. - + diff --git a/public/assets/images/icons/one-ticket.svg b/public/assets/images/icons/one-ticket.svg index fc66ec355..9a9f12b80 100644 --- a/public/assets/images/icons/one-ticket.svg +++ b/public/assets/images/icons/one-ticket.svg @@ -1,6 +1,6 @@ - + one-ticket Created with Sketch. diff --git a/public/assets/images/icons/organization.svg b/public/assets/images/icons/organization.svg index 08a32806a..b981c7e14 100644 --- a/public/assets/images/icons/organization.svg +++ b/public/assets/images/icons/organization.svg @@ -1,6 +1,6 @@ - + organization Created with Sketch. diff --git a/public/assets/images/icons/outbound-calls.svg b/public/assets/images/icons/outbound-calls.svg index 0cd0910c6..156605d7f 100644 --- a/public/assets/images/icons/outbound-calls.svg +++ b/public/assets/images/icons/outbound-calls.svg @@ -1,6 +1,6 @@ - + outbound-calls Created with Sketch. diff --git a/public/assets/images/icons/overviews.svg b/public/assets/images/icons/overviews.svg index c5bce344a..306984b36 100644 --- a/public/assets/images/icons/overviews.svg +++ b/public/assets/images/icons/overviews.svg @@ -1,6 +1,6 @@ - + overviews Created with Sketch. diff --git a/public/assets/images/icons/package.svg b/public/assets/images/icons/package.svg index 17fe95973..279e8b398 100644 --- a/public/assets/images/icons/package.svg +++ b/public/assets/images/icons/package.svg @@ -1,6 +1,6 @@ - + package Created with Sketch. diff --git a/public/assets/images/icons/paperclip.svg b/public/assets/images/icons/paperclip.svg index 7580ba364..df0f8d1bb 100644 --- a/public/assets/images/icons/paperclip.svg +++ b/public/assets/images/icons/paperclip.svg @@ -1,6 +1,6 @@ - + paperclip Created with Sketch. diff --git a/public/assets/images/icons/pen.svg b/public/assets/images/icons/pen.svg index 1993040ae..1e88b2f1a 100644 --- a/public/assets/images/icons/pen.svg +++ b/public/assets/images/icons/pen.svg @@ -1,6 +1,6 @@ - + pen Created with Sketch. diff --git a/public/assets/images/icons/person.svg b/public/assets/images/icons/person.svg index 2a0d9b541..03cdc6096 100644 --- a/public/assets/images/icons/person.svg +++ b/public/assets/images/icons/person.svg @@ -1,6 +1,6 @@ - + person Created with Sketch. diff --git a/public/assets/images/icons/phone.svg b/public/assets/images/icons/phone.svg index 8d44ecd74..6a9b4de9e 100644 --- a/public/assets/images/icons/phone.svg +++ b/public/assets/images/icons/phone.svg @@ -1,6 +1,6 @@ - + phone Created with Sketch. diff --git a/public/assets/images/icons/plus-small.svg b/public/assets/images/icons/plus-small.svg index 9e55bfad0..e71fafcf9 100644 --- a/public/assets/images/icons/plus-small.svg +++ b/public/assets/images/icons/plus-small.svg @@ -1,6 +1,6 @@ - + plus-small Created with Sketch. diff --git a/public/assets/images/icons/plus.svg b/public/assets/images/icons/plus.svg index 2b5e10425..59fe1e624 100644 --- a/public/assets/images/icons/plus.svg +++ b/public/assets/images/icons/plus.svg @@ -1,6 +1,6 @@ - + plus Created with Sketch. diff --git a/public/assets/images/icons/radio-checked.svg b/public/assets/images/icons/radio-checked.svg index 30d387dfa..d550729fe 100644 --- a/public/assets/images/icons/radio-checked.svg +++ b/public/assets/images/icons/radio-checked.svg @@ -1,6 +1,6 @@ - + radio-checked Created with Sketch. diff --git a/public/assets/images/icons/radio.svg b/public/assets/images/icons/radio.svg index 16849e22c..b96b8247a 100644 --- a/public/assets/images/icons/radio.svg +++ b/public/assets/images/icons/radio.svg @@ -1,6 +1,6 @@ - + radio Created with Sketch. diff --git a/public/assets/images/icons/received-calls.svg b/public/assets/images/icons/received-calls.svg index 26eb055c7..a8bcfcd6f 100644 --- a/public/assets/images/icons/received-calls.svg +++ b/public/assets/images/icons/received-calls.svg @@ -1,6 +1,6 @@ - + received-calls Created with Sketch. diff --git a/public/assets/images/icons/reload.svg b/public/assets/images/icons/reload.svg index 5fea0183c..0dd8778ed 100644 --- a/public/assets/images/icons/reload.svg +++ b/public/assets/images/icons/reload.svg @@ -1,6 +1,6 @@ - + reload Created with Sketch. diff --git a/public/assets/images/icons/reopening.svg b/public/assets/images/icons/reopening.svg index fac7b91b3..ad1c06660 100644 --- a/public/assets/images/icons/reopening.svg +++ b/public/assets/images/icons/reopening.svg @@ -1,6 +1,6 @@ - + reopening Created with Sketch. diff --git a/public/assets/images/icons/reply-all.svg b/public/assets/images/icons/reply-all.svg index f6ba567cb..5f74d2034 100644 --- a/public/assets/images/icons/reply-all.svg +++ b/public/assets/images/icons/reply-all.svg @@ -1,12 +1,12 @@ - + reply-all Created with Sketch. - + \ No newline at end of file diff --git a/public/assets/images/icons/reply.svg b/public/assets/images/icons/reply.svg index 86b757837..be23c9053 100644 --- a/public/assets/images/icons/reply.svg +++ b/public/assets/images/icons/reply.svg @@ -1,6 +1,6 @@ - + reply Created with Sketch. diff --git a/public/assets/images/icons/report.svg b/public/assets/images/icons/report.svg index ff4e1c941..f0d1e23d0 100644 --- a/public/assets/images/icons/report.svg +++ b/public/assets/images/icons/report.svg @@ -1,6 +1,6 @@ - + report Created with Sketch. diff --git a/public/assets/images/icons/signout.svg b/public/assets/images/icons/signout.svg index 6f641c30a..878f2e070 100644 --- a/public/assets/images/icons/signout.svg +++ b/public/assets/images/icons/signout.svg @@ -1,6 +1,6 @@ - + signout Created with Sketch. diff --git a/public/assets/images/icons/split.svg b/public/assets/images/icons/split.svg index b8dab7dde..bfe8b6579 100644 --- a/public/assets/images/icons/split.svg +++ b/public/assets/images/icons/split.svg @@ -1,6 +1,6 @@ - + split Created with Sketch. diff --git a/public/assets/images/icons/status-modified-inner-circle.svg b/public/assets/images/icons/status-modified-inner-circle.svg index fa9d049e7..13a70d2e2 100644 --- a/public/assets/images/icons/status-modified-inner-circle.svg +++ b/public/assets/images/icons/status-modified-inner-circle.svg @@ -1,6 +1,6 @@ - + status-modified-inner-circle Created with Sketch. diff --git a/public/assets/images/icons/status-modified-outer-circle.svg b/public/assets/images/icons/status-modified-outer-circle.svg index c5750ceea..df9f9a7a3 100644 --- a/public/assets/images/icons/status-modified-outer-circle.svg +++ b/public/assets/images/icons/status-modified-outer-circle.svg @@ -1,6 +1,6 @@ - + status-modified-outer-circle Created with Sketch. diff --git a/public/assets/images/icons/status.svg b/public/assets/images/icons/status.svg index 2cec6ca6f..d382556ce 100644 --- a/public/assets/images/icons/status.svg +++ b/public/assets/images/icons/status.svg @@ -1,6 +1,6 @@ - + status Created with Sketch. diff --git a/public/assets/images/icons/stopwatch.svg b/public/assets/images/icons/stopwatch.svg index 5dab1fc69..a2ebf6d84 100644 --- a/public/assets/images/icons/stopwatch.svg +++ b/public/assets/images/icons/stopwatch.svg @@ -1,6 +1,6 @@ - + stopwatch Created with Sketch. diff --git a/public/assets/images/icons/switchView.svg b/public/assets/images/icons/switchView.svg index 1eb688b2b..75ac3fdcb 100644 --- a/public/assets/images/icons/switchView.svg +++ b/public/assets/images/icons/switchView.svg @@ -1,6 +1,6 @@ - + switchView Created with Sketch. diff --git a/public/assets/images/icons/task-state.svg b/public/assets/images/icons/task-state.svg index b921bcb38..bb7d864cc 100644 --- a/public/assets/images/icons/task-state.svg +++ b/public/assets/images/icons/task-state.svg @@ -1,6 +1,6 @@ - + task-state Created with Sketch. diff --git a/public/assets/images/icons/team.svg b/public/assets/images/icons/team.svg index 93320bc38..d08d2a755 100644 --- a/public/assets/images/icons/team.svg +++ b/public/assets/images/icons/team.svg @@ -1,6 +1,6 @@ - + team Created with Sketch. diff --git a/public/assets/images/icons/templates.svg b/public/assets/images/icons/templates.svg index d309cb0ca..1fc3cd4ee 100644 --- a/public/assets/images/icons/templates.svg +++ b/public/assets/images/icons/templates.svg @@ -1,6 +1,6 @@ - + templates Created with Sketch. diff --git a/public/assets/images/icons/tools.svg b/public/assets/images/icons/tools.svg index 48d084d67..165709231 100644 --- a/public/assets/images/icons/tools.svg +++ b/public/assets/images/icons/tools.svg @@ -1,6 +1,6 @@ - + tools Created with Sketch. diff --git a/public/assets/images/icons/total-tickets.svg b/public/assets/images/icons/total-tickets.svg index 5718f606b..a628b97b6 100644 --- a/public/assets/images/icons/total-tickets.svg +++ b/public/assets/images/icons/total-tickets.svg @@ -1,6 +1,6 @@ - + total-tickets Created with Sketch. diff --git a/public/assets/images/icons/trash.svg b/public/assets/images/icons/trash.svg index c97d37975..67f061633 100644 --- a/public/assets/images/icons/trash.svg +++ b/public/assets/images/icons/trash.svg @@ -1,6 +1,6 @@ - + trash Created with Sketch. diff --git a/public/assets/images/icons/twitter-button.svg b/public/assets/images/icons/twitter-button.svg index 3b0fa6efd..116ba89d5 100644 --- a/public/assets/images/icons/twitter-button.svg +++ b/public/assets/images/icons/twitter-button.svg @@ -1,6 +1,6 @@ - + twitter-button Created with Sketch. diff --git a/public/assets/images/icons/twitter.svg b/public/assets/images/icons/twitter.svg index 8a08edd49..72b7a832a 100644 --- a/public/assets/images/icons/twitter.svg +++ b/public/assets/images/icons/twitter.svg @@ -1,6 +1,6 @@ - + twitter Created with Sketch. diff --git a/public/assets/images/icons/user.svg b/public/assets/images/icons/user.svg index 4e5104c8c..c3f32ca92 100644 --- a/public/assets/images/icons/user.svg +++ b/public/assets/images/icons/user.svg @@ -1,6 +1,6 @@ - + user Created with Sketch. diff --git a/public/assets/images/icons/zoom-in.svg b/public/assets/images/icons/zoom-in.svg new file mode 100644 index 000000000..f7b43458b --- /dev/null +++ b/public/assets/images/icons/zoom-in.svg @@ -0,0 +1,13 @@ + + + + zoom-in + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/public/assets/images/icons/zoom-out.svg b/public/assets/images/icons/zoom-out.svg new file mode 100644 index 000000000..7a6688bff --- /dev/null +++ b/public/assets/images/icons/zoom-out.svg @@ -0,0 +1,13 @@ + + + + zoom-out + Created with Sketch. + + + + + + + + \ No newline at end of file