useSelectTriggerControl.js 1010 B

1234567891011121314151617181920212223
  1. import { onBeforeUnmount, onMounted } from 'vue';
  2. export default function useSelectTriggerControl(refs, open, triggerOpen) {
  3. function onGlobalMouseDown(event) {
  4. var _refs$, _refs$2, _refs$2$value;
  5. var target = event.target;
  6. if (target.shadowRoot && event.composed) {
  7. target = event.composedPath()[0] || target;
  8. }
  9. 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()];
  10. if (open.value && elements.every(function (element) {
  11. return element && !element.contains(target) && element !== target;
  12. })) {
  13. // Should trigger close
  14. triggerOpen(false);
  15. }
  16. }
  17. onMounted(function () {
  18. window.addEventListener('mousedown', onGlobalMouseDown);
  19. });
  20. onBeforeUnmount(function () {
  21. window.removeEventListener('mousedown', onGlobalMouseDown);
  22. });
  23. }