Sha256: 08608cadfa2ee3a2fb4c283f6ad75c57d0b039396f2cf0e88f1952903432da32

Contents?: true

Size: 1.95 KB

Versions: 3

Compression:

Stored size: 1.95 KB

Contents

class Lanes.Components.FieldWrapper extends Lanes.React.BaseComponent

    mixins: [
        Lanes.React.Mixins.Access
        Lanes.React.Mixins.FieldErrors
        Lanes.React.Mixins.ReadEditingState
    ]
    blankElement: 'span'
    propTypes:
        model:    Lanes.PropTypes.State.isRequired
        unlabeled: React.PropTypes.bool
        displayComponent: React.PropTypes.any.isRequired
        label: React.PropTypes.oneOfType([
            React.PropTypes.string, React.PropTypes.element
        ])

    renderLabel: ->
        return null if @props.unlabeled
        <BS.ControlLabel>
            {@props.label}
        </BS.ControlLabel>

    renderType: ->
        if @isEditingRecord()
            if @hasWriteAccess()
                ['edit', @props.children]
            else if @hasReadAccess()
                ['display']
            else
                ['none', @blankElement]
        else
            if @hasReadAccess()
                ['display']
            else
                ['none', @blankElement]

    render: ->
        [type, child] = @renderType()

        props = _.omit(@props,
            'value', 'model', 'value', 'label', 'name', 'displayComponent'
        )
        unless child
            Comp = @props.displayComponent
            child = <Comp props />

        if @isFieldValueInvalid()
            validationState = 'warning'

        if (invalidMsg = @fieldInvalidValueMessage())
            msg = <BS.HelpBlock>{invalidMsg}</BS.HelpBlock>

        className = _.classnames( 'lanes-field', type, @props.className
            ( if @props.align then "align-#{@props.align}" else null),
        )

        <BS.Col {...props} className={className}>
            <BS.FormGroup validationState={validationState}>
                <BS.ControlLabel>
                {@renderLabel()}
                </BS.ControlLabel>
                {child}
                <BS.FormControl.Feedback />
                {msg}
            </BS.FormGroup>
        </BS.Col>

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lanes-0.7.0 client/lanes/components/shared/FieldWrapper.cjsx
lanes-0.6.1 client/lanes/components/shared/FieldWrapper.cjsx
lanes-0.6.0 client/lanes/components/shared/FieldWrapper.cjsx