Sha256: a0935ae9438db3a2795a7ab326633107305310f138113dd3d518b6fa35ad1392

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

showInput = (element, showOrHide, valueAccessor) ->
  el = $(element)
  editable = el.next()
  button = editable.next()
  editable.toggle(!showOrHide)
  el.toggle(showOrHide)
  val = ko.utils.unwrapObservable valueAccessor()
  if showOrHide
    button.text 'Done'
    el.val val
  else
    button.text 'Edit'
    editable.text val


toggle = (element, valueAccessor) ->
  showingInput = not editing(element)
  showInput element, showingInput, valueAccessor

updateValue = (element, valueAccessor) ->
  valueAccessor()( $(element).val() )

editing = (element) -> $(element).is(':visible')

ko.bindingHandlers.inplace =
  init: (element, valueAccessor) ->
    val = ko.utils.unwrapObservable valueAccessor()
    editable = $("<span class='editable-content' />").insertAfter(element)
    button = $("<a href='#' class='inline-button'>Edit</a>").insertAfter editable
    showInput element, false, valueAccessor

    button.closest('form').submit ->
      updateValue element, valueAccessor if editing(element)
      showInput element, false, valueAccessor
    button.click (e) ->
      e.preventDefault()
      if editing element
        updateValue element, valueAccessor
      else
        toggle element, valueAccessor


  update: (element, valueAccessor) ->
    showInput element, false, valueAccessor

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
knockout-rails-0.0.3 lib/assets/javascripts/knockout/bindings/inplace.js.coffee
knockout-rails-0.0.2 lib/assets/javascripts/knockout/bindings/inplace.js.coffee