menu.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /**
  2. * @fileOverview
  3. *
  4. * 主菜单控制
  5. *
  6. * @author: techird
  7. * @copyright: Baidu FEX, 2014
  8. */
  9. KityMinder.registerUI('menu/menu', function(minder) {
  10. var ret = minder.getUI('eve').setup({});
  11. var $menutab = minder.getUI('widget/menutab');
  12. // 主菜单容器
  13. var $panel = $('<div>')
  14. .attr('id', 'main-menu')
  15. .css('display', 'none')
  16. .appendTo('#content-wrapper');
  17. // 主菜单按钮
  18. var $button = new FUI.Button({
  19. id: 'main-menu-btn',
  20. label: minder.getLang('ui.menu.mainmenutext')
  21. }).appendTo(document.getElementById('panel'));
  22. // 一级菜单选项卡
  23. var $tabs = new FUI.Tabs({
  24. className: 'main-menu-level1'
  25. }).appendTo($panel[0]);
  26. var timer;
  27. function show() {
  28. $panel.css('display', 'block');
  29. clearTimeout(timer);
  30. timer = setTimeout(function() {
  31. $panel.addClass('show');
  32. ret.fire('show');
  33. });
  34. }
  35. function hide() {
  36. ret.fire('hide');
  37. $panel.removeClass('show');
  38. minder.getRenderTarget().focus();
  39. timer = setTimeout(function() {
  40. $panel.css('display', 'none');
  41. });
  42. }
  43. function isVisible() {
  44. return $panel.hasClass('show');
  45. }
  46. function toggle() {
  47. if ($('#content-wrapper').hasClass('fullscreen')) return;
  48. (isVisible() ? hide : show)();
  49. }
  50. function createSub(name, asDefault) {
  51. var $sub = $menutab.generate($tabs, name, asDefault);
  52. var $h2 = $('<h2></h2>')
  53. .text(minder.getLang('ui.menu.' + name + 'header'))
  54. .appendTo($sub);
  55. return $sub;
  56. }
  57. function createSubMenu(name, asDefault) {
  58. var $sub = createSub(name, asDefault);
  59. var $subtabs = new FUI.Tabs().appendTo($sub);
  60. return {
  61. $tabs: $subtabs,
  62. createSub: function(subname, asDefault) {
  63. return $menutab.generate($subtabs, subname, asDefault);
  64. }
  65. };
  66. }
  67. $button.on('click', toggle);
  68. minder.addShortcut('esc', toggle);
  69. // expose
  70. ret.show = show;
  71. ret.hide = hide;
  72. ret.toggle = toggle;
  73. ret.isVisible = isVisible;
  74. ret.createSub = createSub;
  75. ret.createSubMenu = createSubMenu;
  76. ret.$panel = $panel;
  77. ret.$button = $button;
  78. ret.$tabs = $tabs;
  79. return ret;
  80. });