ldx-widgets
Version:
widgets
98 lines (79 loc) • 2.15 kB
text/coffeescript
React = require 'react'
createClass = require 'create-react-class'
{div, a} = require 'react-dom-factories'
###&
@props.address1 - [String] - Optional
First part of the address
@props.address2 - [String] - Optional
Second part of the address
@props.address3 - [String] - Optional
Third part of the address
@props.city - [String] - Optional
City or town
@props.state - [String] - Optional
State or province
@props.zip - [String] - Optional
ZIP/postal code
@props.mapLink - [String] - Optional
External link to map is generated
This opens a new tab
&###
Address = createClass
displayName: 'Address'
render: ->
{address1, address2, address3, city, state, zip, country, mapLink} = @props
cityStateZipString = ''
address = []
mapAddress = ''
# Put city, state and zip on one line
if city?
cityStateZipString += city
if state?
if city? then cityStateZipString += ', '
cityStateZipString += "#{state.toUpperCase()} "
else
cityStateZipString += ' '
if zip?
if zip.length == 9
zip = zip.substr(0,5) + "-" + zip.substr(5,4)
cityStateZipString += zip
if address1?
address.push(div {
key: 1
}, "#{address1} "
)
mapAddress += "#{address1} "
if address2?
address.push(div {
key: 2
}, "#{address2} "
)
mapAddress += "#{address2} "
if address3?
address.push(div {
key: 3
}, "#{address3} "
)
mapAddress += "#{address3} "
if cityStateZipString.length
address.push(div {
key: "cityStateZip"
className: "capitalize"
}, cityStateZipString
)
mapAddress += "#{cityStateZipString} "
if country?
address.push(div {
key: country
}, "#{country}"
)
mapAddress += country
if mapLink
return a {
className: 'address block'
target: '_blank'
href: "https://www.google.com/maps/place/#{mapAddress}"
}, address
else
return div {className: 'address-display'}, address
module.exports = Address