treeSelect.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. 'use strict';
  2. var _createClass = (function() {
  3. function defineProperties(target, props) {
  4. for (var i = 0; i < props.length; i++) {
  5. var descriptor = props[i];
  6. descriptor.enumerable = descriptor.enumerable || false;
  7. descriptor.configurable = true;
  8. if ('value' in descriptor) descriptor.writable = true;
  9. Object.defineProperty(target, descriptor.key, descriptor);
  10. }
  11. }
  12. return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; };
  13. })();
  14. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
  15. var uid = 0;
  16. var TreeSelect = (function() {
  17. _createClass(TreeSelect, null, [{
  18. key: 'getUniquId',
  19. value: function getUniquId() {
  20. return uid++;
  21. }
  22. }]);
  23. function TreeSelect(options) {
  24. _classCallCheck(this, TreeSelect);
  25. var self = this;
  26. var defaultOptions = {
  27. valueKey: 'id'
  28. };
  29. self.options = options = $.extend(defaultOptions, options);
  30. var uid = TreeSelect.getUniquId();
  31. var tpl = '\n <input type="text" placeholder=' + options.placeholder + ' class="form-control treeSelect-input "/>\n <div class="ztree treeSelect-panel" id="treeSelect_panel_' + uid + '"></div>\n ';
  32. var ele = $(options.element);
  33. ele.html(tpl);
  34. var input = ele.find('.treeSelect-input');
  35. var panel = ele.find('.treeSelect-panel');
  36. self.element = ele;
  37. self.input = input;
  38. self.panel = panel;
  39. ele.css({
  40. 'position': 'relative'
  41. });
  42. input.on('keydown', function() {
  43. //input.val(self.text);
  44. return false;
  45. });
  46. input.click(function() {
  47. if (!self.isOpen()) {
  48. self.open();
  49. } else {
  50. self.close();
  51. }
  52. });
  53. if (options.url) {
  54. $.ajax({
  55. type: options.type,
  56. url: options.url,
  57. dataType: 'json',
  58. data: options.param,
  59. sucess: function sucess(data) {
  60. self.render(data);
  61. }
  62. });
  63. } else if (options.data) {
  64. self.render(options.data);
  65. }
  66. }
  67. _createClass(TreeSelect, [{
  68. key: 'isOpen',
  69. value: function isOpen() {
  70. var panel = this.panel;
  71. return !(panel.css('display') == 'none' || panel.height() == 0 || panel.css('opacity') == 0);
  72. }
  73. }, {
  74. key: 'render',
  75. value: function render(data) {
  76. var self = this;
  77. var panel = self.panel;
  78. var setting = {
  79. callback: {
  80. onClick: function onClick(event, treeId, treeNode) {
  81. // if (!treeNode.isParent) {
  82. self.input.val(treeNode.name);
  83. self.value = treeNode[self.options.valueKey];
  84. self.text = treeNode.name;
  85. self.close();
  86. // }
  87. }
  88. }
  89. };
  90. self.ztree = $.fn.zTree.init(panel, setting, data);
  91. }
  92. }, {
  93. key: 'open',
  94. value: function open() {
  95. var self = this;
  96. var panel = self.panel;
  97. panel.css({
  98. height: 'auto',
  99. opacity: 1
  100. });
  101. panel.show();
  102. self.mask = $('<div class="treeSelect-mask"></div>');
  103. $('body').append(self.mask);
  104. self.mask.click(function() {
  105. self.close();
  106. });
  107. }
  108. }, {
  109. key: 'close',
  110. value: function close() {
  111. var self = this;
  112. //panel.animate({
  113. // height:0,
  114. // opacity:0
  115. //},500);
  116. self.panel.hide();
  117. self.mask.remove();
  118. }
  119. }]);
  120. return TreeSelect;
  121. })();
  122. //# sourceMappingURL=treeSelect.js.map