Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<script src="http://code.jquery.com/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script>  
<link href="http://getbootstrap.com/dist/css/bootstrap.css" rel="stylesheet" type="text/css" />
<title>JS Bin</title>
</head>
<body>
  <div search-box>
  </div>
</body>
</html>
 
.search-box {
  float: left;
  overflow: hidden;
}
.search-form {
  float: left;
}
.search-btn {
  float: left;
  margin-left: 2px;
}
.search-input {
  width: 0;
  padding: 0;
  
  transition: width 0.2s;
}
.search-box.open .search-input {
  width: 200px;
  padding: 4px 10px;
}
 
var myApp = angular.module('myApp', []);
myApp.directive('searchBox', function($timeout) {
  return {
    restrict: 'A',
    template: '<div class="search-box" ng-class="{open: open}">'+
    '<form class="search-form">'+
      '<input type="text" class="form-control search-input" ng-blur="hideInput()">'+
    '</form>'+
    '<button type="button" class="btn search-btn" ng-click="showInput()">Search</button>'+
    '</div>',
    replace: true,
    scope: {},
    link: function(scope, element) {                
      scope.open = false;
      
      // Show search input
      scope.showInput = function() {
        scope.open = true;
        
        // Focus the input
        $timeout(function() {
          element.find('input').focus();
        }, 0);
      };
      
      // Hide search input
      scope.hideInput = function() {
        scope.open = false;
      };
    }
  };
});
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers