dropdown.js 650 B

12345678910111213141516171819202122232425262728
  1. import Vue from 'vue';
  2. var dropdowns = [];
  3. !Vue.prototype.$isServer && document.addEventListener('click', function(event) {
  4. dropdowns.forEach(function(dropdown) {
  5. var target = event.target;
  6. if (!dropdown || !dropdown.$el) return;
  7. if (target === dropdown.$el || dropdown.$el.contains(target)) {
  8. return;
  9. }
  10. dropdown.handleOutsideClick && dropdown.handleOutsideClick(event);
  11. });
  12. });
  13. export default {
  14. open(instance) {
  15. if (instance) {
  16. dropdowns.push(instance);
  17. }
  18. },
  19. close(instance) {
  20. var index = dropdowns.indexOf(instance);
  21. if (index !== -1) {
  22. dropdowns.splice(instance, 1);
  23. }
  24. }
  25. };