@usereactify/search 3.12.0-beta.3 → 4.0.0

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.
@@ -14,7 +14,7 @@ const FilterStack = (props) => {
14
14
  return null;
15
15
  if (render)
16
16
  return render(filters);
17
- return (react_1.default.createElement(react_1.default.Fragment, null, filters.map((filter) => (react_1.default.createElement(FilterWithState, Object.assign({ key: filter.handle, filter: filter }, props))))));
17
+ return (react_1.default.createElement(react_1.default.Fragment, null, filters.map((filter) => (react_1.default.createElement(FilterWithState, Object.assign({ key: filter.id, filter: filter }, props))))));
18
18
  };
19
19
  exports.FilterStack = FilterStack;
20
20
  const FilterWithState = ({ filter, renderFilter, }) => {
@@ -1,5 +1,5 @@
1
1
  export declare const useSort: () => {
2
2
  sortOption: import("..").ConfigSort | undefined;
3
3
  sortOptions: import("..").ConfigSort[];
4
- setSortOption: (sortOptionId: string) => void;
4
+ setSortOption: (sortOptionHandle: string) => void;
5
5
  };
@@ -10,12 +10,12 @@ const hooks_1 = require("../hooks");
10
10
  const useSort = () => {
11
11
  const { track } = (0, hooks_1.useAnalytics)();
12
12
  const { sortOption, sortOptions, setSortOption } = (0, provider_1.useContext)();
13
- const handleSortChange = react_1.default.useCallback((sortOptionId) => {
14
- setSortOption(sortOptionId);
13
+ const handleSortChange = react_1.default.useCallback((sortOptionHandle) => {
14
+ setSortOption(sortOptionHandle);
15
15
  track({
16
16
  eventName: "sortChange",
17
17
  payload: {
18
- type: sortOptionId,
18
+ type: sortOptionHandle,
19
19
  },
20
20
  });
21
21
  }, [track, setSortOption]);
@@ -14,7 +14,7 @@ declare type Context = {
14
14
  onRedirect?: (type: "redirect" | "search", url: string) => void;
15
15
  submitSearch: (localSearchQuery?: string) => void;
16
16
  setSearchQuery: (searchQuery: string) => void;
17
- setSortOption: (sortOptionId: string) => void;
17
+ setSortOption: (sortOptionHandle: string) => void;
18
18
  showInstantSearchResults: boolean;
19
19
  setShowInstantSearchResults: (showInstantSearchResults: boolean) => void;
20
20
  theme?: Theme;
package/dist/provider.js CHANGED
@@ -77,13 +77,13 @@ const ConfiguredProvider = (props) => {
77
77
  setSearchQuery(searchQueryFromURL);
78
78
  }, [searchQueryFromURL]);
79
79
  react_1.default.useEffect(() => {
80
- if (searchSortFromURL && (sortOption === null || sortOption === void 0 ? void 0 : sortOption.id) !== searchSortFromURL) {
80
+ if (searchSortFromURL && (sortOption === null || sortOption === void 0 ? void 0 : sortOption.handle) !== searchSortFromURL) {
81
81
  setSortOption(searchSortFromURL, true);
82
82
  }
83
83
  }, [searchSortFromURL]);
84
84
  react_1.default.useEffect(() => {
85
- if (window.location.search === "" && (sortOption === null || sortOption === void 0 ? void 0 : sortOption.id)) {
86
- setSortOption(sortOption.id, true);
85
+ if (window.location.search === "" && (sortOption === null || sortOption === void 0 ? void 0 : sortOption.handle)) {
86
+ setSortOption(sortOption.handle, true);
87
87
  }
88
88
  }, [window.location.href]);
89
89
  const [showInstantSearchResults, setShowInstantSearchResults] = react_1.default.useState(false);
@@ -167,15 +167,16 @@ const useSortState = (config, collection) => {
167
167
  .sort((a, b) => `${a.position}`.localeCompare(`${b.position}`))
168
168
  .filter(({ visibility }) => ["all", type].includes(visibility));
169
169
  }, [config, collection]);
170
- const [sortOptionState, setSortOptionState] = react_1.default.useState((_a = sortOptions[0]) === null || _a === void 0 ? void 0 : _a.id);
171
- const sortOption = react_1.default.useMemo(() => sortOptions.find(({ id }) => id === sortOptionState) || sortOptions[0], [sortOptions, sortOptionState]);
172
- const setSortOption = react_1.default.useCallback((sortOptionId, ignoreHistoryState = false) => {
173
- setSortOptionState(sortOptionId);
170
+ const [sortOptionState, setSortOptionState] = react_1.default.useState((_a = sortOptions[0]) === null || _a === void 0 ? void 0 : _a.handle);
171
+ const sortOption = react_1.default.useMemo(() => sortOptions.find(({ handle }) => handle === sortOptionState) ||
172
+ sortOptions[0], [sortOptions, sortOptionState]);
173
+ const setSortOption = react_1.default.useCallback((sortOptionHandle, ignoreHistoryState = false) => {
174
+ setSortOptionState(sortOptionHandle);
174
175
  if (!ignoreHistoryState) {
175
176
  const url = new URL(window.location.href);
176
177
  url.searchParams.has("sort")
177
- ? url.searchParams.set("sort", sortOptionId)
178
- : url.searchParams.append("sort", sortOptionId);
178
+ ? url.searchParams.set("sort", sortOptionHandle)
179
+ : url.searchParams.append("sort", sortOptionHandle);
179
180
  window.history.pushState({}, "", url.toString());
180
181
  }
181
182
  }, [window.location.href]);
@@ -205,7 +206,7 @@ const useFilterStack = (config, collection, filterStackHandle) => react_1.defaul
205
206
  return matchingFilterStack;
206
207
  }
207
208
  }
208
- // select filter with "default" handle
209
+ // select filter with "default" handle
209
210
  let matchingFilterStack = matchingFilterStacks.find((filterStack) => filterStack.handle === "default");
210
211
  if (matchingFilterStack) {
211
212
  return matchingFilterStack;
@@ -107,6 +107,7 @@ export interface DefinedField {
107
107
  export interface Sort {
108
108
  id: string;
109
109
  name: string;
110
+ handle: string;
110
111
  field: string;
111
112
  position: number;
112
113
  enabled: boolean;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@usereactify/search",
3
3
  "description": "React UI library for Reactify Search",
4
- "version": "3.12.0-beta.3",
4
+ "version": "4.0.0",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",