@sledge-app/react-instant-search 1.0.116 → 1.0.118

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.
@@ -663,6 +663,18 @@ const Checkbox = ({ id, name, value, required, label, checked, labelStyle = {},
663
663
  ] });
664
664
  };
665
665
  const Slider$1 = "";
666
+ const inputRangeFormatter = (value) => {
667
+ var _a, _b;
668
+ const cleanValue = (_b = (_a = String(value)) == null ? void 0 : _a.replace) == null ? void 0 : _b.call(_a, /[^0-9.]/g, "");
669
+ const numValue = parseFloat(cleanValue);
670
+ if (isNaN(numValue))
671
+ return value;
672
+ if (Number.isInteger(numValue))
673
+ return numValue.toString();
674
+ const [integerPart, decimalPart] = cleanValue.split(".");
675
+ const formattedDecimal = (decimalPart || "").slice(0, 2).padEnd(2, "0");
676
+ return `${integerPart}.${formattedDecimal}`;
677
+ };
666
678
  const Slider = (props) => {
667
679
  var _a, _b, _c;
668
680
  const {
@@ -682,8 +694,8 @@ const Slider = (props) => {
682
694
  minMaxClassName = "",
683
695
  minMaxTextClassName = ""
684
696
  } = props;
685
- const [inputRangeMin, setInputRangeMin] = React__default.useState(value == null ? void 0 : value[0]);
686
- const [inputRangeMax, setInputRangeMax] = React__default.useState((value == null ? void 0 : value[1]) || (value == null ? void 0 : value[0]));
697
+ const [inputRangeMin, setInputRangeMin] = React__default.useState(inputRangeFormatter(value == null ? void 0 : value[0]));
698
+ const [inputRangeMax, setInputRangeMax] = React__default.useState(inputRangeFormatter((value == null ? void 0 : value[1]) || (value == null ? void 0 : value[0])));
687
699
  const delayInputRangeRef = React__default.useRef(null);
688
700
  let content = (textValue == null ? void 0 : textValue.length) ? textValue : value;
689
701
  const hasMaxValue = (value == null ? void 0 : value.length) && (value == null ? void 0 : value[1]);
@@ -693,25 +705,51 @@ const Slider = (props) => {
693
705
  const isTypeIncludeInputRange = (_c = String(type)) == null ? void 0 : _c.includes("input_range");
694
706
  const handleChangeInputRange = ({ event, type: type2 }) => {
695
707
  var _a2;
696
- const valueInput = (_a2 = event == null ? void 0 : event.target) == null ? void 0 : _a2.value;
697
- const valueCommit = type2 === "min" ? [valueInput || 0, value == null ? void 0 : value[1]] : [value == null ? void 0 : value[0], valueInput || 0];
708
+ let valueInput = (_a2 = event == null ? void 0 : event.target) == null ? void 0 : _a2.value;
709
+ if (!Number(valueInput) && Number(valueInput) !== 0)
710
+ return;
711
+ let valueCommit = type2 === "min" ? [valueInput || 0, (value == null ? void 0 : value[1]) || (value == null ? void 0 : value[0])] : [value == null ? void 0 : value[0], valueInput || 0];
698
712
  if (type2 === "min") {
699
713
  setInputRangeMin(valueInput);
700
714
  } else {
701
715
  setInputRangeMax(valueInput);
702
716
  }
703
- setValueChange == null ? void 0 : setValueChange(valueCommit);
704
717
  if (delayInputRangeRef.current) {
705
718
  clearTimeout(delayInputRangeRef.current);
706
719
  }
707
720
  delayInputRangeRef.current = setTimeout(() => {
708
- setValueCommit == null ? void 0 : setValueCommit(valueCommit);
721
+ const lastValueMin = valueCommit == null ? void 0 : valueCommit[0];
722
+ const lastValueMax = (valueCommit == null ? void 0 : valueCommit[1]) || lastValueMin;
723
+ const valueInputRange = inputRangeFormatter(type2 === "min" ? lastValueMax : lastValueMin);
724
+ const valueCommitFiltered = [valueInputRange, valueInputRange];
725
+ valueInput = inputRangeFormatter(valueInput);
726
+ valueCommit = [inputRangeFormatter(valueCommit[0]), inputRangeFormatter(valueCommit[1])];
727
+ let filterValueMinOrMax = false;
728
+ if (type2 === "min") {
729
+ filterValueMinOrMax = Number(valueInput) > Number(lastValueMax);
730
+ } else {
731
+ filterValueMinOrMax = Number(valueInput) < Number(lastValueMin);
732
+ }
733
+ if (filterValueMinOrMax) {
734
+ setInputRangeMin(valueInputRange);
735
+ setInputRangeMax(valueInputRange);
736
+ setValueChange == null ? void 0 : setValueChange(valueCommitFiltered);
737
+ setValueCommit == null ? void 0 : setValueCommit(valueCommitFiltered);
738
+ } else {
739
+ if (type2 === "min") {
740
+ setInputRangeMin(valueInput);
741
+ } else {
742
+ setInputRangeMax(valueInput);
743
+ }
744
+ setValueChange == null ? void 0 : setValueChange(valueCommit);
745
+ setValueCommit == null ? void 0 : setValueCommit(valueCommit);
746
+ }
709
747
  }, 500);
710
748
  };
711
749
  useEffectOnChange(() => {
712
750
  if (isTypeIncludeInputRange && !(valueFilterSliderChange == null ? void 0 : valueFilterSliderChange.length)) {
713
- setInputRangeMin(value == null ? void 0 : value[0]);
714
- setInputRangeMax((value == null ? void 0 : value[1]) || (value == null ? void 0 : value[0]));
751
+ setInputRangeMin(inputRangeFormatter(value == null ? void 0 : value[0]));
752
+ setInputRangeMax(inputRangeFormatter((value == null ? void 0 : value[1]) || (value == null ? void 0 : value[0])));
715
753
  }
716
754
  }, [valueFilterSliderChange]);
717
755
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `sledge__slider-wrapper ${wrapperClassName}`, "data-slider-type": type, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(FormWrapper, { children: [
@@ -755,7 +793,13 @@ const Slider = (props) => {
755
793
  step,
756
794
  "aria-label": "Volume",
757
795
  onValueCommit: (valueCommit) => setValueCommit == null ? void 0 : setValueCommit(valueCommit),
758
- onValueChange: (valueChange) => setValueChange == null ? void 0 : setValueChange(valueChange),
796
+ onValueChange: (valueChange) => {
797
+ setValueChange == null ? void 0 : setValueChange(valueChange);
798
+ if (isTypeIncludeInputRange) {
799
+ setInputRangeMin(inputRangeFormatter(valueChange == null ? void 0 : valueChange[0]));
800
+ setInputRangeMax(inputRangeFormatter((valueChange == null ? void 0 : valueChange[1]) || (valueChange == null ? void 0 : valueChange[0])));
801
+ }
802
+ },
759
803
  children: [
760
804
  /* @__PURE__ */ jsxRuntimeExports.jsx($faa2e61a3361514f$export$13921ac0cc260818, { className: "sledge__SliderTrack", children: /* @__PURE__ */ jsxRuntimeExports.jsx($faa2e61a3361514f$export$9a58ef0d7ad3278c, { className: "sledge__SliderRange" }) }),
761
805
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -5301,6 +5345,11 @@ const FacetComponent = (props) => {
5301
5345
  }
5302
5346
  let defaultValueMin = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[0]) || (items == null ? void 0 : items.min);
5303
5347
  let defaultValueMax = (valueFilterSliderChange == null ? void 0 : valueFilterSliderChange[1]) || (items == null ? void 0 : items.max);
5348
+ const isTypeSliderWithInputRange = display.toLowerCase() === "slider_with_input_range";
5349
+ if (isTypeSliderWithInputRange) {
5350
+ defaultValueMin = (items == null ? void 0 : items.min) && Number(defaultValueMin) < Number(items == null ? void 0 : items.min) ? items == null ? void 0 : items.min : defaultValueMin;
5351
+ defaultValueMax = (items == null ? void 0 : items.max) && Number(defaultValueMax) > Number(items == null ? void 0 : items.max) ? items == null ? void 0 : items.max : defaultValueMax;
5352
+ }
5304
5353
  let contentDefaultValueMin = isPriceValue ? shopifyFormatMoney(defaultValueMin * 100, money_format) : isSalePercent ? `${defaultValueMin}%` : defaultValueMin;
5305
5354
  let contentDefaultValueMax = isPriceValue ? shopifyFormatMoney(defaultValueMax * 100, money_format) : isSalePercent ? `${defaultValueMax}%` : defaultValueMax;
5306
5355
  let contentFacetStatsMax = isPriceValue ? shopifyFormatMoney((items == null ? void 0 : items.max) * 100, money_format) : isSalePercent ? `${items == null ? void 0 : items.max}%` : items == null ? void 0 : items.max;