Pujan
Pujan

Reputation: 69

Blur all But one div in ng-repeat

I am making an angularJS app where my goal is, when a user clicks a button inside one of the ng-repeat div, it should get focus by blurring all the other entries in of ng-repeat. I have created a minimal plunkr and described the problem with the image below.

I have this html

  <ul ng-repeat="detail in details">
    <li>
      <div style="border-style:solid;"> {{detail.name}} </div>
    </li>
  </ul>

and the Empty Controller:

  app.controller('MainCtrl', function ($scope) {
    $scope.details =
        [
           { "name": "Employees" },
           { "name": "Support" }
        ];

    $scope.details.name =
        [
          { "prof": "enginerr" },
          { "prof": "doctor" }
        ];
});

I have also added an image for demonstration and created a plunkr for reference. I am trying to achieve the bottom part of the image. Thanks in advance.

Upvotes: 0

Views: 117

Answers (1)

Prateek Gupta
Prateek Gupta

Reputation: 1169

Here's the sample I have created , please refer to it . Hopes this help you out. Thanks.

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {

    $scope.details = [
   { "name": "Employees" },
   { "name": "Support" }
    ];
     $scope.details.name = [
   { "prof": "enginerr" },
   { "prof": "doctor" }
    ];
    
    $scope.isActive=false;
    $scope.clickMe = function(index){
      $scope.currentIndex=index;
      $scope.isActive=!$scope.isActive;
    }
});
/* Put your css in here */

.notActive {
    pointer-events: none;
    cursor: not-allowed;
    opacity: 0.3;
}
<!DOCTYPE html>
<html ng-app="plunker">

<head>
  <meta charset="utf-8" />
  <title>AngularJS Plunker</title>
  <script>
    document.write('<base href="' + document.location + '" />');
  </script>
  <link rel="stylesheet" href="style.css" />
  <script data-require="[email protected]" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js" data-semver="1.0.8"></script>
  <script src="app.js"></script>
</head>

<body ng-controller="MainCtrl">
  <ul ng-repeat="detail in details">
    <li style="border-style:solid;" ng-class="{'notActive':isActive && currentIndex!=$index}">
      <div > {{detail.name}} </div>
       <button ng-click="clickMe($index)">Click me</button>
    </li>
  </ul>
</body>

</html>

Upvotes: 1

Related Questions