ldx-widgets
Version:
widgets
85 lines (71 loc) • 1.89 kB
text/coffeescript
React = require 'react'
animationMixin = require '../mixins/animation_mixin'
NoAccess = React.createFactory require('./no_access')
{div, button} = React.DOM
AlertModal = React.createClass
displayName: 'AlertModal'
mixins: [animationMixin]
enterStateStart:
scale: .9
enterStateEnd:
scale: 1
enterEasing: 'easeOutElastic'
enterDuration: 600
propTypes:
close: React.PropTypes.func.isRequired
okText: React.PropTypes.string
cancelText: React.PropTypes.string
cb: React.PropTypes.func
message: React.PropTypes.oneOfType([
React.PropTypes.string
React.PropTypes.element
]).isRequired
getDefaultProps: ->
okText: 'OK'
cancelText: 'Cancel'
handleClick: (e) ->
e.stopPropagation()
close: -> @props.close()
confirm: ->
# Fire a callback if present
@props.cb?()
@props.close()
render: ->
{scale} = @state
{message, okText, cancelText, cb} = @props
messageAsChild = typeof message is 'object'
div {
className: 'modal alert'
onClick: @handleClick
style:
transform: "scale(#{scale})"
WebkitTransform: "scale(#{scale})"
msTransform: "scale(#{scale})"
}, [
div {
key: 'message'
className: 'message'
}, if messageAsChild then message else NoAccess {
displayText: message
styleOverrides:
fontSize: '14px'
background: 'none'
paddingTop: 10
}
div {
key: 'ok'
className: 'buttons'
}, [
button {
className: 'okay-cancel cancel'
key: 'cancel'
onClick: @close
}, cancelText if cb?
button {
className: if cb? then 'okay-cancel okay' else 'prmy ok'
key: 'ok'
onClick: @confirm
}, okText
]
]
module.exports = AlertModal