Sha256: 445944bd291265c5cb06aa2b1c53507b6dcc4a2f9f0a5b0425a936cc43ab8dcf

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

# This is the "real" dialog component. It's rendered to a div under document.body
class Lanes.Workspace.Dialog extends Lanes.React.Component

    propTypes:
        title:     React.PropTypes.string.isRequired
        onOk:      React.PropTypes.func.isRequired
        onCancel:  React.PropTypes.func.isRequired
        body:      React.PropTypes.element.isRequired
        show:      React.PropTypes.bool
        buttons:   React.PropTypes.object
        className: React.PropTypes.string

    getDefaultProps: ->
        buttons: {'Cancel': 'default', 'OK': 'primary'}

    getInitialState: ->
        show: true

    componentWillReceiveProps: (nextProps) ->
        @setState(show: nextProps.show) if nextProps.show?

    _hide: ->
        @setState(show: false)

    hide: ->
        @_hide()
        @props.onCancel()

    render: ->
        return null unless @state.show

        buttons = for name, style of @props.buttons
            <BS.Button key={name} className={name}
              onClick={_.partial(@props.onButton, name)}>{name}</BS.Button>

        classes = _.classnames('layout-dialog', @props.className)

        <BS.Modal.Dialog>
            <BS.Modal.Header>
                <BS.Modal.Title>{@props.title}</BS.Modal.Title>
            </BS.Modal.Header>

            <BS.Modal.Body>{@props.body}</BS.Modal.Body>

            <BS.Modal.Footer>{@buttons}</BS.Modal.Footer>

        </BS.Modal.Dialog>

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lanes-0.5.0 client/lanes/workspace/Modal.cjsx
lanes-0.4.0 client/lanes/workspace/Modal.cjsx
lanes-0.3.0 client/lanes/workspace/Modal.cjsx