@getlupa/vue 0.8.2 → 0.8.3

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.
@@ -1522,6 +1522,7 @@ const DEFAULT_PAGE_SIZE = 12;
1522
1522
  const DEFAULT_PAGE_SIZE_SELECTION = [12, 24, 36, 60];
1523
1523
  const LUPA_ROUTING_EVENT = "lupaRedirect";
1524
1524
  const RATING_STAR_HTML = "☆";
1525
+ const RESULT_ROOT_SELECTOR = "#lupa-search-results";
1525
1526
  const production = "https://api.lupasearch.com/v1/";
1526
1527
  const staging = "https://api.staging.lupasearch.com/v1/";
1527
1528
  const Env$1 = {
@@ -3976,22 +3977,21 @@ var ResultsLayoutEnum = /* @__PURE__ */ ((ResultsLayoutEnum2) => {
3976
3977
  ResultsLayoutEnum2["LIST"] = "List";
3977
3978
  return ResultsLayoutEnum2;
3978
3979
  })(ResultsLayoutEnum || {});
3979
- const RESULT_ROOT_ID = "lupa-search-results";
3980
3980
  const SHADOW_ROOT_ID = "lupa-shadow-id";
3981
3981
  const CONTAINER_ROOT_ID = "lupa-search-container";
3982
- const scrollToSearchResults = (timeout = 500) => {
3982
+ const scrollToSearchResults = (timeout = 500, containerSelector) => {
3983
3983
  if (timeout) {
3984
- setTimeout(() => scrollTo(RESULT_ROOT_ID), timeout);
3984
+ setTimeout(() => scrollTo(containerSelector != null ? containerSelector : RESULT_ROOT_SELECTOR), timeout);
3985
3985
  } else {
3986
- scrollTo(RESULT_ROOT_ID);
3986
+ scrollTo(RESULT_ROOT_SELECTOR);
3987
3987
  }
3988
3988
  };
3989
- const scrollTo = (elementId) => {
3989
+ const scrollTo = (elementSelector) => {
3990
3990
  var _a, _b;
3991
- let el = document.getElementById(elementId);
3991
+ let el = document.querySelector(elementSelector);
3992
3992
  const shadowRoot = (_a = document.getElementById(SHADOW_ROOT_ID)) == null ? void 0 : _a.shadowRoot;
3993
3993
  if (!el) {
3994
- el = (_b = shadowRoot == null ? void 0 : shadowRoot.getElementById(elementId)) != null ? _b : null;
3994
+ el = (_b = shadowRoot == null ? void 0 : shadowRoot.getElementById(elementSelector)) != null ? _b : null;
3995
3995
  }
3996
3996
  if (!el) {
3997
3997
  return;
@@ -7376,8 +7376,10 @@ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
7376
7376
  const props = __props;
7377
7377
  const paramStore = useParamsStore();
7378
7378
  const searchResultStore = useSearchResultStore();
7379
+ const optionsStore = useOptionsStore();
7379
7380
  const { filters } = storeToRefs(paramStore);
7380
7381
  const { facets } = storeToRefs(searchResultStore);
7382
+ const { searchResultOptions } = storeToRefs(optionsStore);
7381
7383
  vue.computed(() => {
7382
7384
  var _a;
7383
7385
  return (_a = facets.value) == null ? void 0 : _a.filter((f2) => {
@@ -7392,6 +7394,14 @@ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
7392
7394
  return !((_a2 = props.options.promotedFacets) == null ? void 0 : _a2.includes(f2.key));
7393
7395
  });
7394
7396
  });
7397
+ const scrollToResultsOptions = vue.computed(() => {
7398
+ var _a, _b, _c, _d, _e, _f;
7399
+ return {
7400
+ enabled: ((_a = searchResultOptions.value.scrollToResults) == null ? void 0 : _a.enabled) === void 0 ? true : (_b = searchResultOptions.value.scrollToResults) == null ? void 0 : _b.enabled,
7401
+ container: (_d = (_c = searchResultOptions.value.scrollToResults) == null ? void 0 : _c.scrollToContainerSelector) != null ? _d : RESULT_ROOT_SELECTOR,
7402
+ timeout: (_f = (_e = searchResultOptions.value.scrollToResults) == null ? void 0 : _e.timeout) != null ? _f : 500
7403
+ };
7404
+ });
7395
7405
  const handleFacetSelect = (facetAction) => {
7396
7406
  switch (facetAction.type) {
7397
7407
  case "terms":
@@ -7404,7 +7414,12 @@ const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
7404
7414
  toggleHierarchyFilter(paramStore.appendParams, facetAction, filters.value);
7405
7415
  break;
7406
7416
  }
7407
- scrollToSearchResults();
7417
+ if (scrollToResultsOptions.value.enabled) {
7418
+ scrollToSearchResults(
7419
+ scrollToResultsOptions.value.timeout,
7420
+ scrollToResultsOptions.value.container
7421
+ );
7422
+ }
7408
7423
  };
7409
7424
  const clear = (facet) => {
7410
7425
  const param = getFacetKey(facet.key, facet.type);
@@ -7716,7 +7731,9 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
7716
7731
  });
7717
7732
  const paramStore = useParamsStore();
7718
7733
  const screenStore = useScreenStore();
7734
+ const optionsStore = useOptionsStore();
7719
7735
  const { isMobileWidth } = storeToRefs(screenStore);
7736
+ const { searchResultOptions } = storeToRefs(optionsStore);
7720
7737
  const pageOptionsCount = vue.computed(() => {
7721
7738
  return isMobileWidth.value ? props.options.displayMobile : props.options.display;
7722
7739
  });
@@ -7750,12 +7767,25 @@ const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
7750
7767
  const showPagination = vue.computed(() => {
7751
7768
  return pages.value.length > 1;
7752
7769
  });
7770
+ const scrollToResultsOptions = vue.computed(() => {
7771
+ var _a, _b, _c, _d, _e, _f;
7772
+ return {
7773
+ enabled: ((_a = searchResultOptions.value.scrollToResults) == null ? void 0 : _a.enabled) === void 0 ? true : (_b = searchResultOptions.value.scrollToResults) == null ? void 0 : _b.enabled,
7774
+ container: (_d = (_c = searchResultOptions.value.scrollToResults) == null ? void 0 : _c.scrollToContainerSelector) != null ? _d : RESULT_ROOT_SELECTOR,
7775
+ timeout: (_f = (_e = searchResultOptions.value.scrollToResults) == null ? void 0 : _e.timeout) != null ? _f : 500
7776
+ };
7777
+ });
7753
7778
  const handlePageChange = (page) => {
7754
7779
  if (page > 0) {
7755
7780
  paramStore.appendParams({
7756
7781
  params: [{ name: QUERY_PARAMS.PAGE, value: page.toString() }]
7757
7782
  });
7758
- scrollToSearchResults();
7783
+ if (scrollToResultsOptions.value.enabled) {
7784
+ scrollToSearchResults(
7785
+ scrollToResultsOptions.value.timeout,
7786
+ scrollToResultsOptions.value.container
7787
+ );
7788
+ }
7759
7789
  }
7760
7790
  };
7761
7791
  return (_ctx, _cache) => {
@@ -1520,6 +1520,7 @@ const DEFAULT_PAGE_SIZE = 12;
1520
1520
  const DEFAULT_PAGE_SIZE_SELECTION = [12, 24, 36, 60];
1521
1521
  const LUPA_ROUTING_EVENT = "lupaRedirect";
1522
1522
  const RATING_STAR_HTML = "☆";
1523
+ const RESULT_ROOT_SELECTOR = "#lupa-search-results";
1523
1524
  const production = "https://api.lupasearch.com/v1/";
1524
1525
  const staging = "https://api.staging.lupasearch.com/v1/";
1525
1526
  const Env$1 = {
@@ -3974,22 +3975,21 @@ var ResultsLayoutEnum = /* @__PURE__ */ ((ResultsLayoutEnum2) => {
3974
3975
  ResultsLayoutEnum2["LIST"] = "List";
3975
3976
  return ResultsLayoutEnum2;
3976
3977
  })(ResultsLayoutEnum || {});
3977
- const RESULT_ROOT_ID = "lupa-search-results";
3978
3978
  const SHADOW_ROOT_ID = "lupa-shadow-id";
3979
3979
  const CONTAINER_ROOT_ID = "lupa-search-container";
3980
- const scrollToSearchResults = (timeout = 500) => {
3980
+ const scrollToSearchResults = (timeout = 500, containerSelector) => {
3981
3981
  if (timeout) {
3982
- setTimeout(() => scrollTo(RESULT_ROOT_ID), timeout);
3982
+ setTimeout(() => scrollTo(containerSelector != null ? containerSelector : RESULT_ROOT_SELECTOR), timeout);
3983
3983
  } else {
3984
- scrollTo(RESULT_ROOT_ID);
3984
+ scrollTo(RESULT_ROOT_SELECTOR);
3985
3985
  }
3986
3986
  };
3987
- const scrollTo = (elementId) => {
3987
+ const scrollTo = (elementSelector) => {
3988
3988
  var _a, _b;
3989
- let el = document.getElementById(elementId);
3989
+ let el = document.querySelector(elementSelector);
3990
3990
  const shadowRoot = (_a = document.getElementById(SHADOW_ROOT_ID)) == null ? void 0 : _a.shadowRoot;
3991
3991
  if (!el) {
3992
- el = (_b = shadowRoot == null ? void 0 : shadowRoot.getElementById(elementId)) != null ? _b : null;
3992
+ el = (_b = shadowRoot == null ? void 0 : shadowRoot.getElementById(elementSelector)) != null ? _b : null;
3993
3993
  }
3994
3994
  if (!el) {
3995
3995
  return;
@@ -7374,8 +7374,10 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
7374
7374
  const props = __props;
7375
7375
  const paramStore = useParamsStore();
7376
7376
  const searchResultStore = useSearchResultStore();
7377
+ const optionsStore = useOptionsStore();
7377
7378
  const { filters } = storeToRefs(paramStore);
7378
7379
  const { facets } = storeToRefs(searchResultStore);
7380
+ const { searchResultOptions } = storeToRefs(optionsStore);
7379
7381
  computed(() => {
7380
7382
  var _a;
7381
7383
  return (_a = facets.value) == null ? void 0 : _a.filter((f2) => {
@@ -7390,6 +7392,14 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
7390
7392
  return !((_a2 = props.options.promotedFacets) == null ? void 0 : _a2.includes(f2.key));
7391
7393
  });
7392
7394
  });
7395
+ const scrollToResultsOptions = computed(() => {
7396
+ var _a, _b, _c, _d, _e, _f;
7397
+ return {
7398
+ enabled: ((_a = searchResultOptions.value.scrollToResults) == null ? void 0 : _a.enabled) === void 0 ? true : (_b = searchResultOptions.value.scrollToResults) == null ? void 0 : _b.enabled,
7399
+ container: (_d = (_c = searchResultOptions.value.scrollToResults) == null ? void 0 : _c.scrollToContainerSelector) != null ? _d : RESULT_ROOT_SELECTOR,
7400
+ timeout: (_f = (_e = searchResultOptions.value.scrollToResults) == null ? void 0 : _e.timeout) != null ? _f : 500
7401
+ };
7402
+ });
7393
7403
  const handleFacetSelect = (facetAction) => {
7394
7404
  switch (facetAction.type) {
7395
7405
  case "terms":
@@ -7402,7 +7412,12 @@ const _sfc_main$M = /* @__PURE__ */ defineComponent({
7402
7412
  toggleHierarchyFilter(paramStore.appendParams, facetAction, filters.value);
7403
7413
  break;
7404
7414
  }
7405
- scrollToSearchResults();
7415
+ if (scrollToResultsOptions.value.enabled) {
7416
+ scrollToSearchResults(
7417
+ scrollToResultsOptions.value.timeout,
7418
+ scrollToResultsOptions.value.container
7419
+ );
7420
+ }
7406
7421
  };
7407
7422
  const clear = (facet) => {
7408
7423
  const param = getFacetKey(facet.key, facet.type);
@@ -7714,7 +7729,9 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7714
7729
  });
7715
7730
  const paramStore = useParamsStore();
7716
7731
  const screenStore = useScreenStore();
7732
+ const optionsStore = useOptionsStore();
7717
7733
  const { isMobileWidth } = storeToRefs(screenStore);
7734
+ const { searchResultOptions } = storeToRefs(optionsStore);
7718
7735
  const pageOptionsCount = computed(() => {
7719
7736
  return isMobileWidth.value ? props.options.displayMobile : props.options.display;
7720
7737
  });
@@ -7748,12 +7765,25 @@ const _sfc_main$F = /* @__PURE__ */ defineComponent({
7748
7765
  const showPagination = computed(() => {
7749
7766
  return pages.value.length > 1;
7750
7767
  });
7768
+ const scrollToResultsOptions = computed(() => {
7769
+ var _a, _b, _c, _d, _e, _f;
7770
+ return {
7771
+ enabled: ((_a = searchResultOptions.value.scrollToResults) == null ? void 0 : _a.enabled) === void 0 ? true : (_b = searchResultOptions.value.scrollToResults) == null ? void 0 : _b.enabled,
7772
+ container: (_d = (_c = searchResultOptions.value.scrollToResults) == null ? void 0 : _c.scrollToContainerSelector) != null ? _d : RESULT_ROOT_SELECTOR,
7773
+ timeout: (_f = (_e = searchResultOptions.value.scrollToResults) == null ? void 0 : _e.timeout) != null ? _f : 500
7774
+ };
7775
+ });
7751
7776
  const handlePageChange = (page) => {
7752
7777
  if (page > 0) {
7753
7778
  paramStore.appendParams({
7754
7779
  params: [{ name: QUERY_PARAMS.PAGE, value: page.toString() }]
7755
7780
  });
7756
- scrollToSearchResults();
7781
+ if (scrollToResultsOptions.value.enabled) {
7782
+ scrollToSearchResults(
7783
+ scrollToResultsOptions.value.timeout,
7784
+ scrollToResultsOptions.value.container
7785
+ );
7786
+ }
7757
7787
  }
7758
7788
  };
7759
7789
  return (_ctx, _cache) => {
@@ -15,3 +15,4 @@ export declare const DEFAULT_PAGE_SIZE_SELECTION: number[];
15
15
  export declare const LUPA_ROUTING_EVENT = "lupaRedirect";
16
16
  export declare const DEFAULT_CONTAINER_STYLE = "containerStyle.css";
17
17
  export declare const RATING_STAR_HTML = "☆";
18
+ export declare const RESULT_ROOT_SELECTOR = "#lupa-search-results";
@@ -10,7 +10,7 @@ import type { SearchContainerOptions, SearchContainerConfigOptions } from './typ
10
10
  import type { SearchResultBadgeType, SearchResultBadgeElement, BadgeGenerateSeed, BadgeGenerateOptions, BadgeOptions } from './types/search-results/BadgeOptions';
11
11
  import { BadgeType } from './types/search-results/BadgeOptions';
12
12
  import type { RoutingBehavior } from './types/search-results/RoutingBehavior';
13
- import type { SearchResultsOptions, FacetStyle, SearchResultEventCallbacks, CallbackContext, SortCallbackContext, ResultCallbackContext, FacetFilterQuery, SearchResultsFilterOptions, ResultFacetOptions, DynamicData, SsrOptions } from './types/search-results/SearchResultsOptions';
13
+ import type { SearchResultsOptions, FacetStyle, SearchResultEventCallbacks, CallbackContext, SortCallbackContext, ResultCallbackContext, FacetFilterQuery, SearchResultsFilterOptions, ResultFacetOptions, DynamicData, SsrOptions, ScrollToResultsOptions } from './types/search-results/SearchResultsOptions';
14
14
  import type { AnchorPosition } from './types/search-results/SearchResultsProductCardOptions';
15
15
  import type { SortOptions, SearchResultsSortOptions } from './types/search-results/SearchResultsSort';
16
16
  import SearchBox from './components/search-box/SearchBox.vue';
@@ -29,4 +29,4 @@ declare const LupaSearch: {
29
29
  install: (app: any) => void;
30
30
  };
31
31
  export { SearchBox, SearchResults, ProductList, Recommendations, SearchContainer, ChatContainer, DocumentElementType, SearchBoxPanelType, BadgeType, setupTracking, LupaSearch, initPinia, getInitialSearchResults };
32
- export type { TrackingOptions, SearchBoxOptions, SearchResultsOptions, ProductListOptions, SdkOptions, FacetStyle, Environment, RoutingBehavior, AnchorPosition, SortDirection, DocumentElement, ImageDocumentElement, TitleDocumentElement, DescriptionDocumentElement, CustomDocumentElement, PriceElement, RegularPriceDocumentElement, RatingElement, AddToCartElement, CustomHtmlElement, SortOptions, SearchResultsSortOptions, SearchResultEventCallbacks, CallbackContext, SortCallbackContext, ResultCallbackContext, FacetFilterQuery, CategoryFilterOptions, SearchResultsFilterOptions, SearchResultBadgeType, SearchResultBadgeElement, ResultFacetOptions, BadgeGenerateSeed, BadgeGenerateOptions, BadgeOptions, SearchContainerOptions, SearchContainerConfigOptions, SingleStarRatingElement, DynamicData, ProductRecommendationOptions, RecommendationABTestingOptions, SsrOptions, ChatOptions, ChatSettings, SearchBoxEventCallbacks, SearchBoxResultCallbackContext, QueryParams, SearchBoxResultsNavigateContext, RedirectionOptions };
32
+ export type { TrackingOptions, SearchBoxOptions, SearchResultsOptions, ProductListOptions, SdkOptions, FacetStyle, Environment, RoutingBehavior, AnchorPosition, SortDirection, DocumentElement, ImageDocumentElement, TitleDocumentElement, DescriptionDocumentElement, CustomDocumentElement, PriceElement, RegularPriceDocumentElement, RatingElement, AddToCartElement, CustomHtmlElement, SortOptions, SearchResultsSortOptions, SearchResultEventCallbacks, CallbackContext, SortCallbackContext, ResultCallbackContext, FacetFilterQuery, CategoryFilterOptions, SearchResultsFilterOptions, SearchResultBadgeType, SearchResultBadgeElement, ResultFacetOptions, BadgeGenerateSeed, BadgeGenerateOptions, BadgeOptions, SearchContainerOptions, SearchContainerConfigOptions, SingleStarRatingElement, DynamicData, ProductRecommendationOptions, RecommendationABTestingOptions, SsrOptions, ChatOptions, ChatSettings, SearchBoxEventCallbacks, SearchBoxResultCallbackContext, QueryParams, SearchBoxResultsNavigateContext, RedirectionOptions, ScrollToResultsOptions };
@@ -14,6 +14,12 @@ export type SearchResultsOptions = SearchResultsProductOptions & SearchResultsAd
14
14
  dynamicData?: DynamicData;
15
15
  ssr?: SsrOptions;
16
16
  redirections?: RedirectionOptions;
17
+ scrollToResults?: ScrollToResultsOptions;
18
+ };
19
+ export type ScrollToResultsOptions = {
20
+ enabled?: boolean;
21
+ scrollToContainerSelector?: string;
22
+ timeout?: number;
17
23
  };
18
24
  export type SsrOptions = {
19
25
  baseUrl?: string;
@@ -1,4 +1,4 @@
1
- export declare const scrollToSearchResults: (timeout?: number) => void;
2
- export declare const scrollTo: (elementId: string) => void;
1
+ export declare const scrollToSearchResults: (timeout?: number, containerSelector?: string) => void;
2
+ export declare const scrollTo: (elementSelector: string) => void;
3
3
  export declare const disableBodyScroll: () => void;
4
4
  export declare const enableBodyScroll: () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getlupa/vue",
3
- "version": "0.8.2",
3
+ "version": "0.8.3",
4
4
  "main": "dist/lupaSearch.mjs",
5
5
  "module": "dist/lupaSearch.mjs",
6
6
  "types": "dist/src/index.d.ts",