@constructor-io/constructorio-ui-autocomplete 1.23.20 → 1.23.22

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.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.storeRecentAction = exports.getLastAction = exports.getRecentActions = exports.storeRecentSearch = exports.getRecentSearches = exports.storageGetArray = exports.storageGetItem = exports.cleanTerm = exports.storageSetItem = exports.getStorageEngine = exports.CONSTANTS = void 0;
3
+ exports.storeRecentAction = exports.getLastAction = exports.getRecentActions = exports.storeRecentSearch = exports.getRecentSearches = exports.storageGetArray = exports.storageGetItem = exports.cleanTerm = exports.storageRemoveItem = exports.storageSetItem = exports.getStorageEngine = exports.CONSTANTS = void 0;
4
4
  // eslint-disable-next-line import/no-cycle
5
5
  const utils_1 = require("./utils");
6
6
  exports.CONSTANTS = {
@@ -40,6 +40,18 @@ const storageSetItem = (key, value) => {
40
40
  }
41
41
  };
42
42
  exports.storageSetItem = storageSetItem;
43
+ // Remove item in storage
44
+ const storageRemoveItem = (key) => {
45
+ try {
46
+ const storageEngine = (0, exports.getStorageEngine)(key.scope);
47
+ return storageEngine.removeItem(key.key);
48
+ }
49
+ catch (e) {
50
+ (0, utils_1.logger)(`storageRemoveItem error: ${e}`);
51
+ return null;
52
+ }
53
+ };
54
+ exports.storageRemoveItem = storageRemoveItem;
43
55
  /*
44
56
  * Use the text content of the resulting HTML node(s) created from the
45
57
  * term
@@ -7,7 +7,7 @@ function DefaultRenderInput({ getFormProps, getInputProps, getLabelProps, setQue
7
7
  const inputProps = getInputProps();
8
8
  return (react_1.default.createElement("form", Object.assign({}, getFormProps()),
9
9
  react_1.default.createElement("label", Object.assign({}, getLabelProps(), { htmlFor: 'cio-input' }),
10
- react_1.default.createElement("input", Object.assign({ id: 'cio-input' }, inputProps))),
10
+ react_1.default.createElement("input", Object.assign({ id: 'cio-input' }, inputProps, { enterKeyHint: 'search' }))),
11
11
  react_1.default.createElement("button", { className: 'cio-clear-btn', "data-testid": 'cio-clear-btn', hidden: !inputProps.value, onClick: () => {
12
12
  setQuery('');
13
13
  if (inputProps.id) {
@@ -37,7 +37,7 @@ const useDownShift = (_a) => {
37
37
  // This does not apply to custom user defined sections that aren't part of Constructor index
38
38
  }
39
39
  else if (selectedItem.result_id) {
40
- cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker.trackAutocompleteSelect(selectedItem.value, {
40
+ (0, utils_1.trackAutocompleteSelect)(cioClient, selectedItem.value, {
41
41
  originalQuery: previousQuery,
42
42
  section: selectedItem.section,
43
43
  });
package/lib/cjs/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logger = exports.trackSearchSubmit = exports.translate = exports.getItemsForActiveSections = exports.trackRecommendationView = exports.escapeRegExp = exports.getActiveSectionsWithData = exports.getCioClient = exports.disableStoryActions = exports.stringifyWithDefaults = exports.functionStrings = exports.getStoryParams = exports.sleep = exports.clearConstructorRequests = exports.isTrackingRequestSent = exports.toKebabCase = exports.camelToStartCase = exports.getItemPosition = exports.getFeatures = void 0;
3
+ exports.logger = exports.trackAutocompleteSelect = exports.trackSearchSubmit = exports.translate = exports.getItemsForActiveSections = exports.trackRecommendationView = exports.escapeRegExp = exports.getActiveSectionsWithData = exports.getCioClient = exports.disableStoryActions = exports.stringifyWithDefaults = exports.functionStrings = exports.getStoryParams = exports.sleep = exports.clearConstructorRequests = exports.isTrackingRequestSent = exports.toKebabCase = exports.camelToStartCase = exports.getItemPosition = exports.getFeatures = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const constructorio_client_javascript_1 = tslib_1.__importDefault(require("@constructor-io/constructorio-client-javascript"));
6
6
  // eslint-disable-next-line import/no-cycle
@@ -233,6 +233,13 @@ const trackSearchSubmit = (cioClient, term, autocompleteData = {}) => {
233
233
  (0, beaconUtils_1.storeRecentAction)(beaconUtils_1.CONSTANTS.SEARCH_SUBMIT);
234
234
  };
235
235
  exports.trackSearchSubmit = trackSearchSubmit;
236
+ const trackAutocompleteSelect = (cioClient, itemName, autocompleteData = {}) => {
237
+ cioClient === null || cioClient === void 0 ? void 0 : cioClient.tracker.trackAutocompleteSelect(itemName, autocompleteData);
238
+ if ((autocompleteData === null || autocompleteData === void 0 ? void 0 : autocompleteData.section) === 'Products') {
239
+ (0, beaconUtils_1.storageRemoveItem)(beaconUtils_1.CONSTANTS.SEARCH_TERM_STORAGE_KEY);
240
+ }
241
+ };
242
+ exports.trackAutocompleteSelect = trackAutocompleteSelect;
236
243
  const logger = (error) => {
237
244
  var _a;
238
245
  try {
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '1.23.20';
3
+ exports.default = '1.23.22';
@@ -35,6 +35,17 @@ export const storageSetItem = (key, value) => {
35
35
  return null;
36
36
  }
37
37
  };
38
+ // Remove item in storage
39
+ export const storageRemoveItem = (key) => {
40
+ try {
41
+ const storageEngine = getStorageEngine(key.scope);
42
+ return storageEngine.removeItem(key.key);
43
+ }
44
+ catch (e) {
45
+ logger(`storageRemoveItem error: ${e}`);
46
+ return null;
47
+ }
48
+ };
38
49
  /*
39
50
  * Use the text content of the resulting HTML node(s) created from the
40
51
  * term
@@ -4,7 +4,7 @@ function DefaultRenderInput({ getFormProps, getInputProps, getLabelProps, setQue
4
4
  const inputProps = getInputProps();
5
5
  return (React.createElement("form", { ...getFormProps() },
6
6
  React.createElement("label", { ...getLabelProps(), htmlFor: 'cio-input' },
7
- React.createElement("input", { id: 'cio-input', ...inputProps })),
7
+ React.createElement("input", { id: 'cio-input', ...inputProps, enterKeyHint: 'search' })),
8
8
  React.createElement("button", { className: 'cio-clear-btn', "data-testid": 'cio-clear-btn', hidden: !inputProps.value, onClick: () => {
9
9
  setQuery('');
10
10
  if (inputProps.id) {
@@ -1,5 +1,5 @@
1
1
  import { useCombobox } from 'downshift';
2
- import { trackSearchSubmit } from '../utils';
2
+ import { trackSearchSubmit, trackAutocompleteSelect } from '../utils';
3
3
  let idCounter = 0;
4
4
  const useDownShift = ({ setQuery, items, onSubmit, cioClient, previousQuery = '', ...rest }) => useCombobox({
5
5
  id: `cio-autocomplete-${idCounter++}`,
@@ -34,7 +34,7 @@ const useDownShift = ({ setQuery, items, onSubmit, cioClient, previousQuery = ''
34
34
  // This does not apply to custom user defined sections that aren't part of Constructor index
35
35
  }
36
36
  else if (selectedItem.result_id) {
37
- cioClient?.tracker.trackAutocompleteSelect(selectedItem.value, {
37
+ trackAutocompleteSelect(cioClient, selectedItem.value, {
38
38
  originalQuery: previousQuery,
39
39
  section: selectedItem.section,
40
40
  });
package/lib/mjs/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import ConstructorIOClient from '@constructor-io/constructorio-client-javascript';
2
2
  // eslint-disable-next-line import/no-cycle
3
- import { storageSetItem, storeRecentSearch, storeRecentAction, CONSTANTS } from './beaconUtils';
3
+ import { storageSetItem, storageRemoveItem, storeRecentSearch, storeRecentAction, CONSTANTS, } from './beaconUtils';
4
4
  import { isRecommendationsSection } from './typeGuards';
5
5
  import version from './version';
6
6
  export function getFeatures(request) {
@@ -213,6 +213,12 @@ export const trackSearchSubmit = (cioClient, term, autocompleteData = {}) => {
213
213
  storeRecentSearch(term, {});
214
214
  storeRecentAction(CONSTANTS.SEARCH_SUBMIT);
215
215
  };
216
+ export const trackAutocompleteSelect = (cioClient, itemName, autocompleteData = {}) => {
217
+ cioClient?.tracker.trackAutocompleteSelect(itemName, autocompleteData);
218
+ if (autocompleteData?.section === 'Products') {
219
+ storageRemoveItem(CONSTANTS.SEARCH_TERM_STORAGE_KEY);
220
+ }
221
+ };
216
222
  export const logger = (error) => {
217
223
  try {
218
224
  if (typeof process !== 'undefined' && process?.env?.LOGGER) {
@@ -1 +1 @@
1
- export default '1.23.20';
1
+ export default '1.23.22';
@@ -17,6 +17,7 @@ export declare const CONSTANTS: {
17
17
  };
18
18
  export declare const getStorageEngine: (scope: any) => Storage;
19
19
  export declare const storageSetItem: (key: any, value: any) => void | null;
20
+ export declare const storageRemoveItem: (key: any) => void | null;
20
21
  export declare const cleanTerm: (term: any) => string;
21
22
  export declare const storageGetItem: (key: any) => string | null;
22
23
  export declare const storageGetArray: (key: any) => any;
@@ -43,5 +43,6 @@ export declare const trackRecommendationView: (target: HTMLElement, activeSectio
43
43
  export declare const getItemsForActiveSections: (activeSectionsWithData: Section[]) => Item[];
44
44
  export declare const translate: (word: string, translations?: Translations) => any;
45
45
  export declare const trackSearchSubmit: (cioClient: any, term: any, autocompleteData?: {}) => void;
46
+ export declare const trackAutocompleteSelect: (cioClient: any, itemName: any, autocompleteData?: any) => void;
46
47
  export declare const logger: (error: any) => void;
47
48
  export {};
@@ -1,2 +1,2 @@
1
- declare const _default: "1.23.20";
1
+ declare const _default: "1.23.22";
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.20",
3
+ "version": "1.23.22",
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",