useSelectTriggerControl.js 995 B

123456789101112131415161718192021222324252627
  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 _a, _b, _c;
  10. let target = event.target;
  11. if (target.shadowRoot && event.composed) {
  12. target = event.composedPath()[0] || target;
  13. }
  14. const elements = [(_a = refs[0]) === null || _a === void 0 ? void 0 : _a.value, (_c = (_b = refs[1]) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.getPopupElement()];
  15. if (open.value && elements.every(element => element && !element.contains(target) && element !== target)) {
  16. // Should trigger close
  17. triggerOpen(false);
  18. }
  19. }
  20. (0, _vue.onMounted)(() => {
  21. window.addEventListener('mousedown', onGlobalMouseDown);
  22. });
  23. (0, _vue.onBeforeUnmount)(() => {
  24. window.removeEventListener('mousedown', onGlobalMouseDown);
  25. });
  26. }