<body ng-app="locatorDemo" ng-controller="MainCtrl">
  <nav>
      <h1>
        Locator <small>a set of google location services for AngularJS</small>
      </h1><!--
       --><a href="https://github.com/winkerVSbecks/locator">github</a>
    </nav>

    <small class="tag-line">A set of google location services for AngularJS
    </small>

    <div class="column black flex-item">
      <h2>Location Lookup <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/149125/powered-by-google-on-non-white@2x.png" width="104px"></h2>
      <location-lookup ng-model="lookedUpLocation" limit-to="4"></location-lookup>
    </div>

    <div class="column blue flex-item">
      <h2>Location Picker <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/149125/powered-by-google-on-non-white@2x.png" width="104px"></h2>
      <location-picker ng-model="pickedLocation" limit-to="5"></location-picker>
    </div>

    <div ng-class="{ false: 'modal', true: 'modal--show' }[isModalVisible]">
      <div class="overlay" ng-click="toggleModal()"></div>
      <div class="modal__contents modal--transition">
        <a class="modal__close" href="" ng-click="toggleModal()">&times;</a>
        <h3 ng-if="pickedLocation">Picked Location</h3>
        <p ng-if="pickedLocation">Name: <span class="muted">{{pickedLocation.name}}</span><br/>Description: <span class="muted">{{pickedLocation.description}}</span><br/>Latitude: <span class="muted">{{pickedLocation.latitude}}</span><br/>Longitude: <span class="muted">{{pickedLocation.longitude}}</span></p>
        <br/>
        <br/>
        <h3 ng-if="lookedUpLocation">Looked Up Location</h3>
        <p ng-if="lookedUpLocation">Name: <span class="muted">{{lookedUpLocation.name}}</span><br/>Description: <span class="muted">{{lookedUpLocation.description}}</span><br/>Latitude: <span class="muted">{{lookedUpLocation.latitude}}</span><br/>Longitude: <span class="muted">{{lookedUpLocation.longitude}}</span></p>
      </div>
    </div>
</body>
@import url(https://fonts.googleapis.com/css?family=Lato:300,400,700,900);

* {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}


html, body {
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  font-family: 'Lato', sans-serif;
}

a:hover,
a:active { color: #000; text-decoration: none; }

nav { padding: 0 24px; }
nav h1 {
  line-height: 120px;
  display: inline-block;
  width: 80%;
  margin: 0;
  float: left;
}
nav small,
.tag-line { color: #bdc3c7; font-size: 16px; }
.tag-line { display: none; padding: 24px; }
.tag-line a {
  color: #95A5A6;
  font-weight: bolder;
  text-decoration: none;
}
.tag-line a:hover,
.tag-line a:active {
  color: #000;
}
nav a {
  display: inline-block;
  font-weight: bold;
  line-height: 120px;
  text-align: right;
  width: 20%;
  color: #95A5A6;
  float: left;
  font-size: 16px;
  text-decoration: none;
  vertical-align: bottom;
}

h2 {
  margin: 0;
  line-height: 120px;
  padding: 0 24px;
}

.column {
  width: 50%;
  position: absolute;
  top: 120px;
  bottom: 0;
  display: inline-block;
  float: left;
  color: #fff;
}

ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
ul li {
  padding: 0 24px;
  line-height: 60px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
}


.blue { background-color: #00B4FF; left: 50%; }
.blue h2,
.blue ul li { background-color: #00B4FF; border-bottom: 1px solid #0090CC; }

.black { background-color: #515151; left: 0; }
.black h2,
.black ul li { background-color: #515151; border-bottom: 1px solid #444444; }

input {
  border: none;
  font-size: 16px;
  border-bottom: 1px solid #444444;
  padding: 20px 24px;
  line-height: 20px;
  outline: none;
  color: #fff;
  margin: 0;
  display: block;
  width: 100%;
  background-color: #444;
}
h3 { font-weight: bolder; font-weight: 900; }
.muted { color: #BDC3C7; }

@media (max-width : 48rem) {
  nav small { display: none; }
  nav h1, nav a { line-height: 80px; }
  .tag-line { display: block; }

  .column {
    position: relative;
    display: block;
    float: left;
    width: 100%;
    top: auto;
  }
  .black,
  .blue { left: auto; }
}


/************************************************
  Modal By @clintonhalpin
  https://codepen.io/clintonhalpin/pen/cgbmk
/*************************************************/
.overlay {
  background: rgba(0,0,0,.5);
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.modal {
  visibility: hidden;
}

.modal__contents {
  background: white;
  width: 32rem;
  position: fixed;
  left: 50%;
  margin-left: -16rem;
  top: 6rem;
  min-height: 32rem;
  padding: 48px;
}

.modal__close {
  position: fixed;
  right: 2rem;
  top: 2rem;
  padding: 10px;
  text-decoration: none;
  font-weight: bolder;
}

.modal--show {
  visibility: visible;
}

.modal--transition {
  -webkit-transform: scale(0.7);
  -moz-transform: scale(0.7);
  -ms-transform: scale(0.7);
  transform: scale(0.7);
  opacity: 0;
  -webkit-transition: all 0.3s;
  -moz-transition: all 0.3s;
  transition: all 0.3s;
}

.modal--show .modal--transition {
  -webkit-transform: scale(1);
  -moz-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
  opacity: 1;
}

@media (max-width : 48rem) {

  .modal__contents {
    top: 0;
    left: 0;
    bottom: 0;
    width: 100%;
    margin: 0;
  }

  .modal--transition {
    -webkit-transform: translateX(-0) translateY(150%);
    -moz-transform: translateX(-0) translateY(150%);
    -ms-transform: translateX(-0) translateY(150%);
    transform: translateX(-0) translateY(150%);
  }
}
angular.module('locatorDemo', [
  'locator'
])
  .controller('MainCtrl', ['$scope', 'location', function ($scope, location) {
  	location.get(angular.noop, angular.noop);
    $scope.isModalVisible = false;

    $scope.toggleModal = function() {
      $scope.isModalVisible = !$scope.isModalVisible;
    };

    $scope.$watch('pickedLocation', $scope.toggleModal);
    $scope.$watch('lookedUpLocation', $scope.toggleModal);
  }]);

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://maps.googleapis.com/maps/api/js?key=AIzaSyDk_iQ6QWOTHW-TWoXSFLwbcnhaxlcnXXk&libraries=places&sensor=true
  2. https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js
  3. https://s3-us-west-2.amazonaws.com/s.cdpn.io/149125/locator.min.js
  4. https://s3-us-west-2.amazonaws.com/s.cdpn.io/149125/locator-tpl.js