sub_menu.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. (function($){
  10. $.subMenu = function (setting) {
  11. const menu = $(setting.menu), miniMenu = $(setting.miniMenu);
  12. const toMenu = $(setting.toMenu), toMiniMenu = $(setting.toMiniMenu);
  13. const miniHint = $(setting.miniHint);
  14. const showMenu = function () {
  15. menu.show();
  16. miniMenu.removeClass('d-flex').hide();
  17. setting.callback({mini: false});
  18. };
  19. const showMiniMenu = function () {
  20. menu.hide();
  21. miniMenu.addClass('d-flex').show();
  22. setting.callback({mini: true});
  23. };
  24. const menuType = setting.key ? getLocalCache(setting.key) : null;
  25. if ((menuType && menuType === 'miniMenu') || setting.forceMini) {
  26. showMiniMenu();
  27. } else {
  28. showMenu();
  29. }
  30. toMenu.click(function () {
  31. if (setting.forceMini) return;
  32. showMenu();
  33. if (setting.key) {
  34. setLocalCache(setting.key, 'menu');
  35. }
  36. });
  37. toMiniMenu.click(function () {
  38. showMiniMenu();
  39. if (setting.key) {
  40. setLocalCache(setting.key, 'miniMenu');
  41. }
  42. const hint = setting.hintKey ? getLocalCache(setting.hintKey) : '';
  43. if (hint !== '1') {
  44. miniHint.popover('show');
  45. }
  46. });
  47. miniMenu.mouseenter(function () {
  48. toMenu.show();
  49. toMenu.siblings('i').hide();
  50. // miniMenu.find('.side-switch i').addClass('fa-indent text-primary').removeClass('fa-bars');
  51. $(setting.miniMenuList).show();
  52. miniHint.popover('hide');
  53. if (setting.hintKey) {
  54. setLocalCache(setting.hintKey, '1');
  55. }
  56. });
  57. miniMenu.mouseleave(function () {
  58. toMenu.hide();
  59. toMenu.siblings('i').show();
  60. // miniMenu.find('.side-switch i').addClass('fa-bars').removeClass('fa-indent text-primary');
  61. $(setting.miniMenuList).hide();
  62. });
  63. let timeMake = false;
  64. $(setting.menu).find('.side-show').mouseenter(function () {
  65. $(setting.menu).find('.side-fold').show();
  66. timeMake = false;
  67. });
  68. $(setting.menu).find('.side-show').mouseleave(function () {
  69. timeMake = true;
  70. setTimeout(function () {
  71. if (timeMake) {
  72. $(setting.menu).find('.side-fold').hide();
  73. }
  74. }, 500);
  75. });
  76. $(setting.menu).find('.side-fold').mouseenter(function () {
  77. timeMake = false;
  78. $(this).css('width', '15px');
  79. });
  80. $(setting.menu).find('.side-fold').mouseleave(function () {
  81. timeMake = true;
  82. setTimeout(function () {
  83. if (timeMake) {
  84. $(setting.menu).find('.side-fold').hide();
  85. }
  86. }, 500);
  87. $(this).css('width', '6px');
  88. })
  89. }
  90. })(jQuery);