UNPKG

ldx-widgets

Version:

widgets

87 lines (73 loc) 1.92 kB
React = require 'react' createClass = require 'create-react-class' PropTypes = require 'prop-types' animationMixin = require '../mixins/animation_mixin' NoAccess = React.createFactory require('./no_access') {div, button} = React.DOM AlertModal = createClass displayName: 'AlertModal' mixins: [animationMixin] enterStateStart: scale: .9 enterStateEnd: scale: 1 enterEasing: 'easeOutElastic' enterDuration: 600 propTypes: close: PropTypes.func.isRequired okText: PropTypes.string cancelText: PropTypes.string cb: PropTypes.func message: PropTypes.oneOfType([ PropTypes.string 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