Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. import { $DOC, $BODY, ACTIVE, NOSCROLL } from '../constants';
  2.  
  3. class Burger {
  4. init() {
  5. $DOC.on('click', `.${Burger.classNames.burger}`, this.toggle.bind(this));
  6. };
  7.  
  8. toggle(e) {
  9. e.preventDefault();
  10.  
  11. const name = e.currentTarget.getAttribute('data-menu-target');
  12. const $target = name
  13. ? $(`.${Burger.classNames.menu}[data-menu="${name}"]`)
  14. : $(`.${Burger.classNames.menu}`);
  15.  
  16. $(e.currentTarget).toggleClass(ACTIVE);
  17. $target.toggleClass(ACTIVE);
  18.  
  19. if (this.onToggle) {
  20. this.onToggle($(e.currentTarget), $target);
  21. };
  22. };
  23.  
  24. close() {
  25. const $burgers = $(`.${Burger.classNames.burger}`);
  26. const $targets = $(`.${Burger.classNames.menu}`);
  27.  
  28. if ($burgers.length > 0 && $targets.length > 0) {
  29. $burgers.removeClass(ACTIVE);
  30. $targets.removeClass(ACTIVE);
  31.  
  32. if (this.onClose) {
  33. this.onClose($burgers, $targets);
  34. };
  35. };
  36. };
  37. };
  38.  
  39. Burger.classNames = {
  40. burger: 'js-burger',
  41. menu: 'js-menu'
  42. };
  43.  
  44. export default function toggleMenu() {
  45. const burger = new Burger();
  46. burger.onToggle = ($burger, $target) => {
  47. $BODY.toggleClass(NOSCROLL);
  48. console.log('hello from onToggle menu', { $burger, $target });
  49. };
  50. burger.onClose = ($burgers, $targets) => {
  51. console.log('hello from onCLose menu', { $burgers, $targets });
  52. };
  53. burger.init();
  54.  
  55. $DOC.on('click', (e) => {
  56. if ($(e.target).is($('.js-menu'))) {
  57. $BODY.removeClass(NOSCROLL);
  58. burger.close();
  59. };
  60. });
  61. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement