@janbox/storefront-ui 1.0.25 → 1.0.27

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.
@@ -18,4 +18,7 @@ export declare enum Booleanish {
18
18
  True = "true",
19
19
  False = "false"
20
20
  }
21
+ export declare enum LocaleNamespaces {
22
+ Translation = "ui__translation"
23
+ }
21
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,yCAAyC,CAAC;AAExE,eAAO,MAAM,+BAA+B,mBAAmB,CAAC;AAEhE,oBAAY,qBAAqB;IAC/B,YAAY,gBAAgB;IAC5B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;CAClC;AAED,oBAAY,WAAW;IACrB,aAAa,kBAAkB;CAChC;AAED,eAAO,MAAM,YAAY,oHAA0G,CAAC;AAIpI,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,KAAK,SAAgC,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,yCAAyC,CAAC;AAExE,eAAO,MAAM,+BAA+B,mBAAmB,CAAC;AAEhE,oBAAY,qBAAqB;IAC/B,YAAY,gBAAgB;IAC5B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;CAClC;AAED,oBAAY,WAAW;IACrB,aAAa,kBAAkB;CAChC;AAED,eAAO,MAAM,YAAY,oHAA0G,CAAC;AAIpI,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,eAAO,MAAM,KAAK,SAAgC,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,oBAAY,gBAAgB;IAC1B,WAAW,oBAAoB;CAChC"}
@@ -20,12 +20,17 @@ var Booleanish = /* @__PURE__ */ ((Booleanish2) => {
20
20
  Booleanish2["False"] = "false";
21
21
  return Booleanish2;
22
22
  })(Booleanish || {});
23
+ var LocaleNamespaces = /* @__PURE__ */ ((LocaleNamespaces2) => {
24
+ LocaleNamespaces2["Translation"] = "ui__translation";
25
+ return LocaleNamespaces2;
26
+ })(LocaleNamespaces || {});
23
27
  export {
24
28
  Booleanish,
25
29
  FALLBACK_SVG,
26
30
  HTMLClasses,
27
31
  HTMLDatasetAttributes,
28
32
  default2 as IMAGE_PLACEHOLDER,
33
+ LocaleNamespaces,
29
34
  TYPING_DEBOUNCE,
30
35
  USER_COMPONENT_LOCALE_NAMESPACE,
31
36
  isSSR
@@ -1,9 +1,8 @@
1
1
  import { HTMLAttributes, JSX, ReactNode } from 'react';
2
2
  import { Placement, UseFloatingOptions } from '@floating-ui/react';
3
- import { PropsWithCSS, ResponsiveDesign } from '@janbox/storefront-ui/types';
4
3
  import { InputProps } from '../input';
5
4
  import { InputMaskProps, InputMaskResponsiveProps } from '../input-mask/types';
6
- import { ShallowMerge } from '../../types';
5
+ import { PropsWithCSS, ResponsiveDesign, ShallowMerge } from '../../types';
7
6
  export type CascaderResponsiveProps = InputMaskResponsiveProps;
8
7
  export type CascaderOptionValue = string | number;
9
8
  export interface CascaderOption {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/cascader/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,qIAAqI;IACrI,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,qBAAsB,SAAQ,gBAAgB,CAAC,uBAAuB,CAAC;IAC/E,gCAAgC;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gDAAgD;IAChD,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAClD,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,wBAAwB;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,yIAAyI;IACzI,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACpE,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACxE,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC3C,iDAAiD;IACjD,6CAA6C;IAC7C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,uBAAuB;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,cAAc,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5F,iCAAiC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,eAAe,CAAC;CAC1D;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/cascader/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,qIAAqI;IACrI,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,qBAAsB,SAAQ,gBAAgB,CAAC,uBAAuB,CAAC;IAC/E,gCAAgC;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gDAAgD;IAChD,YAAY,CAAC,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAClD,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,wBAAwB;IACxB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,yIAAyI;IACzI,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACpE,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACxE,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC3C,iDAAiD;IACjD,6CAA6C;IAC7C,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,uBAAuB;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,cAAc,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5F,iCAAiC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,eAAe,CAAC;CAC1D;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { jsxs, jsx, Fragment } from "@emotion/react/jsx-runtime";
2
2
  import { isValidElement } from "react";
3
3
  import { useToggle } from "../../hooks/use-toggle/index.js";
4
4
  import { CheckboxFilterPanel } from "./checkbox-filter-panel.js";
5
- import { InputRangeFilterPanel } from "./input-range-filter-panel.js";
5
+ import { PriceRangeFilterPanel } from "./price-range-filter-panel.js";
6
6
  import { InputTextFilterPanel } from "./input-text-filter-panel.js";
7
7
  import { RadioFilterPanel } from "./radio-filter-panel.js";
8
8
  import ArrowDownIcon from "../../assets/svg/arrow-down.svg.js";
@@ -27,7 +27,7 @@ const FilterPanel = ({ label, defaultOpen = true, ...props }) => {
27
27
  /* @__PURE__ */ jsx(Collapse, { open, children: /* @__PURE__ */ jsxs(Fragment, { children: [
28
28
  props.fieldType === "checkbox" && /* @__PURE__ */ jsx(CheckboxFilterPanel, { ...props }),
29
29
  props.fieldType === "radio" && /* @__PURE__ */ jsx(RadioFilterPanel, { ...props }),
30
- props.fieldType === "input-range" && /* @__PURE__ */ jsx(InputRangeFilterPanel, { ...props }),
30
+ props.fieldType === "price-range" && /* @__PURE__ */ jsx(PriceRangeFilterPanel, { ...props }),
31
31
  props.fieldType === "input-text" && /* @__PURE__ */ jsx(InputTextFilterPanel, { ...props })
32
32
  ] }) })
33
33
  ] });
@@ -0,0 +1,3 @@
1
+ import { InputRangeFilterPanelProps } from './types';
2
+ export declare const PriceRangeFilterPanel: ({ value, queryParam, placeholder, priceTypes, onPriceChange, onPriceTypeChange, }: InputRangeFilterPanelProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=price-range-filter-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price-range-filter-panel.d.ts","sourceRoot":"","sources":["../../../src/lib/filter-panel/price-range-filter-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAWrD,eAAO,MAAM,qBAAqB,sFAO/B,0BAA0B,qDAyH5B,CAAC"}
@@ -0,0 +1,127 @@
1
+ import { jsxs, jsx } from "@emotion/react/jsx-runtime";
2
+ import { TYPING_DEBOUNCE } from "../../constants/index.js";
3
+ import { useQueryParams } from "../../hooks/use-query-params.js";
4
+ import { useId } from "react";
5
+ import "lodash-es";
6
+ import "../../theme/palette.js";
7
+ import { StringParamParser, NumberParamParser } from "../../utils/query-params.js";
8
+ import { RadioButton } from "../radio-button/radio-button.js";
9
+ import { InputRange } from "../input-range/input-range.js";
10
+ const PriceRangeFilterPanel = ({
11
+ value,
12
+ queryParam,
13
+ placeholder,
14
+ priceTypes = [],
15
+ onPriceChange,
16
+ onPriceTypeChange
17
+ }) => {
18
+ var _a, _b, _c, _d, _e, _f, _g;
19
+ const uniqueId = useId();
20
+ const { queryParams, setQueryParams } = useQueryParams({
21
+ ...((_a = queryParam == null ? void 0 : queryParam.from) == null ? void 0 : _a.key) ? {
22
+ [queryParam.from.key]: {
23
+ parser(value2) {
24
+ return new NumberParamParser(value2).parse();
25
+ }
26
+ }
27
+ } : {},
28
+ ...((_b = queryParam == null ? void 0 : queryParam.to) == null ? void 0 : _b.key) ? {
29
+ [queryParam.to.key]: {
30
+ parser(value2) {
31
+ return new NumberParamParser(value2).parse();
32
+ }
33
+ }
34
+ } : {},
35
+ ...((_c = queryParam == null ? void 0 : queryParam.priceType) == null ? void 0 : _c.key) ? {
36
+ [queryParam.priceType.key]: {
37
+ parser(value2) {
38
+ return new StringParamParser(value2).parse();
39
+ }
40
+ }
41
+ } : {}
42
+ });
43
+ const finalValue = {
44
+ from: (value == null ? void 0 : value.from) ?? (((_d = queryParam == null ? void 0 : queryParam.from) == null ? void 0 : _d.key) ? queryParams[queryParam.from.key] : void 0),
45
+ to: (value == null ? void 0 : value.to) ?? (((_e = queryParam == null ? void 0 : queryParam.to) == null ? void 0 : _e.key) ? queryParams[queryParam.to.key] : void 0),
46
+ priceType: (value == null ? void 0 : value.priceType) ?? (((_f = queryParam == null ? void 0 : queryParam.priceType) == null ? void 0 : _f.key) ? queryParams[queryParam.priceType.key] : void 0) ?? ((_g = priceTypes.find((priceType) => priceType.isDefault)) == null ? void 0 : _g.value)
47
+ };
48
+ const onInputRangeChange = (event, edge) => {
49
+ var _a2, _b2, _c2, _d2;
50
+ const valueAsNumber = event.target.valueAsNumber;
51
+ if (edge === "from" && ((_a2 = queryParam == null ? void 0 : queryParam.from) == null ? void 0 : _a2.key)) {
52
+ setQueryParams(
53
+ {
54
+ [queryParam.from.key]: isNaN(valueAsNumber) ? void 0 : valueAsNumber,
55
+ ...((_b2 = queryParam.priceType) == null ? void 0 : _b2.key) ? { [queryParam.priceType.key]: finalValue.priceType } : {}
56
+ },
57
+ {
58
+ preventScrollReset: true
59
+ }
60
+ );
61
+ }
62
+ if (edge === "to" && ((_c2 = queryParam == null ? void 0 : queryParam.to) == null ? void 0 : _c2.key)) {
63
+ setQueryParams(
64
+ {
65
+ [queryParam.to.key]: isNaN(valueAsNumber) ? void 0 : valueAsNumber,
66
+ ...((_d2 = queryParam.priceType) == null ? void 0 : _d2.key) ? { [queryParam.priceType.key]: finalValue.priceType } : {}
67
+ },
68
+ {
69
+ preventScrollReset: true
70
+ }
71
+ );
72
+ }
73
+ onPriceChange == null ? void 0 : onPriceChange(event, edge);
74
+ };
75
+ const onRadioInputChange = (event) => {
76
+ var _a2;
77
+ if ((_a2 = queryParam == null ? void 0 : queryParam.priceType) == null ? void 0 : _a2.key) {
78
+ setQueryParams(
79
+ {
80
+ [queryParam.priceType.key]: event.target.value
81
+ },
82
+ {
83
+ preventScrollReset: true
84
+ }
85
+ );
86
+ }
87
+ onPriceTypeChange == null ? void 0 : onPriceTypeChange(event);
88
+ };
89
+ return /* @__PURE__ */ jsxs("div", { css: { display: "flex", flexDirection: "column", gap: 8 }, children: [
90
+ /* @__PURE__ */ jsx("div", { css: { display: "flex", alignItems: "center", gap: 8, flexWrap: "wrap" }, children: priceTypes.map((priceType) => {
91
+ var _a2;
92
+ return /* @__PURE__ */ jsx(
93
+ RadioButton,
94
+ {
95
+ checked: ((_a2 = finalValue.priceType) == null ? void 0 : _a2.toString()) === priceType.value,
96
+ value: priceType.value,
97
+ onChange: onRadioInputChange,
98
+ name: `${uniqueId}-price-type`,
99
+ children: priceType.label
100
+ },
101
+ priceType.value
102
+ );
103
+ }) }),
104
+ /* @__PURE__ */ jsx(
105
+ InputRange,
106
+ {
107
+ xs: { size: "sm" },
108
+ onChange: onInputRangeChange,
109
+ inputs: [
110
+ {
111
+ debounce: TYPING_DEBOUNCE,
112
+ value: finalValue.from ?? "",
113
+ placeholder: placeholder == null ? void 0 : placeholder.from
114
+ },
115
+ {
116
+ debounce: TYPING_DEBOUNCE,
117
+ value: finalValue.to ?? "",
118
+ placeholder: placeholder == null ? void 0 : placeholder.to
119
+ }
120
+ ]
121
+ }
122
+ )
123
+ ] });
124
+ };
125
+ export {
126
+ PriceRangeFilterPanel
127
+ };
@@ -6,8 +6,8 @@ import { useQueryParams } from "../../hooks/use-query-params.js";
6
6
  import "../../theme/palette.js";
7
7
  import { matchSearch } from "../../utils/common.js";
8
8
  import { StringParamParser } from "../../utils/query-params.js";
9
- import { RadioButton } from "../radio-button/radio-button.js";
10
9
  import { Input } from "../input/input.js";
10
+ import { RadioButton } from "../radio-button/radio-button.js";
11
11
  const ROW_HEIGHT = 32;
12
12
  const DISPLAY_ROW_COUNT = 5;
13
13
  const RadioFilterPanel = ({
@@ -40,11 +40,8 @@ export type RadioFilterPanelProps = {
40
40
  fallbackValue?: string;
41
41
  onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
42
42
  };
43
- export type InputRangeFilterPanelProps<T = {
44
- from?: number;
45
- to?: number;
46
- }> = {
47
- fieldType: 'input-range';
43
+ export type InputRangeFilterPanelProps = {
44
+ fieldType: 'price-range';
48
45
  queryParam?: {
49
46
  from?: {
50
47
  key: string;
@@ -52,13 +49,26 @@ export type InputRangeFilterPanelProps<T = {
52
49
  to?: {
53
50
  key: string;
54
51
  };
52
+ priceType?: {
53
+ key: string;
54
+ };
55
+ };
56
+ value?: {
57
+ from?: number;
58
+ to?: number;
59
+ priceType?: string;
55
60
  };
56
- value?: T;
57
- onChange?: InputRangeProps['onChange'];
61
+ onPriceChange?: InputRangeProps['onChange'];
58
62
  placeholder?: {
59
63
  from?: string;
60
64
  to?: string;
61
65
  };
66
+ priceTypes?: {
67
+ label: ReactNode;
68
+ value: string;
69
+ isDefault?: boolean;
70
+ }[];
71
+ onPriceTypeChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
62
72
  };
63
73
  export type InputTextFilterPanelProps = {
64
74
  fieldType: 'input-text';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/filter-panel/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,CAAC,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,SAAS,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,EAAE,CAAC;IACJ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,EAAE,YAAY,CAC7B,UAAU,EACV;QACE,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CACF,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;KACnD,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,SAAS,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,EAAE,CAAC;IACJ,gBAAgB,CAAC,EAAE,YAAY,CAC7B,UAAU,EACV;QACE,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CACF,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;CAC7D,CAAC;AAEF,MAAM,MAAM,0BAA0B,CACpC,CAAC,GAAG;IACF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,IACC;IACF,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE;YACL,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;QACF,EAAE,CAAC,EAAE;YACH,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;KACH,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE;QACX,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH,GAAG,UAAU,CAAC;AAEf,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,CAAC,wBAAwB,GAAG,qBAAqB,GAAG,0BAA0B,GAAG,yBAAyB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/filter-panel/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "hello": "Hello"
2
+ "apply": "Apply"
3
3
  }
@@ -1 +1,3 @@
1
- {}
1
+ {
2
+ "apply": "Áp dụng"
3
+ }
package/dist/style.css CHANGED
@@ -757,23 +757,6 @@
757
757
  font-weight: 600;
758
758
  color: #849095;
759
759
  padding: 0.833em;
760
- }._input_range_1yrkm_1 {
761
- display: flex;
762
- align-items: center;
763
- border-width: 1px;
764
- border-style: solid;
765
- border-radius: 0.5rem;
766
- gap: 0.5rem;
767
- }
768
- ._input_range_1yrkm_1:has(input:focus) {
769
- border-color: var(--color-primary-600);
770
- box-shadow: 0 1px 3px 0 var(--color-primary-300), 0 1px 2px -1px var(--color-primary-300);
771
- }
772
- ._input_range_1yrkm_1:hover {
773
- border-color: var(--color-primary-300);
774
- }._input_number__input_2xvhv_1::-webkit-outer-spin-button, ._input_number__input_2xvhv_1::-webkit-inner-spin-button {
775
- -webkit-appearance: none;
776
- margin: 0;
777
760
  }._radio_button__container_10dls_1 {
778
761
  display: flex;
779
762
  width: fit-content;
@@ -850,6 +833,23 @@
850
833
 
851
834
  ._radio_button__input_10dls_10:disabled + ._radio_button__checkmark_10dls_21 {
852
835
  color: var(--color-neutral-300);
836
+ }._input_range_1yrkm_1 {
837
+ display: flex;
838
+ align-items: center;
839
+ border-width: 1px;
840
+ border-style: solid;
841
+ border-radius: 0.5rem;
842
+ gap: 0.5rem;
843
+ }
844
+ ._input_range_1yrkm_1:has(input:focus) {
845
+ border-color: var(--color-primary-600);
846
+ box-shadow: 0 1px 3px 0 var(--color-primary-300), 0 1px 2px -1px var(--color-primary-300);
847
+ }
848
+ ._input_range_1yrkm_1:hover {
849
+ border-color: var(--color-primary-300);
850
+ }._input_number__input_2xvhv_1::-webkit-outer-spin-button, ._input_number__input_2xvhv_1::-webkit-inner-spin-button {
851
+ -webkit-appearance: none;
852
+ margin: 0;
853
853
  }._switch__container_19zrg_1 {
854
854
  display: flex;
855
855
  align-items: center;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@janbox/storefront-ui",
3
- "version": "1.0.25",
3
+ "version": "1.0.27",
4
4
  "description": "Storefront UI component library for Janbox",
5
5
  "author": "Janbox",
6
6
  "keywords": [
@@ -1,3 +0,0 @@
1
- import { InputRangeFilterPanelProps } from './types';
2
- export declare const InputRangeFilterPanel: ({ value, queryParam, placeholder, onChange }: InputRangeFilterPanelProps) => import("@emotion/react/jsx-runtime").JSX.Element;
3
- //# sourceMappingURL=input-range-filter-panel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-range-filter-panel.d.ts","sourceRoot":"","sources":["../../../src/lib/filter-panel/input-range-filter-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AASrD,eAAO,MAAM,qBAAqB,iDAAkD,0BAA0B,qDAuE7G,CAAC"}
@@ -1,77 +0,0 @@
1
- import { jsx } from "@emotion/react/jsx-runtime";
2
- import { TYPING_DEBOUNCE } from "../../constants/index.js";
3
- import { useQueryParams } from "../../hooks/use-query-params.js";
4
- import "react";
5
- import "lodash-es";
6
- import "../../theme/palette.js";
7
- import { NumberParamParser } from "../../utils/query-params.js";
8
- import { InputRange } from "../input-range/input-range.js";
9
- const InputRangeFilterPanel = ({ value, queryParam, placeholder, onChange }) => {
10
- var _a, _b, _c, _d;
11
- const { queryParams, setQueryParams } = useQueryParams({
12
- ...((_a = queryParam == null ? void 0 : queryParam.from) == null ? void 0 : _a.key) ? {
13
- [queryParam.from.key]: {
14
- parser(value2) {
15
- return new NumberParamParser(value2).parse();
16
- }
17
- }
18
- } : {},
19
- ...((_b = queryParam == null ? void 0 : queryParam.to) == null ? void 0 : _b.key) ? {
20
- [queryParam.to.key]: {
21
- parser(value2) {
22
- return new NumberParamParser(value2).parse();
23
- }
24
- }
25
- } : {}
26
- });
27
- const finalValue = {
28
- from: (value == null ? void 0 : value.from) ?? (((_c = queryParam == null ? void 0 : queryParam.from) == null ? void 0 : _c.key) ? queryParams[queryParam.from.key] : void 0),
29
- to: (value == null ? void 0 : value.to) ?? (((_d = queryParam == null ? void 0 : queryParam.to) == null ? void 0 : _d.key) ? queryParams[queryParam.to.key] : void 0)
30
- };
31
- const onInputRangeChange = (event, edge) => {
32
- var _a2, _b2;
33
- const valueAsNumber = event.target.valueAsNumber;
34
- if (edge === "from" && ((_a2 = queryParam == null ? void 0 : queryParam.from) == null ? void 0 : _a2.key)) {
35
- setQueryParams(
36
- {
37
- [queryParam.from.key]: isNaN(valueAsNumber) ? void 0 : valueAsNumber
38
- },
39
- {
40
- preventScrollReset: true
41
- }
42
- );
43
- }
44
- if (edge === "to" && ((_b2 = queryParam == null ? void 0 : queryParam.to) == null ? void 0 : _b2.key)) {
45
- setQueryParams(
46
- {
47
- [queryParam.to.key]: isNaN(valueAsNumber) ? void 0 : valueAsNumber
48
- },
49
- {
50
- preventScrollReset: true
51
- }
52
- );
53
- }
54
- onChange == null ? void 0 : onChange(event, edge);
55
- };
56
- return /* @__PURE__ */ jsx(
57
- InputRange,
58
- {
59
- onChange: onInputRangeChange,
60
- inputs: [
61
- {
62
- debounce: TYPING_DEBOUNCE,
63
- value: finalValue.from ?? "",
64
- placeholder: placeholder == null ? void 0 : placeholder.from
65
- },
66
- {
67
- debounce: TYPING_DEBOUNCE,
68
- value: finalValue.to ?? "",
69
- placeholder: placeholder == null ? void 0 : placeholder.to
70
- }
71
- ]
72
- }
73
- );
74
- };
75
- export {
76
- InputRangeFilterPanel
77
- };