@getlupa/client 0.7.0-alpha-14 → 0.7.0-alpha-17

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.
@@ -9,5 +9,6 @@ export default class SearchResultsTitle extends Vue {
9
9
  get queryText(): string;
10
10
  get showProductCount(): boolean;
11
11
  get showSearchTitle(): boolean;
12
+ get descriptionTop(): string | undefined;
12
13
  getLabel(label: string): string;
13
14
  }
@@ -26,6 +26,8 @@ export default class TermFacet extends Vue {
26
26
  get facetMin(): number;
27
27
  get facetMax(): number;
28
28
  get statsSummary(): string;
29
+ get separator(): string;
30
+ get sliderInputFormat(): string | undefined;
29
31
  onMinValueChange(): void;
30
32
  onMaxValueChange(): void;
31
33
  handleInputChange(): void;
@@ -14806,7 +14806,7 @@ let TermFacet = class TermFacet extends Vue$1 {
14806
14806
  }
14807
14807
  get fromValue() {
14808
14808
  return this.isPrice
14809
- ? this.sliderRange[0].toFixed(2)
14809
+ ? this.sliderRange[0].toFixed(2).replace(".", this.separator)
14810
14810
  : `${this.sliderRange[0]}`;
14811
14811
  }
14812
14812
  set fromValue(stringValue) {
@@ -14822,7 +14822,7 @@ let TermFacet = class TermFacet extends Vue$1 {
14822
14822
  }
14823
14823
  get toValue() {
14824
14824
  return this.isPrice
14825
- ? this.sliderRange[1].toFixed(2)
14825
+ ? this.sliderRange[1].toFixed(2).replace(".", this.separator)
14826
14826
  : `${this.sliderRange[1]}`;
14827
14827
  }
14828
14828
  set toValue(stringValue) {
@@ -14881,9 +14881,16 @@ let TermFacet = class TermFacet extends Vue$1 {
14881
14881
  get statsSummary() {
14882
14882
  const [min, max] = this.sliderRange;
14883
14883
  return this.isPrice
14884
- ? formatPriceSummary([min, max], this.currency, this.searchResultOptions.labels.priceSeparator)
14884
+ ? formatPriceSummary([min, max], this.currency, this.separator)
14885
14885
  : formatRange({ gte: min, lte: max });
14886
14886
  }
14887
+ get separator() {
14888
+ var _a, _b, _c;
14889
+ return (_c = (_b = (_a = this.searchResultOptions) === null || _a === void 0 ? void 0 : _a.labels) === null || _b === void 0 ? void 0 : _b.priceSeparator) !== null && _c !== void 0 ? _c : ",";
14890
+ }
14891
+ get sliderInputFormat() {
14892
+ return this.isPrice ? `[0-9]+([${this.separator}][0-9]{1,2})?` : undefined;
14893
+ }
14887
14894
  onMinValueChange() {
14888
14895
  this.innerSliderRange = [];
14889
14896
  }
@@ -14974,10 +14981,10 @@ var __vue_render__$N = function () {
14974
14981
  },
14975
14982
  ],
14976
14983
  attrs: {
14977
- type: "number",
14984
+ type: "text",
14978
14985
  max: _vm.facetMax,
14979
14986
  min: _vm.facetMin,
14980
- step: _vm.isPrice ? "0.01" : "1",
14987
+ pattern: _vm.sliderInputFormat,
14981
14988
  },
14982
14989
  domProps: { value: _vm.fromValue },
14983
14990
  on: {
@@ -15014,10 +15021,10 @@ var __vue_render__$N = function () {
15014
15021
  },
15015
15022
  ],
15016
15023
  attrs: {
15017
- type: "number",
15024
+ type: "text",
15018
15025
  max: _vm.facetMax,
15019
15026
  min: _vm.facetMin,
15020
- step: _vm.isPrice ? "0.01" : "1",
15027
+ pattern: _vm.sliderInputFormat,
15021
15028
  },
15022
15029
  domProps: { value: _vm.toValue },
15023
15030
  on: {
@@ -20449,6 +20456,10 @@ let SearchResultsTitle = class SearchResultsTitle extends Vue$1 {
20449
20456
  return Boolean(((_a = this.options.labels) === null || _a === void 0 ? void 0 : _a.searchResults) &&
20450
20457
  (this.currentQueryText || this.isProductList));
20451
20458
  }
20459
+ get descriptionTop() {
20460
+ var _a, _b;
20461
+ return (_b = (_a = this.options.categories) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.descriptionTop;
20462
+ }
20452
20463
  getLabel(label) {
20453
20464
  return addParamsToLabel(label, `'${this.currentQueryText}'`);
20454
20465
  }
@@ -20483,27 +20494,36 @@ var __vue_render__$6 = function () {
20483
20494
  var _vm = this;
20484
20495
  var _h = _vm.$createElement;
20485
20496
  var _c = _vm._self._c || _h;
20486
- return _vm.showSearchTitle
20487
- ? _c(
20488
- "h1",
20489
- {
20490
- staticClass: "lupa-result-page-title",
20491
- attrs: { "data-cy": "lupa-result-page-title" },
20492
- },
20493
- [
20494
- _vm._v("\n " + _vm._s(_vm.options.labels.searchResults)),
20495
- _vm.queryText
20496
- ? _c("span", [_vm._v("'" + _vm._s(_vm.queryText) + "'")])
20497
- : _vm._e(),
20498
- _vm._v(" "),
20499
- _vm.showProductCount
20500
- ? _c("span", { staticClass: "lupa-results-total-count" }, [
20501
- _vm._v("(" + _vm._s(_vm.totalItems) + ")"),
20502
- ])
20503
- : _vm._e(),
20504
- ]
20505
- )
20506
- : _vm._e()
20497
+ return _c("div", [
20498
+ _vm.showSearchTitle
20499
+ ? _c(
20500
+ "h1",
20501
+ {
20502
+ staticClass: "lupa-result-page-title",
20503
+ attrs: { "data-cy": "lupa-result-page-title" },
20504
+ },
20505
+ [
20506
+ _vm._v("\n " + _vm._s(_vm.options.labels.searchResults)),
20507
+ _vm.queryText
20508
+ ? _c("span", [_vm._v("'" + _vm._s(_vm.queryText) + "'")])
20509
+ : _vm._e(),
20510
+ _vm._v(" "),
20511
+ _vm.showProductCount
20512
+ ? _c("span", { staticClass: "lupa-results-total-count" }, [
20513
+ _vm._v("(" + _vm._s(_vm.totalItems) + ")"),
20514
+ ])
20515
+ : _vm._e(),
20516
+ ]
20517
+ )
20518
+ : _vm._e(),
20519
+ _vm._v(" "),
20520
+ _vm.descriptionTop
20521
+ ? _c("div", {
20522
+ staticClass: "lupa-result-page-description-top",
20523
+ domProps: { innerHTML: _vm._s(_vm.descriptionTop) },
20524
+ })
20525
+ : _vm._e(),
20526
+ ])
20507
20527
  };
20508
20528
  var __vue_staticRenderFns__$6 = [];
20509
20529
  __vue_render__$6._withStripped = true;
@@ -20703,7 +20723,12 @@ let SearchResults = class SearchResults extends Vue$1 {
20703
20723
  this.setDefaultLimit(this.defaultSearchResultPageSize);
20704
20724
  }
20705
20725
  handleParamsChange() {
20726
+ var _a, _b;
20706
20727
  this.handleUrlChange();
20728
+ (_b = (_a = this.options.callbacks) === null || _a === void 0 ? void 0 : _a.onUrlQueryChange) === null || _b === void 0 ? void 0 : _b.call(_a, {
20729
+ queryKey: this.options.queryKey,
20730
+ urlQueryString: this.searchString,
20731
+ });
20707
20732
  }
20708
20733
  handleUrlChange(params) {
20709
20734
  const searchParams = params || new URLSearchParams(window.location.search);
@@ -20,6 +20,7 @@ export declare type CategoryFilterOptions = {
20
20
  current?: {
21
21
  title?: string;
22
22
  description?: string;
23
+ descriptionTop?: string;
23
24
  };
24
25
  };
25
26
  export declare type ProductListOptions = SearchResultsOptions & {
@@ -9,6 +9,7 @@ export declare type SearchResultsOptions = SearchResultsProductOptions & SearchR
9
9
  classMap?: Record<string, string>;
10
10
  disallowEmptyQuery?: boolean;
11
11
  callbacks?: SearchResultEventCallbacks;
12
+ categories?: CategoryFilterOptions;
12
13
  };
13
14
  export declare type SearchTitlePosition = "page-top" | "search-results-top";
14
15
  export declare type SearchResultsDidYouMeanLabels = {
@@ -22,13 +23,15 @@ export declare type SearchResultsSimilarQueriesLabels = {
22
23
  };
23
24
  export declare type CallbackContext = {
24
25
  queryKey: string;
25
- hasResults: boolean;
26
+ hasResults?: boolean;
27
+ urlQueryString?: string;
26
28
  };
27
29
  export declare type SearchResultEventCallbacks = {
28
30
  onSearchResults?: (context: CallbackContext) => unknown;
29
31
  onAdditionalPanelResults?: (context: CallbackContext) => unknown;
30
32
  onCategoryFilterResults?: (context: CallbackContext) => unknown;
31
33
  onProductClick?: (context: CallbackContext) => unknown;
34
+ onUrlQueryChange?: (context: CallbackContext) => unknown;
32
35
  onMounted?: () => unknown;
33
36
  };
34
37
  export declare type SearchResultsOptionLabels = SearchResultsPaginationLabels & SearchResultsDidYouMeanLabels & SearchResultsSimilarQueriesLabels & {
@@ -9,5 +9,6 @@ export default class SearchResultsTitle extends Vue {
9
9
  get queryText(): string;
10
10
  get showProductCount(): boolean;
11
11
  get showSearchTitle(): boolean;
12
+ get descriptionTop(): string | undefined;
12
13
  getLabel(label: string): string;
13
14
  }
@@ -26,6 +26,8 @@ export default class TermFacet extends Vue {
26
26
  get facetMin(): number;
27
27
  get facetMax(): number;
28
28
  get statsSummary(): string;
29
+ get separator(): string;
30
+ get sliderInputFormat(): string | undefined;
29
31
  onMinValueChange(): void;
30
32
  onMaxValueChange(): void;
31
33
  handleInputChange(): void;
@@ -14802,7 +14802,7 @@ let TermFacet = class TermFacet extends Vue$1 {
14802
14802
  }
14803
14803
  get fromValue() {
14804
14804
  return this.isPrice
14805
- ? this.sliderRange[0].toFixed(2)
14805
+ ? this.sliderRange[0].toFixed(2).replace(".", this.separator)
14806
14806
  : `${this.sliderRange[0]}`;
14807
14807
  }
14808
14808
  set fromValue(stringValue) {
@@ -14818,7 +14818,7 @@ let TermFacet = class TermFacet extends Vue$1 {
14818
14818
  }
14819
14819
  get toValue() {
14820
14820
  return this.isPrice
14821
- ? this.sliderRange[1].toFixed(2)
14821
+ ? this.sliderRange[1].toFixed(2).replace(".", this.separator)
14822
14822
  : `${this.sliderRange[1]}`;
14823
14823
  }
14824
14824
  set toValue(stringValue) {
@@ -14877,9 +14877,16 @@ let TermFacet = class TermFacet extends Vue$1 {
14877
14877
  get statsSummary() {
14878
14878
  const [min, max] = this.sliderRange;
14879
14879
  return this.isPrice
14880
- ? formatPriceSummary([min, max], this.currency, this.searchResultOptions.labels.priceSeparator)
14880
+ ? formatPriceSummary([min, max], this.currency, this.separator)
14881
14881
  : formatRange({ gte: min, lte: max });
14882
14882
  }
14883
+ get separator() {
14884
+ var _a, _b, _c;
14885
+ return (_c = (_b = (_a = this.searchResultOptions) === null || _a === void 0 ? void 0 : _a.labels) === null || _b === void 0 ? void 0 : _b.priceSeparator) !== null && _c !== void 0 ? _c : ",";
14886
+ }
14887
+ get sliderInputFormat() {
14888
+ return this.isPrice ? `[0-9]+([${this.separator}][0-9]{1,2})?` : undefined;
14889
+ }
14883
14890
  onMinValueChange() {
14884
14891
  this.innerSliderRange = [];
14885
14892
  }
@@ -14970,10 +14977,10 @@ var __vue_render__$N = function () {
14970
14977
  },
14971
14978
  ],
14972
14979
  attrs: {
14973
- type: "number",
14980
+ type: "text",
14974
14981
  max: _vm.facetMax,
14975
14982
  min: _vm.facetMin,
14976
- step: _vm.isPrice ? "0.01" : "1",
14983
+ pattern: _vm.sliderInputFormat,
14977
14984
  },
14978
14985
  domProps: { value: _vm.fromValue },
14979
14986
  on: {
@@ -15010,10 +15017,10 @@ var __vue_render__$N = function () {
15010
15017
  },
15011
15018
  ],
15012
15019
  attrs: {
15013
- type: "number",
15020
+ type: "text",
15014
15021
  max: _vm.facetMax,
15015
15022
  min: _vm.facetMin,
15016
- step: _vm.isPrice ? "0.01" : "1",
15023
+ pattern: _vm.sliderInputFormat,
15017
15024
  },
15018
15025
  domProps: { value: _vm.toValue },
15019
15026
  on: {
@@ -20445,6 +20452,10 @@ let SearchResultsTitle = class SearchResultsTitle extends Vue$1 {
20445
20452
  return Boolean(((_a = this.options.labels) === null || _a === void 0 ? void 0 : _a.searchResults) &&
20446
20453
  (this.currentQueryText || this.isProductList));
20447
20454
  }
20455
+ get descriptionTop() {
20456
+ var _a, _b;
20457
+ return (_b = (_a = this.options.categories) === null || _a === void 0 ? void 0 : _a.current) === null || _b === void 0 ? void 0 : _b.descriptionTop;
20458
+ }
20448
20459
  getLabel(label) {
20449
20460
  return addParamsToLabel(label, `'${this.currentQueryText}'`);
20450
20461
  }
@@ -20479,27 +20490,36 @@ var __vue_render__$6 = function () {
20479
20490
  var _vm = this;
20480
20491
  var _h = _vm.$createElement;
20481
20492
  var _c = _vm._self._c || _h;
20482
- return _vm.showSearchTitle
20483
- ? _c(
20484
- "h1",
20485
- {
20486
- staticClass: "lupa-result-page-title",
20487
- attrs: { "data-cy": "lupa-result-page-title" },
20488
- },
20489
- [
20490
- _vm._v("\n " + _vm._s(_vm.options.labels.searchResults)),
20491
- _vm.queryText
20492
- ? _c("span", [_vm._v("'" + _vm._s(_vm.queryText) + "'")])
20493
- : _vm._e(),
20494
- _vm._v(" "),
20495
- _vm.showProductCount
20496
- ? _c("span", { staticClass: "lupa-results-total-count" }, [
20497
- _vm._v("(" + _vm._s(_vm.totalItems) + ")"),
20498
- ])
20499
- : _vm._e(),
20500
- ]
20501
- )
20502
- : _vm._e()
20493
+ return _c("div", [
20494
+ _vm.showSearchTitle
20495
+ ? _c(
20496
+ "h1",
20497
+ {
20498
+ staticClass: "lupa-result-page-title",
20499
+ attrs: { "data-cy": "lupa-result-page-title" },
20500
+ },
20501
+ [
20502
+ _vm._v("\n " + _vm._s(_vm.options.labels.searchResults)),
20503
+ _vm.queryText
20504
+ ? _c("span", [_vm._v("'" + _vm._s(_vm.queryText) + "'")])
20505
+ : _vm._e(),
20506
+ _vm._v(" "),
20507
+ _vm.showProductCount
20508
+ ? _c("span", { staticClass: "lupa-results-total-count" }, [
20509
+ _vm._v("(" + _vm._s(_vm.totalItems) + ")"),
20510
+ ])
20511
+ : _vm._e(),
20512
+ ]
20513
+ )
20514
+ : _vm._e(),
20515
+ _vm._v(" "),
20516
+ _vm.descriptionTop
20517
+ ? _c("div", {
20518
+ staticClass: "lupa-result-page-description-top",
20519
+ domProps: { innerHTML: _vm._s(_vm.descriptionTop) },
20520
+ })
20521
+ : _vm._e(),
20522
+ ])
20503
20523
  };
20504
20524
  var __vue_staticRenderFns__$6 = [];
20505
20525
  __vue_render__$6._withStripped = true;
@@ -20699,7 +20719,12 @@ let SearchResults = class SearchResults extends Vue$1 {
20699
20719
  this.setDefaultLimit(this.defaultSearchResultPageSize);
20700
20720
  }
20701
20721
  handleParamsChange() {
20722
+ var _a, _b;
20702
20723
  this.handleUrlChange();
20724
+ (_b = (_a = this.options.callbacks) === null || _a === void 0 ? void 0 : _a.onUrlQueryChange) === null || _b === void 0 ? void 0 : _b.call(_a, {
20725
+ queryKey: this.options.queryKey,
20726
+ urlQueryString: this.searchString,
20727
+ });
20703
20728
  }
20704
20729
  handleUrlChange(params) {
20705
20730
  const searchParams = params || new URLSearchParams(window.location.search);
@@ -20,6 +20,7 @@ export declare type CategoryFilterOptions = {
20
20
  current?: {
21
21
  title?: string;
22
22
  description?: string;
23
+ descriptionTop?: string;
23
24
  };
24
25
  };
25
26
  export declare type ProductListOptions = SearchResultsOptions & {
@@ -9,6 +9,7 @@ export declare type SearchResultsOptions = SearchResultsProductOptions & SearchR
9
9
  classMap?: Record<string, string>;
10
10
  disallowEmptyQuery?: boolean;
11
11
  callbacks?: SearchResultEventCallbacks;
12
+ categories?: CategoryFilterOptions;
12
13
  };
13
14
  export declare type SearchTitlePosition = "page-top" | "search-results-top";
14
15
  export declare type SearchResultsDidYouMeanLabels = {
@@ -22,13 +23,15 @@ export declare type SearchResultsSimilarQueriesLabels = {
22
23
  };
23
24
  export declare type CallbackContext = {
24
25
  queryKey: string;
25
- hasResults: boolean;
26
+ hasResults?: boolean;
27
+ urlQueryString?: string;
26
28
  };
27
29
  export declare type SearchResultEventCallbacks = {
28
30
  onSearchResults?: (context: CallbackContext) => unknown;
29
31
  onAdditionalPanelResults?: (context: CallbackContext) => unknown;
30
32
  onCategoryFilterResults?: (context: CallbackContext) => unknown;
31
33
  onProductClick?: (context: CallbackContext) => unknown;
34
+ onUrlQueryChange?: (context: CallbackContext) => unknown;
32
35
  onMounted?: () => unknown;
33
36
  };
34
37
  export declare type SearchResultsOptionLabels = SearchResultsPaginationLabels & SearchResultsDidYouMeanLabels & SearchResultsSimilarQueriesLabels & {
@@ -9,5 +9,6 @@ export default class SearchResultsTitle extends Vue {
9
9
  get queryText(): string;
10
10
  get showProductCount(): boolean;
11
11
  get showSearchTitle(): boolean;
12
+ get descriptionTop(): string | undefined;
12
13
  getLabel(label: string): string;
13
14
  }
@@ -26,6 +26,8 @@ export default class TermFacet extends Vue {
26
26
  get facetMin(): number;
27
27
  get facetMax(): number;
28
28
  get statsSummary(): string;
29
+ get separator(): string;
30
+ get sliderInputFormat(): string | undefined;
29
31
  onMinValueChange(): void;
30
32
  onMaxValueChange(): void;
31
33
  handleInputChange(): void;