summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/copy_to_clipboard.js.coffee
blob: 24301e01b10de7394f68498b8f1c1627274acba3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#= require clipboard

genericSuccess = (e) ->
  showTooltip(e.trigger, 'Copied!')

  # Clear the selection and blur the trigger so it loses its border
  e.clearSelection()
  $(e.trigger).blur()

# Safari doesn't support `execCommand`, so instead we inform the user to
# copy manually.
#
# See http://clipboardjs.com/#browser-support
genericError = (e) ->
  if /Mac/i.test(navigator.userAgent)
    key = '⌘' # Command
  else
    key = 'Ctrl'

  showTooltip(e.trigger, "Press #{key}-C to copy")

showTooltip = (target, title) ->
  $(target).
    tooltip(
      container: 'body'
      html: 'true'
      placement: 'auto bottom'
      title: title
      trigger: 'manual'
    ).
    tooltip('show').
    one('mouseleave', -> $(this).tooltip('hide'))

$ ->
  clipboard = new Clipboard '[data-clipboard-target], [data-clipboard-text]'
  clipboard.on 'success', genericSuccess
  clipboard.on 'error',   genericError