Sha256: d9a1ea204bac5fbf76508c176c808ec66a42b55fb62f783c592f54b6c7c9f708

Contents?: true

Size: 1.45 KB

Versions: 3

Compression:

Stored size: 1.45 KB

Contents

class SelectOption extends Lanes.View.Base
    template: (scope)->
        '<option></option>'

    constructor: (options)->
        @groupName=options.groupName
        m = options.mappings
        @bindings = {}
        @bindings["model.#{m.id}"]       = { type: 'value', selector: 'option' }
        @bindings["model.#{m.selected}"] = { type: 'booleanAttribute', selector: 'option', name:'selected' }
        @bindings["model.#{m.title}"]    = 'option'
        @bindings["model.#{m.visible}"]  = { type: 'toggle' } if m.visible
        super


class Lanes.Component.SelectField extends Lanes.Component.ChoicesInput

    subviews:
        fields:
            hook: 'choices-input'
            collection: 'selections'
            options: 'subViewOptions'
            view: SelectOption

    session:
        multiple: { type: 'boolean', default: false }

    writeTemplate: ->
        multiple = if this.multiple then "multiple" else ""
        "<select class='form-control' #{multiple} name='#{this.field_name}' data-hook='choices-input'></select>"

    readTemplate: ->
        "<div class='ro-input' name='#{this.field_name}'></div>"

    select: (option)->
        if this.readOnly
            this.$el.text( if option then option.code else "" )
        else if option
            id = option.get(@mappings.id)
            option = this.query("option[value=\"#{id}\"]")
            option.selected = true
        else
            this.$el.find(":selected").prop('selected',false)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lanes-0.0.3 client/javascripts/component/SelectField.coffee
lanes-0.0.2 client/javascripts/component/SelectField.coffee
lanes-0.0.1 client/javascripts/component/SelectField.coffee