Sha256: 93af861faf4530dc8916f21fbd54c326be06ec68540ec9707ca0fdf06f5c5d6b

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

Sprangular.directive 'addressForm', ->
  restrict: 'E'
  templateUrl: 'addresses/form.html'
  scope:
    address: '='
    countries: '='
    disabled: '='
    submitted: '='
  controller: ($scope) ->
    $scope.selectedCountry = null
    $scope.hasErrors = false

    $scope.$watchGroup ['address.firstname', 'address.lastname', 'address.address1', 'address.address2', 'address.city', 'address.stateId', 'address.countryId', 'address.zipcode', 'address.phone'], ->
      return unless $scope.submitted

      address = $scope.address
      address.validate()
      errors = address.errors
      $scope.hasErrors = errors && Object.keys(errors).length > 0

    $scope.$watch 'address.countryId', (newCountryId) ->
      return unless newCountryId

      address = $scope.address

      $scope.selectedCountry = _.find($scope.countries, (country) -> country.id == newCountryId)
      address.country = $scope.selectedCountry

      if address.state && address.state.country_id != newCountryId
        address.stateId = null
        address.state = null

    $scope.$watch 'address.stateId', (newStateId) ->
      return unless newStateId
      state = _.find($scope.selectedCountry.states, (state) -> state.id == newStateId)
      $scope.address.state = state

  link: (element, attrs) ->
    attrs.disabled = false unless attrs.disabled?

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sprangular-0.1.0 app/assets/javascripts/sprangular/directives/addressForm.coffee