selectOnClose.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. define([
  2. '../utils'
  3. ], function (Utils) {
  4. function SelectOnClose () { }
  5. SelectOnClose.prototype.bind = function (decorated, container, $container) {
  6. var self = this;
  7. decorated.call(this, container, $container);
  8. container.on('close', function (params) {
  9. self._handleSelectOnClose(params);
  10. });
  11. };
  12. SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
  13. if (params && params.originalSelect2Event != null) {
  14. var event = params.originalSelect2Event;
  15. // Don't select an item if the close event was triggered from a select or
  16. // unselect event
  17. if (event._type === 'select' || event._type === 'unselect') {
  18. return;
  19. }
  20. }
  21. var $highlightedResults = this.getHighlightedResults();
  22. // Only select highlighted results
  23. if ($highlightedResults.length < 1) {
  24. return;
  25. }
  26. var data = Utils.GetData($highlightedResults[0], 'data');
  27. // Don't re-select already selected resulte
  28. if (
  29. (data.element != null && data.element.selected) ||
  30. (data.element == null && data.selected)
  31. ) {
  32. return;
  33. }
  34. this.trigger('select', {
  35. data: data
  36. });
  37. };
  38. return SelectOnClose;
  39. });