useSelectTriggerControl.js 1.1 KB

1234567891011121314151617181920212223242526272829
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = useSelectTriggerControl;
  6. var _vue = require("vue");
  7. function useSelectTriggerControl(refs, open, triggerOpen) {
  8. function onGlobalMouseDown(event) {
  9. var _refs$, _refs$2, _refs$2$value;
  10. var target = event.target;
  11. if (target.shadowRoot && event.composed) {
  12. target = event.composedPath()[0] || target;
  13. }
  14. var elements = [(_refs$ = refs[0]) === null || _refs$ === void 0 ? void 0 : _refs$.value, (_refs$2 = refs[1]) === null || _refs$2 === void 0 ? void 0 : (_refs$2$value = _refs$2.value) === null || _refs$2$value === void 0 ? void 0 : _refs$2$value.getPopupElement()];
  15. if (open.value && elements.every(function (element) {
  16. return element && !element.contains(target) && element !== target;
  17. })) {
  18. // Should trigger close
  19. triggerOpen(false);
  20. }
  21. }
  22. (0, _vue.onMounted)(function () {
  23. window.addEventListener('mousedown', onGlobalMouseDown);
  24. });
  25. (0, _vue.onBeforeUnmount)(function () {
  26. window.removeEventListener('mousedown', onGlobalMouseDown);
  27. });
  28. }