選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

iconbar.js 1.7 KiB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
  2. // MIT License. See license.txt
  3. wn.ui.IconBar = Class.extend({
  4. init: function(parent, n_groups) {
  5. this.parent = parent;
  6. this.buttons = {};
  7. this.make(n_groups);
  8. },
  9. make: function(n_groups) {
  10. this.$wrapper = $('<div class="iconbar-wrapper hide"></div>').appendTo(this.parent);
  11. for(var i=0; i<n_groups; i++) {
  12. this.get_group(i+1);
  13. }
  14. },
  15. get_group: function(group) {
  16. var $ul = this.$wrapper.find(".iconbar-"+group+" ul");
  17. if(!$ul.length)
  18. $ul = $('<div class="iconbar iconbar-'+group+' hide"><ul></ul></div>')
  19. .appendTo(this.$wrapper).find("ul");
  20. return $ul;
  21. },
  22. add_btn: function(group, icon, label, click) {
  23. var $ul = this.get_group(group);
  24. var $li = $('<li><i class="'+icon+'"></i></li>')
  25. .appendTo($ul)
  26. .on("click", function() {
  27. click.apply(this);
  28. return false;
  29. });
  30. $li.find("i").attr("title", label).tooltip();
  31. this.$wrapper.find(".iconbar-" + group).removeClass("hide")
  32. this.show();
  33. return $li;
  34. },
  35. hide: function(group) {
  36. if(group) {
  37. this.$wrapper.find(".iconbar-" + group).addClass("hide");
  38. this.check_if_all_hidden();
  39. } else {
  40. this.$wrapper.addClass("hide").trigger("hidden");
  41. }
  42. },
  43. show: function(group) {
  44. if(group) {
  45. this.$wrapper.find(".iconbar-" + group).removeClass("hide");
  46. this.show();
  47. } else {
  48. if(this.$wrapper.hasClass("hide"))
  49. this.$wrapper.removeClass("hide").trigger("shown");
  50. }
  51. },
  52. clear: function(group) {
  53. var me = this;
  54. this.$wrapper.find(".iconbar-" + group).addClass("hide").find("ul").empty();
  55. this.check_if_all_hidden();
  56. },
  57. check_if_all_hidden: function() {
  58. if(!this.$wrapper.find(".iconbar:visible").length) {
  59. this.hide();
  60. }
  61. }
  62. })