@getlupa/client 0.8.2 → 0.9.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.
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from "cypress";
2
+
3
+ export default defineConfig({
4
+ e2e: {
5
+ // We've imported your old cypress plugins here.
6
+ // You may want to clean this up later by importing these.
7
+ setupNodeEvents(on, config) {
8
+ return require("./cypress/plugins/index.js")(on, config);
9
+ },
10
+ },
11
+ chromeWebSecurity: false,
12
+ });
@@ -57,4 +57,5 @@ export default class SearchBox extends Vue {
57
57
  trackDocumentClick(doc: HighlightedDocInfo): void;
58
58
  trackSuggestionClick(suggestion?: string): void;
59
59
  resetValues(): void;
60
+ handleProductClick(): void;
60
61
  }
@@ -27,6 +27,8 @@ export default class TermFacet extends Vue {
27
27
  get facetMax(): number;
28
28
  get statsSummary(): string;
29
29
  get separator(): string;
30
+ get isIntegerRange(): boolean;
31
+ get interval(): 1 | 0.01;
30
32
  get sliderInputFormat(): string | undefined;
31
33
  onMinValueChange(): void;
32
34
  onMaxValueChange(): void;
@@ -10828,6 +10828,13 @@ const getProductKey = (index, product, idKey) => {
10828
10828
  }
10829
10829
  return index;
10830
10830
  };
10831
+ const normalizeFloat = (value) => {
10832
+ var _a;
10833
+ if (!value) {
10834
+ return 0;
10835
+ }
10836
+ return +((_a = value === null || value === void 0 ? void 0 : value.replace(/[^0-9,.]/g, "")) === null || _a === void 0 ? void 0 : _a.replace(",", "."));
10837
+ };
10831
10838
  const escapeHtml = (value) => {
10832
10839
  if (!value) {
10833
10840
  return "";
@@ -12264,6 +12271,7 @@ let SearchBoxProduct = class SearchBoxProduct extends Vue$1 {
12264
12271
  if (!this.link) {
12265
12272
  return;
12266
12273
  }
12274
+ this.$emit("product-click");
12267
12275
  handleRoutingEvent(this.link, event, this.boxRoutingBehavior === "event");
12268
12276
  }
12269
12277
  };
@@ -12440,6 +12448,11 @@ var __vue_render__$$ = function () {
12440
12448
  highlighted: index === _vm.highlightedIndex,
12441
12449
  inputValue: _vm.inputValue,
12442
12450
  },
12451
+ on: {
12452
+ "product-click": function ($event) {
12453
+ return _vm.$emit("product-click")
12454
+ },
12455
+ },
12443
12456
  })
12444
12457
  }),
12445
12458
  1
@@ -12558,6 +12571,11 @@ var __vue_render__$_ = function () {
12558
12571
  labels: _vm.labels,
12559
12572
  inputValue: _vm.inputValue,
12560
12573
  },
12574
+ on: {
12575
+ "product-click": function ($event) {
12576
+ return _vm.$emit("product-click")
12577
+ },
12578
+ },
12561
12579
  })
12562
12580
  };
12563
12581
  var __vue_staticRenderFns__$_ = [];
@@ -12566,7 +12584,7 @@ __vue_render__$_._withStripped = true;
12566
12584
  /* style */
12567
12585
  const __vue_inject_styles__$_ = function (inject) {
12568
12586
  if (!inject) return
12569
- inject("data-v-45bb68b4_0", { source: "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", map: undefined, media: undefined });
12587
+ inject("data-v-58b6ab21_0", { source: "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", map: undefined, media: undefined });
12570
12588
 
12571
12589
  };
12572
12590
  /* scoped */
@@ -13437,6 +13455,9 @@ var __vue_render__$T = function () {
13437
13455
  itemSelect: function (item) {
13438
13456
  return _vm.$emit("itemSelect", item)
13439
13457
  },
13458
+ "product-click": function ($event) {
13459
+ return _vm.$emit("product-click")
13460
+ },
13440
13461
  },
13441
13462
  })
13442
13463
  : _vm._e(),
@@ -13486,7 +13507,7 @@ __vue_render__$T._withStripped = true;
13486
13507
  /* style */
13487
13508
  const __vue_inject_styles__$T = function (inject) {
13488
13509
  if (!inject) return
13489
- inject("data-v-0b92689b_0", { source: "#lupa-search-box-panel {\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n}\n.lupa-more-results {\n text-align: center;\n}", map: undefined, media: undefined });
13510
+ inject("data-v-d48b96f0_0", { source: "#lupa-search-box-panel {\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n}\n.lupa-more-results {\n text-align: center;\n}", map: undefined, media: undefined });
13490
13511
 
13491
13512
  };
13492
13513
  /* scoped */
@@ -13734,6 +13755,9 @@ let SearchBox = class SearchBox extends Vue$1 {
13734
13755
  this.inputValue = "";
13735
13756
  this.suggestedValue = defaultSuggestedValue;
13736
13757
  }
13758
+ handleProductClick() {
13759
+ this.opened = false;
13760
+ }
13737
13761
  };
13738
13762
  __decorate([
13739
13763
  Prop()
@@ -13803,6 +13827,7 @@ var __vue_render__$S = function () {
13803
13827
  fetched: _vm.handleItemsFetch,
13804
13828
  itemSelect: _vm.handleItemSelect,
13805
13829
  "go-to-results": _vm.handleSearch,
13830
+ "product-click": _vm.handleProductClick,
13806
13831
  },
13807
13832
  })
13808
13833
  : _vm._e(),
@@ -13817,7 +13842,7 @@ __vue_render__$S._withStripped = true;
13817
13842
  /* style */
13818
13843
  const __vue_inject_styles__$S = function (inject) {
13819
13844
  if (!inject) return
13820
- inject("data-v-73ed57d5_0", { source: "\n#lupa-search-box {\n width: 100%;\n}\n.lupa-search-box-wrapper {\n position: relative;\n}\n", map: undefined, media: undefined });
13845
+ inject("data-v-7c20b12e_0", { source: "\n#lupa-search-box {\n width: 100%;\n}\n.lupa-search-box-wrapper {\n position: relative;\n}\n", map: undefined, media: undefined });
13821
13846
 
13822
13847
  };
13823
13848
  /* scoped */
@@ -14834,7 +14859,7 @@ let TermFacet = class TermFacet extends Vue$1 {
14834
14859
  : `${this.sliderRange[0]}`;
14835
14860
  }
14836
14861
  set fromValue(stringValue) {
14837
- let value = +stringValue;
14862
+ let value = normalizeFloat(stringValue);
14838
14863
  if (value < this.facetMin) {
14839
14864
  value = this.facetMin;
14840
14865
  }
@@ -14850,7 +14875,7 @@ let TermFacet = class TermFacet extends Vue$1 {
14850
14875
  : `${this.sliderRange[1]}`;
14851
14876
  }
14852
14877
  set toValue(stringValue) {
14853
- let value = +stringValue;
14878
+ let value = normalizeFloat(stringValue);
14854
14879
  if (value > this.facetMax) {
14855
14880
  value = this.facetMax;
14856
14881
  }
@@ -14912,6 +14937,13 @@ let TermFacet = class TermFacet extends Vue$1 {
14912
14937
  var _a, _b, _c;
14913
14938
  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 : ",";
14914
14939
  }
14940
+ get isIntegerRange() {
14941
+ return (Number.isInteger(this.currentMinValue) &&
14942
+ Number.isInteger(this.currentMaxValue));
14943
+ }
14944
+ get interval() {
14945
+ return this.isIntegerRange ? 1 : 0.01;
14946
+ }
14915
14947
  get sliderInputFormat() {
14916
14948
  return this.isPrice ? `[0-9]+([${this.separator}][0-9]{1,2})?` : undefined;
14917
14949
  }
@@ -15006,6 +15038,7 @@ var __vue_render__$N = function () {
15006
15038
  ],
15007
15039
  attrs: {
15008
15040
  type: "text",
15041
+ maxlength: "8",
15009
15042
  max: _vm.facetMax,
15010
15043
  min: _vm.facetMin,
15011
15044
  pattern: _vm.sliderInputFormat,
@@ -15046,6 +15079,7 @@ var __vue_render__$N = function () {
15046
15079
  ],
15047
15080
  attrs: {
15048
15081
  type: "text",
15082
+ maxlength: "8",
15049
15083
  max: _vm.facetMax,
15050
15084
  min: _vm.facetMin,
15051
15085
  pattern: _vm.sliderInputFormat,
@@ -15079,6 +15113,7 @@ var __vue_render__$N = function () {
15079
15113
  lazy: true,
15080
15114
  silent: true,
15081
15115
  duration: 0.1,
15116
+ interval: _vm.interval,
15082
15117
  },
15083
15118
  on: {
15084
15119
  change: _vm.handleChange,
@@ -5,4 +5,5 @@ export declare const addParamsToLabel: (label: string, ...params: unknown[]) =>
5
5
  export declare const getRandomString: (length: number) => string;
6
6
  export declare const getDisplayValue: (value?: string | number | undefined) => string;
7
7
  export declare const getProductKey: (index: string, product: Document, idKey: string | undefined) => string;
8
+ export declare const normalizeFloat: (value?: string | undefined) => number;
8
9
  export declare const escapeHtml: (value?: string | undefined) => string;
@@ -57,4 +57,5 @@ export default class SearchBox extends Vue {
57
57
  trackDocumentClick(doc: HighlightedDocInfo): void;
58
58
  trackSuggestionClick(suggestion?: string): void;
59
59
  resetValues(): void;
60
+ handleProductClick(): void;
60
61
  }
@@ -27,6 +27,8 @@ export default class TermFacet extends Vue {
27
27
  get facetMax(): number;
28
28
  get statsSummary(): string;
29
29
  get separator(): string;
30
+ get isIntegerRange(): boolean;
31
+ get interval(): 1 | 0.01;
30
32
  get sliderInputFormat(): string | undefined;
31
33
  onMinValueChange(): void;
32
34
  onMaxValueChange(): void;
@@ -10824,6 +10824,13 @@ const getProductKey = (index, product, idKey) => {
10824
10824
  }
10825
10825
  return index;
10826
10826
  };
10827
+ const normalizeFloat = (value) => {
10828
+ var _a;
10829
+ if (!value) {
10830
+ return 0;
10831
+ }
10832
+ return +((_a = value === null || value === void 0 ? void 0 : value.replace(/[^0-9,.]/g, "")) === null || _a === void 0 ? void 0 : _a.replace(",", "."));
10833
+ };
10827
10834
  const escapeHtml = (value) => {
10828
10835
  if (!value) {
10829
10836
  return "";
@@ -12260,6 +12267,7 @@ let SearchBoxProduct = class SearchBoxProduct extends Vue$1 {
12260
12267
  if (!this.link) {
12261
12268
  return;
12262
12269
  }
12270
+ this.$emit("product-click");
12263
12271
  handleRoutingEvent(this.link, event, this.boxRoutingBehavior === "event");
12264
12272
  }
12265
12273
  };
@@ -12436,6 +12444,11 @@ var __vue_render__$$ = function () {
12436
12444
  highlighted: index === _vm.highlightedIndex,
12437
12445
  inputValue: _vm.inputValue,
12438
12446
  },
12447
+ on: {
12448
+ "product-click": function ($event) {
12449
+ return _vm.$emit("product-click")
12450
+ },
12451
+ },
12439
12452
  })
12440
12453
  }),
12441
12454
  1
@@ -12554,6 +12567,11 @@ var __vue_render__$_ = function () {
12554
12567
  labels: _vm.labels,
12555
12568
  inputValue: _vm.inputValue,
12556
12569
  },
12570
+ on: {
12571
+ "product-click": function ($event) {
12572
+ return _vm.$emit("product-click")
12573
+ },
12574
+ },
12557
12575
  })
12558
12576
  };
12559
12577
  var __vue_staticRenderFns__$_ = [];
@@ -12562,7 +12580,7 @@ __vue_render__$_._withStripped = true;
12562
12580
  /* style */
12563
12581
  const __vue_inject_styles__$_ = function (inject) {
12564
12582
  if (!inject) return
12565
- inject("data-v-45bb68b4_0", { source: "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", map: undefined, media: undefined });
12583
+ inject("data-v-58b6ab21_0", { source: "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", map: undefined, media: undefined });
12566
12584
 
12567
12585
  };
12568
12586
  /* scoped */
@@ -13433,6 +13451,9 @@ var __vue_render__$T = function () {
13433
13451
  itemSelect: function (item) {
13434
13452
  return _vm.$emit("itemSelect", item)
13435
13453
  },
13454
+ "product-click": function ($event) {
13455
+ return _vm.$emit("product-click")
13456
+ },
13436
13457
  },
13437
13458
  })
13438
13459
  : _vm._e(),
@@ -13482,7 +13503,7 @@ __vue_render__$T._withStripped = true;
13482
13503
  /* style */
13483
13504
  const __vue_inject_styles__$T = function (inject) {
13484
13505
  if (!inject) return
13485
- inject("data-v-0b92689b_0", { source: "#lupa-search-box-panel {\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n}\n.lupa-more-results {\n text-align: center;\n}", map: undefined, media: undefined });
13506
+ inject("data-v-d48b96f0_0", { source: "#lupa-search-box-panel {\n display: flex;\n justify-content: space-between;\n flex-direction: column;\n}\n.lupa-more-results {\n text-align: center;\n}", map: undefined, media: undefined });
13486
13507
 
13487
13508
  };
13488
13509
  /* scoped */
@@ -13730,6 +13751,9 @@ let SearchBox = class SearchBox extends Vue$1 {
13730
13751
  this.inputValue = "";
13731
13752
  this.suggestedValue = defaultSuggestedValue;
13732
13753
  }
13754
+ handleProductClick() {
13755
+ this.opened = false;
13756
+ }
13733
13757
  };
13734
13758
  __decorate([
13735
13759
  Prop()
@@ -13799,6 +13823,7 @@ var __vue_render__$S = function () {
13799
13823
  fetched: _vm.handleItemsFetch,
13800
13824
  itemSelect: _vm.handleItemSelect,
13801
13825
  "go-to-results": _vm.handleSearch,
13826
+ "product-click": _vm.handleProductClick,
13802
13827
  },
13803
13828
  })
13804
13829
  : _vm._e(),
@@ -13813,7 +13838,7 @@ __vue_render__$S._withStripped = true;
13813
13838
  /* style */
13814
13839
  const __vue_inject_styles__$S = function (inject) {
13815
13840
  if (!inject) return
13816
- inject("data-v-73ed57d5_0", { source: "\n#lupa-search-box {\n width: 100%;\n}\n.lupa-search-box-wrapper {\n position: relative;\n}\n", map: undefined, media: undefined });
13841
+ inject("data-v-7c20b12e_0", { source: "\n#lupa-search-box {\n width: 100%;\n}\n.lupa-search-box-wrapper {\n position: relative;\n}\n", map: undefined, media: undefined });
13817
13842
 
13818
13843
  };
13819
13844
  /* scoped */
@@ -14830,7 +14855,7 @@ let TermFacet = class TermFacet extends Vue$1 {
14830
14855
  : `${this.sliderRange[0]}`;
14831
14856
  }
14832
14857
  set fromValue(stringValue) {
14833
- let value = +stringValue;
14858
+ let value = normalizeFloat(stringValue);
14834
14859
  if (value < this.facetMin) {
14835
14860
  value = this.facetMin;
14836
14861
  }
@@ -14846,7 +14871,7 @@ let TermFacet = class TermFacet extends Vue$1 {
14846
14871
  : `${this.sliderRange[1]}`;
14847
14872
  }
14848
14873
  set toValue(stringValue) {
14849
- let value = +stringValue;
14874
+ let value = normalizeFloat(stringValue);
14850
14875
  if (value > this.facetMax) {
14851
14876
  value = this.facetMax;
14852
14877
  }
@@ -14908,6 +14933,13 @@ let TermFacet = class TermFacet extends Vue$1 {
14908
14933
  var _a, _b, _c;
14909
14934
  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 : ",";
14910
14935
  }
14936
+ get isIntegerRange() {
14937
+ return (Number.isInteger(this.currentMinValue) &&
14938
+ Number.isInteger(this.currentMaxValue));
14939
+ }
14940
+ get interval() {
14941
+ return this.isIntegerRange ? 1 : 0.01;
14942
+ }
14911
14943
  get sliderInputFormat() {
14912
14944
  return this.isPrice ? `[0-9]+([${this.separator}][0-9]{1,2})?` : undefined;
14913
14945
  }
@@ -15002,6 +15034,7 @@ var __vue_render__$N = function () {
15002
15034
  ],
15003
15035
  attrs: {
15004
15036
  type: "text",
15037
+ maxlength: "8",
15005
15038
  max: _vm.facetMax,
15006
15039
  min: _vm.facetMin,
15007
15040
  pattern: _vm.sliderInputFormat,
@@ -15042,6 +15075,7 @@ var __vue_render__$N = function () {
15042
15075
  ],
15043
15076
  attrs: {
15044
15077
  type: "text",
15078
+ maxlength: "8",
15045
15079
  max: _vm.facetMax,
15046
15080
  min: _vm.facetMin,
15047
15081
  pattern: _vm.sliderInputFormat,
@@ -15075,6 +15109,7 @@ var __vue_render__$N = function () {
15075
15109
  lazy: true,
15076
15110
  silent: true,
15077
15111
  duration: 0.1,
15112
+ interval: _vm.interval,
15078
15113
  },
15079
15114
  on: {
15080
15115
  change: _vm.handleChange,
@@ -5,4 +5,5 @@ export declare const addParamsToLabel: (label: string, ...params: unknown[]) =>
5
5
  export declare const getRandomString: (length: number) => string;
6
6
  export declare const getDisplayValue: (value?: string | number | undefined) => string;
7
7
  export declare const getProductKey: (index: string, product: Document, idKey: string | undefined) => string;
8
+ export declare const normalizeFloat: (value?: string | undefined) => number;
8
9
  export declare const escapeHtml: (value?: string | undefined) => string;
@@ -57,4 +57,5 @@ export default class SearchBox extends Vue {
57
57
  trackDocumentClick(doc: HighlightedDocInfo): void;
58
58
  trackSuggestionClick(suggestion?: string): void;
59
59
  resetValues(): void;
60
+ handleProductClick(): void;
60
61
  }
@@ -27,6 +27,8 @@ export default class TermFacet extends Vue {
27
27
  get facetMax(): number;
28
28
  get statsSummary(): string;
29
29
  get separator(): string;
30
+ get isIntegerRange(): boolean;
31
+ get interval(): 1 | 0.01;
30
32
  get sliderInputFormat(): string | undefined;
31
33
  onMinValueChange(): void;
32
34
  onMaxValueChange(): void;