JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<div ng-app="dragscroll">

<div class="wrapper" drag-scroll>
    <div class="content">
        
        
    </div>
    
</div>
</div>

CSS

.wrapper{
    position:fixed;
    background:#e91e63;
    overflow-x:auto;
    overflow-y:hidden;
    top:0;
    height:100%;
    left:0;
    width:100%;
    
}
.content{
    height:100px;
    width:3000px;
    background:#3f51b5;
}

JavaScript

var app = angular.module("dragscroll",[])

 .controller("dragscrollController",["$scope",function($scope){
 	
 }])
 .directive("dragScroll",[function(){
 	return {
 		controller:"dragscrollController",
 		scope:false,
 		compile:function(elem,attrs,transclude){
 			return function link(scope,elem,attrs,ctrl){
 				var $scope = scope;
 				$scope.dragging = false;
 				var mousedownHandler = function(e){
 					$(window).on("mousemove",dragStartHandler);
 					$(window).on("mouseup",clickHandler);
 					$scope.mousedownEvent = e;
 					$scope.mousedownScrollLeft = $(elem).scrollLeft();
 					console.log("mousedown");
 				}
 				var clickHandler = function(e){
 					$(window).off("mousemove",dragStartHandler);
 					$(window).off("mouseup",clickHandler);
 					console.log("simpleclick");
 				}
 				var dragStartHandler = function(e){
 					if(!$scope.dragging){
 						$(window).off("mouseup",clickHandler);
						$(window).on("mouseup",dragEndHandler);
						console.log("dragStart");
						$scope.dragging = true;
 					}
 					horizontalScroll(e);
 					
 				}
 				var dragEndHandler = function(e){
 					if($scope.dragging){
 						$(window).off("mousemove",dragStartHandler);
						$(window).off("mouseup",clickHandler);
						$(window).off("mouseup",dragEndHandler);					
						console.log("dragEnd");	
						$scope.dragging = false;
 					}
 					
 				}
 				var horizontalScroll = function(e){
 					e.preventDefault();
 					if(e.pageX>0 && e.pageX < screen.width){
 						$(elem).scrollLeft(($scope.mousedownScrollLeft+(-1*(e.clientX - $scope.mousedownEvent.clientX))));	
 					}else{
 						console.log("no scroll");
 					}
 					
 				}
 				$(elem).on("mousedown",mousedownHandler);
 			}
 		}
 	}
 }]);