UNPKG

ldx-widgets

Version:

widgets

95 lines (79 loc) 2.11 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} = require 'react-dom-factories' AlertModal = createClass displayName: 'AlertModal' mixins: [animationMixin] enterStateStart: scale: .9 enterStateEnd: scale: 1 enterEasing: 'easeOutElastic' enterDuration: 600 propTypes: className: PropTypes.string close: PropTypes.func.isRequired okText: PropTypes.string cancelText: PropTypes.string cb: PropTypes.func height: PropTypes.number message: PropTypes.oneOfType([ PropTypes.string PropTypes.element ]).isRequired getDefaultProps: -> okText: 'OK' cancelText: 'Cancel' className: 'modal alert' handleClick: (e) -> e.stopPropagation() close: -> @props.close() confirm: -> # Fire a callback if present @props.cb?() @props.close() render: -> {scale} = @state {message, okText, cancelText, cb, className, height} = @props messageAsChild = typeof message is 'object' style = transform: "scale(#{scale})" WebkitTransform: "scale(#{scale})" msTransform: "scale(#{scale})" if height? style.height = height div { className: className onClick: @handleClick style: style }, [ 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