Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. _popups = (app, module) ->
  2.    
  3.     # Open caret (opens popups via CSS)
  4.     openCaret = (caretElement) ->
  5.         caretElement.closest('.js-popup').addClass('js-opened')
  6.         caretElement.closest('.js-popup').addClass('-opened')
  7.         caretElement.addClass('js-opened')
  8.         caretElement.addClass('-opened')
  9.        
  10.     # Close caret (closes popups via CSS)
  11.     closeCaret = (caretElement) ->
  12.         caretElement.closest('.js-popup').removeClass('js-opened')
  13.         caretElement.closest('.js-popup').removeClass('-opened')
  14.         caretElement.removeClass('js-opened')
  15.         caretElement.removeClass('-opened')
  16.        
  17.     # Close all carets on opening a new one
  18.     cleanUpCarets = (caretElement) ->
  19.        
  20.         allCarets = $('.js-popupTrigger.js-opened')
  21.         for caret in allCarets
  22.             caret = $(caret)
  23.            
  24.             if caret isnt caretElement
  25.                 closeCaret(caret)
  26.                
  27.         if caretElement?
  28.             openCaret(caretElement)
  29.    
  30.            
  31.            
  32.     # Add popup listeners for closing or clicking outside
  33.     addPopupCloseClickListener = () ->
  34.        
  35.         $(document)
  36.             .on 'click', (e) ->
  37.                 clickTarget = $(e.target)
  38.                
  39.                 clickTargetPopup = clickTarget.closest('.js-popup')
  40.  
  41.                 console.log clickTarget
  42.                 console.log clickTargetPopup.length
  43.                 console.log clickTarget.hasClass('js-popupTrigger')
  44.  
  45.                 # Click outside of popup or on a trigger
  46.                 if clickTargetPopup.length is 0 and clickTarget.hasClass('js-opened') is false
  47.                     cleanUpCarets()
  48.    
  49.     # Add popup listeners for opening for clicking
  50.     addPopupOpenClickListener = () ->
  51.         ### $(document)
  52.             .on 'click', '.js-popupTrigger', (e) ->
  53.                 e.preventDefault()
  54.                
  55.                 caretElement = $(@)
  56.                 cleanUpCarets(caretElement)###
  57.                
  58.                
  59.                
  60.    
  61.     # Add popup listeners for closing for hover
  62.     addPopupCloseHoverListener = (caretElement) ->
  63.         popup = caretElement.find('.js-popup')
  64.         popup
  65.             .on 'mouseleave', () ->
  66.                 cleanUpCarets()
  67.                 popup.off 'mouseleave'
  68.    
  69.     # Add popup listeners for opening for hover
  70.     addPopupOpenHoverListener = () ->
  71.         $(document).find('.js-hoverPopupTrigger')
  72.             .on 'mouseenter', () ->
  73.                 dataSelector = $(@).data 'target'
  74.                 caretElement = $('.js-popupTrigger[data-target="' + dataSelector + '"]')
  75.                 cleanUpCarets(caretElement)
  76.                 addPopupCloseHoverListener(caretElement)
  77.                
  78.     # React to clicks
  79.     addPopupCloseClickListener()
  80.     addPopupOpenClickListener()
  81.    
  82.     # React to hovers
  83.     #addPopupOpenHoverListener()
  84.  
  85.     return
  86.    
  87. export default _popups
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement