Plus Minus

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<div ng-controller="plusMinusController as plusMinus">
  <div class="container" data-ng-class="{'has-selected': plusMinus.hasSelected()}">

    <div class="row" ng-repeat="block in plusMinus.blocks track by $index" data-ng-class="{ 'active': plusMinus.isActive($index)}">
      <div class="col-sm-4 col-xs-6">
        <div class="label-index" data-ng-class="{'active-selection': !plusMinus.isActive($index)}">
          {{$index}}
        </div>
        <a ng-href="#" class="btn btn-primary text-center" ng-click="plusMinus.selectBlock($index)">
          <i class="fa" data-ng-class="{'fa-minus': plusMinus.isActive($index), 'fa-plus': !plusMinus.isActive($index)}"></i>
        </a>
      </div>
      <div data-ng-show="plusMinus.isActive($index)" class="col-xs-3 textdiv">Hello</div>
    </div>

  </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

SCSS

body {
    padding-top: 15px;
}  
.has-selected :not(.active) > .col-sm-4 {
  
    width: 33%;
    height: inherit;
    background-color: rgba(00,00,00,0.8);
    z-index: 9;
}
.has-selected :not(.active) .col-sm-4 {
  @media (max-width:420px){
    width: 80%;
  }  

}

.label-index{
    width: 35%;
    height:50px;
    text-align:center;
    line-height:50px;
    float: left;
    left:15px;
    margin-top: 25px;
    margin-bottom: 25px;
    margin-right: 15px;
    color: orange;
    font-size: 18px;
    border:2px solid #000; 
    background-color: rgba(00,00,00,0.6);
}  
.textdiv{
    border:2px solid green; 
    background-color: rgba(100,100,100,0.1);
    height:50px;
    text-align:center;
    line-height:50px;
    margin-top: 25px;
}
i {
    color:#000;
    font-size: 40px;
    line-height:50px;
} 
.btn {
    height: 50px;
    margin-top: 25px;
    margin-left: 15px;
}    
.active-selection {
    background-color:rgba(100,100,100,0.1);
    width: 35%;
    font-size: 40px;
    text-align: center;
    border:2px solid green; 
}

JavaScript

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

.controller('plusMinusController', function() {

  var that = this;
  this.blocks = [0, 0, 0, 0, 0];

  this.isActive = function(id) {
    return that.blocks[id];
  };

  this.hasSelected = function() {
    return that.blocks.indexOf(true) !== -1;
  };

  this.selectBlock = function(id) {
    console.log('The ' + id + ' row was ' + that.isActive(id));
    // Toggle between 'plus' and 'minus' icon
    that.blocks[id] = !that.blocks[id];
    console.log('The ' + id + ' row is now ' + that.isActive(id));
    console.log('Blocks: ', that.blocks);
		console.log('Has selected: ' + that.hasSelected());
  };



});

angular.element(document).ready(function() {
  angular.bootstrap(document, ['plusMinusApp']);
});