@constructor-io/constructorio-ui-autocomplete 1.23.26 → 1.23.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,6 +13,7 @@ const useSections_1 = tslib_1.__importDefault(require("./useSections"));
13
13
  const useRecommendationsObserver_1 = tslib_1.__importDefault(require("./useRecommendationsObserver"));
14
14
  const typeGuards_1 = require("../typeGuards");
15
15
  const useNormalizedProps_1 = tslib_1.__importDefault(require("./useNormalizedProps"));
16
+ const useCustomBlur_1 = tslib_1.__importDefault(require("./useCustomBlur"));
16
17
  exports.defaultSections = [
17
18
  {
18
19
  indexSectionName: 'Search Suggestions',
@@ -39,6 +40,7 @@ const useCioAutocomplete = (options) => {
39
40
  onSubmit,
40
41
  cioClient,
41
42
  previousQuery }, rest));
43
+ (0, useCustomBlur_1.default)(isOpen, closeMenu, autocompleteClassName);
42
44
  // Log console errors
43
45
  (0, useConsoleErrors_1.default)(sections, activeSections);
44
46
  // Track recommendation view
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ const useCustomBlur = (isOpen, closeMenu, autocompleteClassName) => {
5
+ const handleDocumentClick = (0, react_1.useCallback)((event) => {
6
+ var _a;
7
+ if (isOpen && !((_a = event.target) === null || _a === void 0 ? void 0 : _a.closest(`.${autocompleteClassName}`))) {
8
+ closeMenu();
9
+ }
10
+ }, [closeMenu, isOpen, autocompleteClassName]);
11
+ (0, react_1.useEffect)(() => {
12
+ document.addEventListener('mousedown', handleDocumentClick);
13
+ return () => {
14
+ document.removeEventListener('mousedown', handleDocumentClick);
15
+ };
16
+ }, [handleDocumentClick]);
17
+ };
18
+ exports.default = useCustomBlur;
@@ -49,6 +49,13 @@ const useDownShift = (_a) => {
49
49
  }
50
50
  }
51
51
  }
52
+ }, stateReducer: (state, actionAndChanges) => {
53
+ const { type, changes } = actionAndChanges;
54
+ // Override dropdown close on blur
55
+ if (type === downshift_1.useCombobox.stateChangeTypes.InputBlur) {
56
+ return Object.assign(Object.assign({}, changes), { isOpen: state.isOpen });
57
+ }
58
+ return changes;
52
59
  } }, rest));
53
60
  };
54
61
  exports.default = useDownShift;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '1.23.26';
3
+ exports.default = '1.23.27';
@@ -9,6 +9,7 @@ import useSections from './useSections';
9
9
  import useRecommendationsObserver from './useRecommendationsObserver';
10
10
  import { isCustomSection, isRecommendationsSection } from '../typeGuards';
11
11
  import useNormalizedProps from './useNormalizedProps';
12
+ import useCustomBlur from './useCustomBlur';
12
13
  export const defaultSections = [
13
14
  {
14
15
  indexSectionName: 'Search Suggestions',
@@ -38,6 +39,7 @@ const useCioAutocomplete = (options) => {
38
39
  previousQuery,
39
40
  ...rest,
40
41
  });
42
+ useCustomBlur(isOpen, closeMenu, autocompleteClassName);
41
43
  // Log console errors
42
44
  useConsoleErrors(sections, activeSections);
43
45
  // Track recommendation view
@@ -0,0 +1,15 @@
1
+ import { useCallback, useEffect } from 'react';
2
+ const useCustomBlur = (isOpen, closeMenu, autocompleteClassName) => {
3
+ const handleDocumentClick = useCallback((event) => {
4
+ if (isOpen && !event.target?.closest(`.${autocompleteClassName}`)) {
5
+ closeMenu();
6
+ }
7
+ }, [closeMenu, isOpen, autocompleteClassName]);
8
+ useEffect(() => {
9
+ document.addEventListener('mousedown', handleDocumentClick);
10
+ return () => {
11
+ document.removeEventListener('mousedown', handleDocumentClick);
12
+ };
13
+ }, [handleDocumentClick]);
14
+ };
15
+ export default useCustomBlur;
@@ -47,6 +47,14 @@ const useDownShift = ({ setQuery, items, onSubmit, cioClient, previousQuery = ''
47
47
  }
48
48
  }
49
49
  },
50
+ stateReducer: (state, actionAndChanges) => {
51
+ const { type, changes } = actionAndChanges;
52
+ // Override dropdown close on blur
53
+ if (type === useCombobox.stateChangeTypes.InputBlur) {
54
+ return { ...changes, isOpen: state.isOpen };
55
+ }
56
+ return changes;
57
+ },
50
58
  ...rest,
51
59
  });
52
60
  export default useDownShift;
@@ -1 +1 @@
1
- export default '1.23.26';
1
+ export default '1.23.27';
@@ -0,0 +1,2 @@
1
+ declare const useCustomBlur: (isOpen: boolean, closeMenu: () => void, autocompleteClassName: string) => void;
2
+ export default useCustomBlur;
@@ -1,2 +1,2 @@
1
- declare const _default: "1.23.26";
1
+ declare const _default: "1.23.27";
2
2
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructor-io/constructorio-ui-autocomplete",
3
- "version": "1.23.26",
3
+ "version": "1.23.27",
4
4
  "description": "Constructor.io Autocomplete UI library for web applications",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",