summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/sidebar.js.coffee
blob: 60432e4241dca4772efb702ed2a6ea737ab2da6f (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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#= require jquery.cookie

leftSidebarCollapsed = 'page-sidebar-collapsed'
leftSidebarExpanded = 'page-sidebar-expanded'

@RightSidebar =
  # set gutter state to one of this two values "expanded_gutter" or "collapsed_gutter"
  setGutterState: (state) ->
    gutterState = undefined
    if state = 'expanded_gutter'
      gutterState = 'right-sidebar-expanded'
    else if state = 'collapsed_gutter'
      gutterState = 'right-sidebar-collapsed'
    else
      throw new Error 'Unexpected argument, expected "expanded_gutter" or "collapsed_gutter"'

    $.cookie(state, $('.page-with-sidebar').hasClass(gutterState), { path: '/' })

  # "expanded_gutter" or "collapsed_gutter"
  getGutterState: (state) ->
    if state is 'expanded_gutter' or state is 'collapsed_gutter'
      $.cookie(state)
    else
      throw new Error 'Unexpected argument, expected "expanded_gutter" or "collapsed_gutter"'

  collapseSidebar: ->
    if bp? and bp.getBreakpointSize() isnt 'lg'
      $gutterIcon = $('.js-sidebar-toggle i:visible')

      # Wait until listeners are set
      setTimeout( ->
        # Only when sidebar is expanded
        if $gutterIcon.is('.fa-angle-double-right')
          $gutterIcon.closest('a').trigger('click', [true])
      , 0)

  expandSidebar: ->
    return if @getGutterState('collapsed_gutter') == 'true'

    $gutterIcon = $('.js-sidebar-toggle i:visible')

    # Wait until listeners are set
    setTimeout( ->
      # Only when sidebar is collapsed
      if $gutterIcon.is('.fa-angle-double-left')
        $gutterIcon.closest('a').trigger('click', [true])
    , 0)

toggleLeftSidebar = ->
  $('.page-with-sidebar').toggleClass("#{leftSidebarCollapsed} #{leftSidebarExpanded}")
  $('header').toggleClass("header-collapsed header-expanded")
  $('.toggle-nav-collapse i').toggleClass("fa-angle-right fa-angle-left")
  $.cookie("collapsed_nav", $('.page-with-sidebar').hasClass(leftSidebarCollapsed), { path: '/' })

  setTimeout ( ->
    niceScrollBars = $('.nicescroll').niceScroll();
    niceScrollBars.updateScrollBar();
  ), 300

$(document).on("click", '.toggle-nav-collapse', (e) ->
  e.preventDefault()

  toggleLeftSidebar()
)

$ ->
  size = bp.getBreakpointSize()

  if size is "xs" or size is "sm"
    if $('.page-with-sidebar').hasClass(leftSidebarExpanded)
      toggleLeftSidebar()