diff --git a/projects/pazznetwork/ngx-chat/src/lib/components/chat-filedrop/file-drop.component.html b/projects/pazznetwork/ngx-chat/src/lib/components/chat-filedrop/file-drop.component.html new file mode 100644 index 00000000..76dd2d21 --- /dev/null +++ b/projects/pazznetwork/ngx-chat/src/lib/components/chat-filedrop/file-drop.component.html @@ -0,0 +1,9 @@ +
+
+ {{dropMessage}} +
+
+ +
+
diff --git a/projects/pazznetwork/ngx-chat/src/lib/components/chat-filedrop/file-drop.component.less b/projects/pazznetwork/ngx-chat/src/lib/components/chat-filedrop/file-drop.component.less new file mode 100644 index 00000000..ede3db60 --- /dev/null +++ b/projects/pazznetwork/ngx-chat/src/lib/components/chat-filedrop/file-drop.component.less @@ -0,0 +1,23 @@ +.drop-message { + pointer-events: none; + display: none; +} + +.drop-message--visible { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + + display: flex; + justify-content: center; + align-content: center; + flex-direction: column; + + text-align: center; + font-size: 1.5em; + z-index: 999; + background-color: rgba(255, 255, 255, 0.6); + padding: 1em; +} diff --git a/projects/pazznetwork/ngx-chat/src/lib/components/chat-filedrop/file-drop.component.ts b/projects/pazznetwork/ngx-chat/src/lib/components/chat-filedrop/file-drop.component.ts new file mode 100644 index 00000000..57466e8c --- /dev/null +++ b/projects/pazznetwork/ngx-chat/src/lib/components/chat-filedrop/file-drop.component.ts @@ -0,0 +1,54 @@ +import { Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core'; + +@Component({ + selector: 'ngx-chat-filedrop', + templateUrl: './file-drop.component.html', + styleUrls: ['./file-drop.component.less'] +}) +export class FileDropComponent implements OnInit { + + @Output() + public fileUpload = new EventEmitter(); + + @Input() + dropMessage: string; + + isDropTarget = false; + + constructor() { } + + ngOnInit() { + } + + @HostListener('dragover', ['$event']) + @HostListener('dragenter', ['$event']) + onDragOver(event: DragEvent) { + event.preventDefault(); + event.stopPropagation(); + this.isDropTarget = true; + } + + @HostListener('dragleave', ['$event']) + @HostListener('dragexit', ['$event']) + onDragLeave(event: DragEvent) { + event.preventDefault(); + event.stopPropagation(); + this.isDropTarget = false; + } + + @HostListener('drop', ['$event']) + async onDrop(event: DragEvent) { + event.preventDefault(); + event.stopPropagation(); + + this.isDropTarget = false; + + for (let i = 0; i < event.dataTransfer.items.length; i++) { + const dataTransferItem = event.dataTransfer.items[i]; + if (dataTransferItem.kind === 'file') { + this.fileUpload.emit(dataTransferItem.getAsFile()); + } + } + } + +} diff --git a/projects/pazznetwork/ngx-chat/src/lib/components/chat-message-list/chat-message-list.component.less b/projects/pazznetwork/ngx-chat/src/lib/components/chat-message-list/chat-message-list.component.less index 3eb2d9bc..515aab4a 100644 --- a/projects/pazznetwork/ngx-chat/src/lib/components/chat-message-list/chat-message-list.component.less +++ b/projects/pazznetwork/ngx-chat/src/lib/components/chat-message-list/chat-message-list.component.less @@ -5,6 +5,7 @@ min-height: 10em; max-height: 20em; overflow: scroll; + word-break: break-all; } .chat-messages-empty { diff --git a/projects/pazznetwork/ngx-chat/src/lib/components/chat-message/chat-message.component.html b/projects/pazznetwork/ngx-chat/src/lib/components/chat-message/chat-message.component.html index e92992a0..c7c8a538 100644 --- a/projects/pazznetwork/ngx-chat/src/lib/components/chat-message/chat-message.component.html +++ b/projects/pazznetwork/ngx-chat/src/lib/components/chat-message/chat-message.component.html @@ -5,6 +5,9 @@ +
+ +