@veeqo/transfigure 0.0.1 → 0.0.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.
Files changed (150) hide show
  1. package/README.md +2 -53
  2. package/dist/BusinessLogic/mocks.d.ts +3 -3
  3. package/dist/BusinessLogic/types.d.ts +3 -2
  4. package/dist/components/Filters/ActiveFilters/Categories/index.d.ts +2 -0
  5. package/dist/components/Filters/ActiveFilters/Variants/ActiveAsyncCheckboxFilter/ActiveAsyncCheckboxFilter.d.ts +8 -0
  6. package/dist/components/Filters/ActiveFilters/Variants/ActiveAsyncCheckboxFilter/index.d.ts +1 -0
  7. package/dist/components/Filters/ActiveFilters/Variants/ActiveAsyncRadioFilter/ActiveAsyncRadioFilter.d.ts +8 -0
  8. package/dist/components/Filters/ActiveFilters/Variants/ActiveAsyncRadioFilter/index.d.ts +1 -0
  9. package/dist/components/Filters/{Fields → ActiveFilters/Variants/ActiveFilterNumberRangeTag}/FilterNumberRangeFilter/FilterNumberRangeFilter.d.ts +1 -1
  10. package/dist/components/Filters/ActiveFilters/Variants/index.d.ts +5 -0
  11. package/dist/components/Filters/ActiveFilters/index.d.ts +2 -3
  12. package/dist/components/Filters/Fields/index.d.ts +0 -6
  13. package/dist/components/Filters/{Fields/FilterGroup → FilterGroup}/FilterGroup.d.ts +1 -1
  14. package/dist/components/Filters/FilterGroup/index.d.ts +1 -0
  15. package/dist/components/Filters/index.d.ts +1 -0
  16. package/dist/components/TableControls/TableControls.d.ts +1 -0
  17. package/dist/components/TableControls/index.d.ts +1 -0
  18. package/dist/index.cjs +1 -1
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.js +75 -75
  21. package/dist/index10.js +3 -12
  22. package/dist/index11.cjs +1 -1
  23. package/dist/index11.js +19 -19
  24. package/dist/index12.cjs +1 -1
  25. package/dist/index12.js +42 -21
  26. package/dist/index13.cjs +1 -1
  27. package/dist/index13.js +23 -38
  28. package/dist/index14.cjs +1 -1
  29. package/dist/index14.js +39 -37
  30. package/dist/index15.cjs +1 -1
  31. package/dist/index15.js +36 -54
  32. package/dist/index16.cjs +1 -1
  33. package/dist/index16.js +32 -46
  34. package/dist/index17.cjs +1 -1
  35. package/dist/index17.js +50 -42
  36. package/dist/index18.cjs +1 -1
  37. package/dist/index18.js +39 -50
  38. package/dist/index19.cjs +1 -1
  39. package/dist/index19.js +59 -37
  40. package/dist/index20.cjs +1 -1
  41. package/dist/index20.js +53 -37
  42. package/dist/index21.cjs +1 -1
  43. package/dist/index21.js +45 -53
  44. package/dist/index22.cjs +1 -1
  45. package/dist/index22.js +43 -33
  46. package/dist/index23.cjs +1 -1
  47. package/dist/index23.js +56 -57
  48. package/dist/index24.cjs +1 -1
  49. package/dist/index24.js +57 -18
  50. package/dist/index25.cjs +1 -1
  51. package/dist/index25.js +38 -31
  52. package/dist/index26.cjs +1 -1
  53. package/dist/index26.js +55 -39
  54. package/dist/index27.cjs +1 -1
  55. package/dist/index27.js +52 -34
  56. package/dist/index28.cjs +1 -1
  57. package/dist/index28.js +81 -47
  58. package/dist/index29.cjs +1 -1
  59. package/dist/index29.js +36 -107
  60. package/dist/index3.js +1 -3
  61. package/dist/index30.cjs +1 -1
  62. package/dist/index30.js +31 -31
  63. package/dist/index31.cjs +1 -1
  64. package/dist/index31.js +10 -30
  65. package/dist/index32.cjs +1 -1
  66. package/dist/index32.js +40 -14
  67. package/dist/index33.js +49 -48
  68. package/dist/index34.js +12 -11
  69. package/dist/index35.js +104 -39
  70. package/dist/index36.cjs +1 -1
  71. package/dist/index36.js +47 -24
  72. package/dist/index37.cjs +1 -1
  73. package/dist/index37.js +43 -22
  74. package/dist/index38.cjs +1 -1
  75. package/dist/index38.js +22 -27
  76. package/dist/index39.cjs +1 -1
  77. package/dist/index39.js +67 -26
  78. package/dist/index4.js +1 -8
  79. package/dist/index40.js +71 -21
  80. package/dist/index41.cjs +1 -1
  81. package/dist/index41.js +31 -18
  82. package/dist/index42.js +2 -8
  83. package/dist/index43.js +13 -1
  84. package/dist/index45.js +14 -12
  85. package/dist/index48.js +1 -3
  86. package/dist/index5.js +2 -9
  87. package/dist/index50.js +3 -12
  88. package/dist/index51.js +8 -42
  89. package/dist/index52.js +20 -35
  90. package/dist/index53.js +16 -25
  91. package/dist/index54.js +18 -27
  92. package/dist/index55.js +31 -36
  93. package/dist/index57.js +22 -32
  94. package/dist/index58.js +14 -15
  95. package/dist/index59.js +2 -10
  96. package/dist/index6.js +8 -40
  97. package/dist/index60.cjs +1 -1
  98. package/dist/index60.js +226 -209
  99. package/dist/index61.js +5 -9
  100. package/dist/index62.js +3 -9
  101. package/dist/index65.js +1 -6
  102. package/dist/index66.js +1 -4
  103. package/dist/index67.js +1 -3
  104. package/dist/index69.js +28 -23
  105. package/dist/index75.cjs +1 -1
  106. package/dist/index75.js +2 -4
  107. package/dist/index76.js +26 -16
  108. package/dist/index77.cjs +1 -19
  109. package/dist/index77.js +14 -29
  110. package/dist/index78.cjs +19 -1
  111. package/dist/index78.js +24 -16
  112. package/dist/index79.cjs +1 -1
  113. package/dist/index79.js +22 -9
  114. package/dist/index80.cjs +78 -10
  115. package/dist/index80.js +92 -13
  116. package/dist/index81.cjs +10 -78
  117. package/dist/index81.js +13 -94
  118. package/dist/index83.cjs +1 -80
  119. package/dist/index83.js +35 -96
  120. package/dist/index84.cjs +1 -1
  121. package/dist/index84.js +62 -35
  122. package/dist/index85.js +1 -3
  123. package/dist/index86.cjs +80 -7
  124. package/dist/index86.js +93 -10
  125. package/dist/index87.cjs +7 -0
  126. package/dist/index87.js +12 -0
  127. package/dist/index9.cjs +1 -1
  128. package/dist/index9.js +99 -84
  129. package/dist/mobx/Filters/Filters.d.ts +5 -0
  130. package/dist/mocks/internal/mockUseStores/index.d.ts +1 -0
  131. package/dist/mocks/internal/mockUseStores/mockUseStores.d.ts +6 -0
  132. package/dist/types.d.ts +1 -1
  133. package/package.json +4 -5
  134. package/dist/components/Filters/Fields/AsyncInlineCheckboxFilter/AsyncInlineCheckboxFilter.d.ts +0 -8
  135. package/dist/components/Filters/Fields/AsyncInlineCheckboxFilter/index.d.ts +0 -1
  136. package/dist/components/Filters/Fields/AsyncInlineRadioFilter/AsyncInlineRadioFilter.d.ts +0 -8
  137. package/dist/components/Filters/Fields/AsyncInlineRadioFilter/index.d.ts +0 -1
  138. package/dist/components/Filters/Fields/FilterGroup/index.d.ts +0 -1
  139. package/dist/components/Table/Table.d.ts +0 -1
  140. /package/dist/components/Filters/{Fields → ActiveFilters/Categories}/FilterArrayField/FilterArrayField.d.ts +0 -0
  141. /package/dist/components/Filters/{Fields → ActiveFilters/Categories}/FilterArrayField/index.d.ts +0 -0
  142. /package/dist/components/Filters/{Fields → ActiveFilters/Categories}/FilterField/FilterField.d.ts +0 -0
  143. /package/dist/components/Filters/{Fields → ActiveFilters/Categories}/FilterField/index.d.ts +0 -0
  144. /package/dist/components/Filters/ActiveFilters/{ActiveFilterArrayTag → Variants/ActiveFilterArrayTag}/ActiveFilterArrayTag.d.ts +0 -0
  145. /package/dist/components/Filters/ActiveFilters/{ActiveFilterArrayTag → Variants/ActiveFilterArrayTag}/index.d.ts +0 -0
  146. /package/dist/components/Filters/ActiveFilters/{ActiveFilterDateRangeTag → Variants/ActiveFilterDateRangeTag}/ActiveFilterDateRangeTag.d.ts +0 -0
  147. /package/dist/components/Filters/ActiveFilters/{ActiveFilterDateRangeTag → Variants/ActiveFilterDateRangeTag}/index.d.ts +0 -0
  148. /package/dist/components/Filters/ActiveFilters/{ActiveFilterNumberRangeTag → Variants/ActiveFilterNumberRangeTag}/ActiveFilterNumberRangeTag.d.ts +0 -0
  149. /package/dist/components/Filters/{Fields → ActiveFilters/Variants/ActiveFilterNumberRangeTag}/FilterNumberRangeFilter/index.d.ts +0 -0
  150. /package/dist/components/Filters/ActiveFilters/{ActiveFilterNumberRangeTag → Variants/ActiveFilterNumberRangeTag}/index.d.ts +0 -0
package/dist/index24.js CHANGED
@@ -1,21 +1,60 @@
1
- import { jsx as t } from "react/jsx-runtime";
2
- import { observer as n } from "mobx-react";
3
- import { ChoiceList as p } from "@veeqo/ui";
4
- import { FilterChoiceValue as s } from "./index44.js";
5
- import { AsyncInlineCheckboxFilter as c } from "./index19.js";
6
- const F = n(({
7
- data: r,
8
- editedValue: e,
9
- setEditedValue: o
10
- }) => {
11
- var i;
12
- switch (r.filterType) {
13
- case s.CHECKBOX:
14
- return r.fetchAsyncFilterOptions ? /* @__PURE__ */ t(c, { field: r, setEditedValue: o, editedValue: e }) : /* @__PURE__ */ t(p, { allowMultiple: !0, title: r.label, options: (i = r.options) != null && i.length ? r.options : [], selected: e, onChange: (l) => o(l) });
15
- default:
16
- return null;
17
- }
1
+ import { jsxs as l, jsx as s } from "react/jsx-runtime";
2
+ import { useMemo as C, useState as O, useCallback as x } from "react";
3
+ import { observer as V } from "mobx-react";
4
+ import k from "lodash/debounce";
5
+ import { Stack as E, Button as R, ChoiceList as v, Skeleton as B, theme as I, Text as T } from "@veeqo/ui";
6
+ import _ from "swr/immutable";
7
+ import { getAsyncOptions as j } from "./index66.js";
8
+ import { getFetcherFunction as w } from "./index67.js";
9
+ import { useBusinessLogic as M } from "./index7.js";
10
+ import { useStores as N } from "./index56.js";
11
+ const K = V(({ field: t }) => {
12
+ var c, a;
13
+ const { FILTERS_DEBOUCE_INTERVAL_MS: m } = M(), h = C(() => {
14
+ var e;
15
+ return w({ fetcherName: (e = t.fetchAsyncFilterOptions) == null ? void 0 : e.fetcher });
16
+ }, [(c = t.fetchAsyncFilterOptions) == null ? void 0 : c.fetcher]), { isLoading: u, isValidating: p, data: f, error: g } = _(
17
+ (a = t.fetchAsyncFilterOptions) == null ? void 0 : a.URL,
18
+ h
19
+ ), n = u || p, {
20
+ Filters: { setFilter: o, filters: d }
21
+ } = N(), F = d.get(t.id), [b, i] = O(F), S = x(
22
+ k((e, r) => {
23
+ o(e, r);
24
+ }, m),
25
+ [o]
26
+ ), L = (e) => {
27
+ const r = `${e[0]}`;
28
+ i(r), S(t.id, r);
29
+ }, y = () => {
30
+ i(""), o(t.id, "");
31
+ }, A = j({ data: f, config: t.fetchAsyncFilterOptions });
32
+ return /* @__PURE__ */ l(E, { spacing: "xs", alignX: "stretch", children: [
33
+ /* @__PURE__ */ s(R, { variant: "link", onClick: y, children: "Clear" }),
34
+ /* @__PURE__ */ s(
35
+ v,
36
+ {
37
+ title: t.label,
38
+ options: A,
39
+ selected: [b],
40
+ onChange: (e) => L(e)
41
+ }
42
+ ),
43
+ n && /* @__PURE__ */ s(
44
+ B,
45
+ {
46
+ width: "200px",
47
+ height: I.sizes[5],
48
+ "aria-busy": !0,
49
+ "aria-label": `Loading ${t.label} filters`
50
+ }
51
+ ),
52
+ !n && g && /* @__PURE__ */ l(T, { variant: "errorSmall", children: [
53
+ "Error: failed to load filter for ",
54
+ t.label
55
+ ] })
56
+ ] });
18
57
  });
19
58
  export {
20
- F as FilterArrayField
59
+ K as AsyncRadioFilter
21
60
  };
package/dist/index25.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),u=require("mobx-react"),s=require("@veeqo/ui"),i=require("./index44.cjs"),F=require("./index20.cjs"),h=u.observer(({data:e,editedValue:r,setEditedValue:l})=>{var c;let t;switch(e.filterType){case i.FilterChoiceValue.NUMBER:t="number";break;case i.FilterChoiceValue.TEXT:t="text";break}switch(e.filterType){case i.FilterChoiceValue.TEXT:case i.FilterChoiceValue.NUMBER:return o.jsx(s.TextField,{label:e.label,type:t,value:r,onChange:n=>l(n)});case i.FilterChoiceValue.RADIO:case i.FilterChoiceValue.DATE_RANGE:return e.fetchAsyncFilterOptions?o.jsx(F.AsyncInlineRadioFilter,{field:e,setEditedValue:l,editedValue:r}):o.jsx(s.ChoiceList,{title:e.label,options:(c=e.options)!=null&&c.length?e.options:[],selected:[r],onChange:n=>l(`${n[0]}`)});default:return null}});exports.FilterField=h;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),p=require("mobx-react"),i=require("react"),x=require("lodash/debounce"),o=require("@veeqo/ui"),F=require("./index7.cjs"),_=require("./index56.cjs"),q=e=>e&&e.__esModule?e:{default:e},k=q(x),j=p.observer(({field:e})=>{var u;const{FILTERS_DEBOUCE_INTERVAL_MS:l}=F.useBusinessLogic(),{Filters:{setArrayFilter:r,arrayFilters:a}}=_.useStores();if(!((u=e.options)!=null&&u.length))return null;const d=a.get(e.id)||[],[b,c]=i.useState(d),S=i.useCallback(k.default((t,s)=>{r(t,s)},l),[r]),g=t=>{const s=t.map(C=>`${C}`);c(s),S(e.id,s)},h=()=>{c([]),r(e.id,[])};return n.jsxs(o.Stack,{spacing:"xs",children:[n.jsx(o.Button,{variant:"link",onClick:h,children:"Clear"}),n.jsx(o.ChoiceList,{allowMultiple:!0,title:e.label,options:e.options,selected:b,onChange:t=>g(t)})]})});exports.CheckboxFilter=j;
package/dist/index25.js CHANGED
@@ -1,34 +1,41 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import { observer as c } from "mobx-react";
3
- import { ChoiceList as p, TextField as f } from "@veeqo/ui";
4
- import { FilterChoiceValue as r } from "./index44.js";
5
- import { AsyncInlineRadioFilter as m } from "./index20.js";
6
- const y = c(({
7
- data: e,
8
- editedValue: o,
9
- setEditedValue: i
10
- }) => {
11
- var s;
12
- let t;
13
- switch (e.filterType) {
14
- case r.NUMBER:
15
- t = "number";
16
- break;
17
- case r.TEXT:
18
- t = "text";
19
- break;
20
- }
21
- switch (e.filterType) {
22
- case r.TEXT:
23
- case r.NUMBER:
24
- return /* @__PURE__ */ n(f, { label: e.label, type: t, value: o, onChange: (l) => i(l) });
25
- case r.RADIO:
26
- case r.DATE_RANGE:
27
- return e.fetchAsyncFilterOptions ? /* @__PURE__ */ n(m, { field: e, setEditedValue: i, editedValue: o }) : /* @__PURE__ */ n(p, { title: e.label, options: (s = e.options) != null && s.length ? e.options : [], selected: [o], onChange: (l) => i(`${l[0]}`) });
28
- default:
29
- return null;
30
- }
1
+ import { jsxs as C, jsx as l } from "react/jsx-runtime";
2
+ import { observer as F } from "mobx-react";
3
+ import { useState as d, useCallback as S } from "react";
4
+ import b from "lodash/debounce";
5
+ import { Stack as g, Button as k, ChoiceList as x } from "@veeqo/ui";
6
+ import { useBusinessLogic as V } from "./index7.js";
7
+ import { useStores as E } from "./index56.js";
8
+ const w = F(({ field: e }) => {
9
+ var n;
10
+ const { FILTERS_DEBOUCE_INTERVAL_MS: i } = V(), {
11
+ Filters: { setArrayFilter: o, arrayFilters: c }
12
+ } = E();
13
+ if (!((n = e.options) != null && n.length)) return null;
14
+ const a = c.get(e.id) || [], [u, s] = d(a), m = S(
15
+ b((t, r) => {
16
+ o(t, r);
17
+ }, i),
18
+ [o]
19
+ ), p = (t) => {
20
+ const r = t.map((h) => `${h}`);
21
+ s(r), m(e.id, r);
22
+ };
23
+ return /* @__PURE__ */ C(g, { spacing: "xs", children: [
24
+ /* @__PURE__ */ l(k, { variant: "link", onClick: () => {
25
+ s([]), o(e.id, []);
26
+ }, children: "Clear" }),
27
+ /* @__PURE__ */ l(
28
+ x,
29
+ {
30
+ allowMultiple: !0,
31
+ title: e.label,
32
+ options: e.options,
33
+ selected: u,
34
+ onChange: (t) => p(t)
35
+ }
36
+ )
37
+ ] });
31
38
  });
32
39
  export {
33
- y as FilterField
40
+ w as CheckboxFilter
34
41
  };
package/dist/index26.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),s=require("mobx-react"),n=require("@veeqo/ui"),c=require("@veeqo/components"),u=require("./index28.cjs"),t=require("./index44.cjs"),F=require("./index22.cjs"),a=require("./index30.cjs"),h=require("./index29.cjs"),p=require("./index23.cjs"),x=require("./index21.cjs"),y=require("./index18.cjs"),{Glyph:R}=c.VeeqoCommon,C=s.observer(({data:i})=>{const l=i.fields.filter(e=>e.filterType===t.FilterChoiceValue.TEXT||e.filterType===t.FilterChoiceValue.NUMBER),o=i.fields.filter(e=>e.filterType!==t.FilterChoiceValue.TEXT&&e.filterType!==t.FilterChoiceValue.NUMBER);return r.jsx(n.Accordion,{iconSlot:r.jsx(R,{name:"product-menu"}),label:i.label,children:r.jsxs(n.Stack,{children:[l.length>0?r.jsx(u.MultipleFieldFilter,{fields:l,groupId:i.id}):null,o.map(e=>{switch(e.filterType){case t.FilterChoiceValue.CHECKBOX:return e.fetchAsyncFilterOptions?r.jsx(y.AsyncCheckboxFilter,{field:e}):r.jsx(F.CheckboxFilter,{field:e});case t.FilterChoiceValue.RADIO:return e.fetchAsyncFilterOptions?r.jsx(x.AsyncRadioFilter,{field:e}):r.jsx(a.RadioFilter,{field:e});case t.FilterChoiceValue.DATE_RANGE:return r.jsx(p.DateRangeFilter,{field:e});case t.FilterChoiceValue.NUMBER_RANGE:return r.jsx(h.NumberRangeFilter,{field:e});default:return r.jsxs("div",{children:[e.id,": Unknown filter type: ",e.filterType]},e.id)}})]})})});exports.FilterGroup=C;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),P=require("react"),q=require("mobx-react"),n=require("@veeqo/ui"),E=require("./index62.cjs"),b=require("./index7.cjs"),k=require("./index56.cjs"),v=q.observer(({field:s})=>{const{DEFAULT_DATE_PRESET:c,DEFAULT_DATE_RANGE:l}=b.useBusinessLogic(),{Filters:{dateRangeFilters:i,setRangeFilter:o,clearRangeFilter:g}}=k.useStores(),e=i.get(s.id),[u,R]=P.useState(!1),d=(e==null?void 0:e.filterSelection)||c,a=()=>{const t=new E.RangeFilter;i.set(s.id,t)},F=t=>{const T=t.value===n.DateRanges.TODAY&&e&&(e==null?void 0:e.filterType)===void 0;if(!t||T)return;if(!u){R(!0);return}if(!e){a();return}if(!e)return;const f=t.value;o({dates:{start:e.gte,end:e.lte},key:f,range:e})},S=t=>{if(t){if(!e){a();return}e.setDates(t.start,t.end)}},D=()=>{g(s.id)},h=e?e.selectedRange:l;return r.jsxs(n.Stack,{spacing:"xs",children:[r.jsx(n.Button,{variant:"link",onClick:D,children:"Clear"}),r.jsx(n.DateRangePicker,{"aria-label":`date range for ${s.label}`,selectedPreset:d,setSelectedPreset:F,selectedRange:h,setSelectedRange:S})]})});exports.DateRangeFilter=v;
package/dist/index26.js CHANGED
@@ -1,43 +1,59 @@
1
- import { jsx as e, jsxs as n } from "react/jsx-runtime";
2
- import { observer as m } from "mobx-react";
3
- import { Accordion as p, Stack as c } from "@veeqo/ui";
4
- import { VeeqoCommon as s } from "@veeqo/components";
5
- import { MultipleFieldFilter as f } from "./index28.js";
6
- import { FilterChoiceValue as t } from "./index44.js";
7
- import { CheckboxFilter as u } from "./index22.js";
8
- import { RadioFilter as F } from "./index30.js";
9
- import { NumberRangeFilter as a } from "./index29.js";
10
- import { DateRangeFilter as y } from "./index23.js";
11
- import { AsyncRadioFilter as T } from "./index21.js";
12
- import { AsyncCheckboxFilter as h } from "./index18.js";
13
- const {
14
- Glyph: R
15
- } = s, O = m(({
16
- data: o
17
- }) => {
18
- const i = o.fields.filter((r) => r.filterType === t.TEXT || r.filterType === t.NUMBER), l = o.fields.filter((r) => r.filterType !== t.TEXT && r.filterType !== t.NUMBER);
19
- return /* @__PURE__ */ e(p, { iconSlot: /* @__PURE__ */ e(R, { name: "product-menu" }), label: o.label, children: /* @__PURE__ */ n(c, { children: [
20
- i.length > 0 ? /* @__PURE__ */ e(f, { fields: i, groupId: o.id }) : null,
21
- l.map((r) => {
22
- switch (r.filterType) {
23
- case t.CHECKBOX:
24
- return r.fetchAsyncFilterOptions ? /* @__PURE__ */ e(h, { field: r }) : /* @__PURE__ */ e(u, { field: r });
25
- case t.RADIO:
26
- return r.fetchAsyncFilterOptions ? /* @__PURE__ */ e(T, { field: r }) : /* @__PURE__ */ e(F, { field: r });
27
- case t.DATE_RANGE:
28
- return /* @__PURE__ */ e(y, { field: r });
29
- case t.NUMBER_RANGE:
30
- return /* @__PURE__ */ e(a, { field: r });
31
- default:
32
- return /* @__PURE__ */ n("div", { children: [
33
- r.id,
34
- ": Unknown filter type: ",
35
- r.filterType
36
- ] }, r.id);
1
+ import { jsxs as D, jsx as i } from "react/jsx-runtime";
2
+ import { useState as S } from "react";
3
+ import { observer as T } from "mobx-react";
4
+ import { Stack as E, Button as P, DateRangePicker as k, DateRanges as A } from "@veeqo/ui";
5
+ import { RangeFilter as v } from "./index62.js";
6
+ import { useBusinessLogic as C } from "./index7.js";
7
+ import { useStores as x } from "./index56.js";
8
+ const U = T(({ field: r }) => {
9
+ const { DEFAULT_DATE_PRESET: a, DEFAULT_DATE_RANGE: o } = C(), {
10
+ Filters: { dateRangeFilters: n, setRangeFilter: l, clearRangeFilter: c }
11
+ } = x(), e = n.get(r.id), [g, d] = S(!1), R = (e == null ? void 0 : e.filterSelection) || a, s = () => {
12
+ const t = new v();
13
+ n.set(r.id, t);
14
+ }, f = (t) => {
15
+ const u = t.value === A.TODAY && e && (e == null ? void 0 : e.filterType) === void 0;
16
+ if (!t || u) return;
17
+ if (!g) {
18
+ d(!0);
19
+ return;
20
+ }
21
+ if (!e) {
22
+ s();
23
+ return;
24
+ }
25
+ if (!e) return;
26
+ const h = t.value;
27
+ l({
28
+ dates: { start: e.gte, end: e.lte },
29
+ key: h,
30
+ range: e
31
+ });
32
+ }, m = (t) => {
33
+ if (t) {
34
+ if (!e) {
35
+ s();
36
+ return;
37
37
  }
38
- })
39
- ] }) });
38
+ e.setDates(t.start, t.end);
39
+ }
40
+ }, p = () => {
41
+ c(r.id);
42
+ }, F = e ? e.selectedRange : o;
43
+ return /* @__PURE__ */ D(E, { spacing: "xs", children: [
44
+ /* @__PURE__ */ i(P, { variant: "link", onClick: p, children: "Clear" }),
45
+ /* @__PURE__ */ i(
46
+ k,
47
+ {
48
+ "aria-label": `date range for ${r.label}`,
49
+ selectedPreset: R,
50
+ setSelectedPreset: f,
51
+ selectedRange: F,
52
+ setSelectedRange: m
53
+ }
54
+ )
55
+ ] });
40
56
  });
41
57
  export {
42
- O as FilterGroup
58
+ U as DateRangeFilter
43
59
  };
package/dist/index27.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),p=require("mobx-react"),l=require("@veeqo/ui"),v=require("./index84.cjs"),y=p.observer(({data:m,editedValue:t,setEditedValue:c})=>{var b;if(!((b=m.options)!=null&&b.length))return null;const[u,x]=m.options,i=Number(u.value),a=Number(x.value),h=(s,n)=>{if(!Array.isArray(n)||n.length!==2||!t)return;const[e,j]=n,g=t==null?void 0:t.clone();g.setGte(e),g.setLte(j),c(g)},o={gte:(t==null?void 0:t.gte)||0,lte:(t==null?void 0:t.lte)||100},M=s=>{if(!t)return;const n=t.clone(),e=Number(s);e>n.lteMax||(e>=n.gteMin&&e<=n.lteMax&&n.setGte(e),(!n.lte||e>=n.lte)&&n.setLte(n.lteMax),c(n))},f=s=>{if(!t)return;const n=t.clone(),e=Number(s);e<n.gteMin||(e>=n.gteMin&&e<=n.lteMax&&n.setLte(e),(!n.gte||e<=n.gte)&&n.setGte(n.gteMin),c(n))},S=[o.gte,o.lte];return r.jsxs(l.Stack,{spacing:"xs",alignX:"stretch",children:[r.jsxs(l.Stack,{direction:"horizontal",children:[r.jsx(l.TextField,{label:u.label,type:"number",min:i,max:a,value:o.gte.toString(),onChange:M}),r.jsx(l.TextField,{label:x.label,type:"number",min:i,max:a,value:o.lte.toString(),onChange:f})]}),r.jsx(v.MUISlider,{value:S,onChange:h,min:i,max:a,valueLabelDisplay:"auto"})]})});exports.FilterNumberRangeFilter=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),c=require("react"),h=require("mobx-react"),o=require("@veeqo/ui"),x=require("lodash/debounce"),a=require("./index44.cjs"),E=require("./index7.cjs"),T=require("./index56.cjs"),g=r=>r&&r.__esModule?r:{default:r},k=g(x),m=h.observer(({fields:r,groupId:u})=>{const{FILTERS_DEBOUCE_INTERVAL_MS:d}=E.useBusinessLogic(),{Filters:{getFiltersForGroup:F,setFilter:l,clearFiltersForGroup:b}}=T.useStores(),p=F(u),[S,n]=c.useState(p),q=c.useCallback(k.default((e,t)=>{l(e,t)},d),[l]),C=(e,t)=>{n(s=>({...s,[e]:t})),q(e,t)},_=()=>{const e=r.reduce((t,s)=>({...t,[s.id]:""}),{});n(e),b(u)};return i.jsxs(o.Stack,{children:[i.jsx(o.Button,{variant:"link",onClick:_,children:"Clear"}),r.map(e=>{let t;switch(e.filterType){case a.FilterChoiceValue.NUMBER:t="number";break;case a.FilterChoiceValue.TEXT:t="text";break}return i.jsx(o.TextField,{type:t,value:S[e.id],label:e.label,onChange:s=>C(e.id,s)},e.id)})]})});exports.MultipleFieldFilter=m;
package/dist/index27.js CHANGED
@@ -1,38 +1,56 @@
1
- import { jsxs as b, jsx as a } from "react/jsx-runtime";
2
- import { observer as N } from "mobx-react";
3
- import { Stack as h, TextField as u } from "@veeqo/ui";
4
- import { MUISlider as L } from "./index84.js";
5
- const j = N(({
6
- data: g,
7
- editedValue: t,
8
- setEditedValue: l
9
- }) => {
10
- var f;
11
- if (!((f = g.options) != null && f.length)) return null;
12
- const [i, x] = g.options, s = Number(i.value), c = Number(x.value), p = (e, n) => {
13
- if (!Array.isArray(n) || n.length !== 2 || !t) return;
14
- const [r, y] = n, m = t == null ? void 0 : t.clone();
15
- m.setGte(r), m.setLte(y), l(m);
16
- }, o = {
17
- gte: (t == null ? void 0 : t.gte) || 0,
18
- lte: (t == null ? void 0 : t.lte) || 100
19
- }, M = (e) => {
20
- if (!t) return;
21
- const n = t.clone(), r = Number(e);
22
- r > n.lteMax || (r >= n.gteMin && r <= n.lteMax && n.setGte(r), (!n.lte || r >= n.lte) && n.setLte(n.lteMax), l(n));
23
- }, v = (e) => {
24
- if (!t) return;
25
- const n = t.clone(), r = Number(e);
26
- r < n.gteMin || (r >= n.gteMin && r <= n.lteMax && n.setLte(r), (!n.gte || r <= n.gte) && n.setGte(n.gteMin), l(n));
27
- }, C = [o.gte, o.lte];
28
- return /* @__PURE__ */ b(h, { spacing: "xs", alignX: "stretch", children: [
29
- /* @__PURE__ */ b(h, { direction: "horizontal", children: [
30
- /* @__PURE__ */ a(u, { label: i.label, type: "number", min: s, max: c, value: o.gte.toString(), onChange: M }),
31
- /* @__PURE__ */ a(u, { label: x.label, type: "number", min: s, max: c, value: o.lte.toString(), onChange: v })
32
- ] }),
33
- /* @__PURE__ */ a(L, { value: C, onChange: p, min: s, max: c, valueLabelDisplay: "auto" })
1
+ import { jsxs as C, jsx as c } from "react/jsx-runtime";
2
+ import { useState as E, useCallback as h } from "react";
3
+ import { observer as k } from "mobx-react";
4
+ import { Stack as S, Button as T, TextField as x } from "@veeqo/ui";
5
+ import V from "lodash/debounce";
6
+ import { FilterChoiceValue as n } from "./index44.js";
7
+ import { useBusinessLogic as f } from "./index7.js";
8
+ import { useStores as B } from "./index56.js";
9
+ const N = k(({ fields: o, groupId: s }) => {
10
+ const { FILTERS_DEBOUCE_INTERVAL_MS: a } = f(), {
11
+ Filters: { getFiltersForGroup: u, setFilter: i, clearFiltersForGroup: m }
12
+ } = B(), F = u(s), [p, l] = E(F), d = h(
13
+ V((e, t) => {
14
+ i(e, t);
15
+ }, a),
16
+ [i]
17
+ ), b = (e, t) => {
18
+ l((r) => ({ ...r, [e]: t })), d(e, t);
19
+ };
20
+ return /* @__PURE__ */ C(S, { children: [
21
+ /* @__PURE__ */ c(T, { variant: "link", onClick: () => {
22
+ const e = o.reduce(
23
+ (t, r) => ({
24
+ ...t,
25
+ [r.id]: ""
26
+ }),
27
+ {}
28
+ );
29
+ l(e), m(s);
30
+ }, children: "Clear" }),
31
+ o.map((e) => {
32
+ let t;
33
+ switch (e.filterType) {
34
+ case n.NUMBER:
35
+ t = "number";
36
+ break;
37
+ case n.TEXT:
38
+ t = "text";
39
+ break;
40
+ }
41
+ return /* @__PURE__ */ c(
42
+ x,
43
+ {
44
+ type: t,
45
+ value: p[e.id],
46
+ label: e.label,
47
+ onChange: (r) => b(e.id, r)
48
+ },
49
+ e.id
50
+ );
51
+ })
34
52
  ] });
35
53
  });
36
54
  export {
37
- j as FilterNumberRangeFilter
55
+ N as MultipleFieldFilter
38
56
  };
package/dist/index28.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),c=require("react"),h=require("mobx-react"),o=require("@veeqo/ui"),x=require("lodash/debounce"),a=require("./index44.cjs"),E=require("./index7.cjs"),T=require("./index56.cjs"),g=r=>r&&r.__esModule?r:{default:r},k=g(x),m=h.observer(({fields:r,groupId:u})=>{const{FILTERS_DEBOUCE_INTERVAL_MS:d}=E.useBusinessLogic(),{Filters:{getFiltersForGroup:F,setFilter:l,clearFiltersForGroup:b}}=T.useStores(),p=F(u),[S,n]=c.useState(p),q=c.useCallback(k.default((e,t)=>{l(e,t)},d),[l]),C=(e,t)=>{n(s=>({...s,[e]:t})),q(e,t)},_=()=>{const e=r.reduce((t,s)=>({...t,[s.id]:""}),{});n(e),b(u)};return i.jsxs(o.Stack,{children:[i.jsx(o.Button,{variant:"link",onClick:_,children:"Clear"}),r.map(e=>{let t;switch(e.filterType){case a.FilterChoiceValue.NUMBER:t="number";break;case a.FilterChoiceValue.TEXT:t="text";break}return i.jsx(o.TextField,{type:t,value:S[e.id],label:e.label,onChange:s=>C(e.id,s)},e.id)})]})});exports.MultipleFieldFilter=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),d=require("react"),_=require("mobx-react"),j=require("lodash/debounce"),r=require("@veeqo/ui"),L=require("./index83.cjs"),R=require("./index61.cjs"),p=require("./index7.cjs"),y=require("./index56.cjs"),v=i=>i&&i.__esModule?i:{default:i},k=v(j),I=_.observer(({field:i})=>{var M;const{FILTERS_DEBOUCE_INTERVAL_MS:f}=p.useBusinessLogic(),{Filters:{numberRangeFilters:u,setNumberRangeFilter:x,clearNumberRangeFilter:F}}=y.useStores(),e=u.get(i.id),[o,g]=d.useState({gte:(e==null?void 0:e.gte)??0,lte:(e==null?void 0:e.lte)??100});if(!((M=i.options)!=null&&M.length))return null;const b=()=>{const l=new R.NumberRangeFilter({filterId:i.id});return u.set(i.id,l),l},c=d.useCallback(k.default(({numberRange:l,lte:t,gte:n})=>{x({numberRange:l,lte:t,gte:n})},f),[x]),h=()=>{g({gte:0,lte:100}),F(i.id)},S=(l,t)=>{let n=new R.NumberRangeFilter({filterId:i.id});if(e||(n=b()),!Array.isArray(t)||t.length!==2)return;const[s,m]=t;g({gte:s,lte:m}),c(e?{numberRange:e,lte:m,gte:s}:{numberRange:n,lte:m,gte:s})},N=l=>{if(e||b(),!e)return;const t=Number(l);if(t>e.lteMax)return;let{lte:n}=e,{gte:s}=e;t>=e.gteMin&&t<=e.lteMax&&(s=t),(!e.lte||t>=e.lte)&&(n=e.lteMax),g({gte:s,lte:n}),c({numberRange:e,lte:n,gte:s})},C=l=>{if(e||b(),!e)return;const t=Number(l);if(t<e.gteMin)return;let{lte:n}=e,{gte:s}=e;t>=e.gteMin&&t<=e.lteMax&&(n=t),(!e.gte||t<=e.gte)&&(s=e.gteMin),g({gte:s,lte:n}),c({numberRange:e,lte:n,gte:s})},q=[o.gte,o.lte];return a.jsxs(r.Stack,{spacing:"xs",alignX:"stretch",children:[a.jsx(r.Button,{variant:"link",onClick:h,children:"Clear"}),a.jsxs(r.Stack,{direction:"horizontal",children:[a.jsx(r.TextField,{label:e==null?void 0:e.gteMinLabel,type:"number",min:e==null?void 0:e.gteMin,max:e==null?void 0:e.lteMax,value:o.gte.toString(),onChange:N}),a.jsx(r.TextField,{label:e==null?void 0:e.lteMaxLabel,type:"number",min:e==null?void 0:e.gteMin,max:e==null?void 0:e.lteMax,value:o.lte.toString(),onChange:C})]}),a.jsx(L.MUISlider,{value:q,onChange:S,min:e==null?void 0:e.gteMin,max:e==null?void 0:e.lteMax,valueLabelDisplay:"auto"})]})});exports.NumberRangeFilter=I;
package/dist/index28.js CHANGED
@@ -1,53 +1,87 @@
1
- import { jsxs as C, jsx as c } from "react/jsx-runtime";
2
- import { useState as E, useCallback as h } from "react";
1
+ import { jsxs as R, jsx as s } from "react/jsx-runtime";
2
+ import { useState as y, useCallback as I } from "react";
3
3
  import { observer as k } from "mobx-react";
4
- import { Stack as S, Button as T, TextField as x } from "@veeqo/ui";
5
- import V from "lodash/debounce";
6
- import { FilterChoiceValue as n } from "./index44.js";
7
- import { useBusinessLogic as f } from "./index7.js";
8
- import { useStores as B } from "./index56.js";
9
- const N = k(({
10
- fields: o,
11
- groupId: s
12
- }) => {
13
- const {
14
- FILTERS_DEBOUCE_INTERVAL_MS: a
15
- } = f(), {
16
- Filters: {
17
- getFiltersForGroup: u,
18
- setFilter: i,
19
- clearFiltersForGroup: m
20
- }
21
- } = B(), F = u(s), [p, l] = E(F), d = h(V((e, t) => {
22
- i(e, t);
23
- }, a), [i]), b = (e, t) => {
24
- l((r) => ({
25
- ...r,
26
- [e]: t
27
- })), d(e, t);
28
- };
29
- return /* @__PURE__ */ C(S, { children: [
30
- /* @__PURE__ */ c(T, { variant: "link", onClick: () => {
31
- const e = o.reduce((t, r) => ({
32
- ...t,
33
- [r.id]: ""
34
- }), {});
35
- l(e), m(s);
36
- }, children: "Clear" }),
37
- o.map((e) => {
38
- let t;
39
- switch (e.filterType) {
40
- case n.NUMBER:
41
- t = "number";
42
- break;
43
- case n.TEXT:
44
- t = "text";
45
- break;
4
+ import E from "lodash/debounce";
5
+ import { Stack as c, Button as _, TextField as p } from "@veeqo/ui";
6
+ import { MUISlider as A } from "./index83.js";
7
+ import { NumberRangeFilter as h } from "./index61.js";
8
+ import { useBusinessLogic as B } from "./index7.js";
9
+ import { useStores as T } from "./index56.js";
10
+ const q = k(({ field: l }) => {
11
+ var x;
12
+ const { FILTERS_DEBOUCE_INTERVAL_MS: F } = B(), {
13
+ Filters: { numberRangeFilters: f, setNumberRangeFilter: M, clearNumberRangeFilter: d }
14
+ } = T(), e = f.get(l.id), [a, r] = y({
15
+ gte: (e == null ? void 0 : e.gte) ?? 0,
16
+ lte: (e == null ? void 0 : e.lte) ?? 100
17
+ });
18
+ if (!((x = l.options) != null && x.length)) return null;
19
+ const m = () => {
20
+ const o = new h({ filterId: l.id });
21
+ return f.set(l.id, o), o;
22
+ }, g = I(
23
+ E(({ numberRange: o, lte: t, gte: i }) => {
24
+ M({ numberRange: o, lte: t, gte: i });
25
+ }, F),
26
+ [M]
27
+ ), C = () => {
28
+ r({ gte: 0, lte: 100 }), d(l.id);
29
+ }, N = (o, t) => {
30
+ let i = new h({ filterId: l.id });
31
+ if (e || (i = m()), !Array.isArray(t) || t.length !== 2) return;
32
+ const [n, b] = t;
33
+ r({ gte: n, lte: b }), g(e ? { numberRange: e, lte: b, gte: n } : { numberRange: i, lte: b, gte: n });
34
+ }, S = (o) => {
35
+ if (e || m(), !e) return;
36
+ const t = Number(o);
37
+ if (t > e.lteMax) return;
38
+ let { lte: i } = e, { gte: n } = e;
39
+ t >= e.gteMin && t <= e.lteMax && (n = t), (!e.lte || t >= e.lte) && (i = e.lteMax), r({ gte: n, lte: i }), g({ numberRange: e, lte: i, gte: n });
40
+ }, L = (o) => {
41
+ if (e || m(), !e) return;
42
+ const t = Number(o);
43
+ if (t < e.gteMin) return;
44
+ let { lte: i } = e, { gte: n } = e;
45
+ t >= e.gteMin && t <= e.lteMax && (i = t), (!e.gte || t <= e.gte) && (n = e.gteMin), r({ gte: n, lte: i }), g({ numberRange: e, lte: i, gte: n });
46
+ }, v = [a.gte, a.lte];
47
+ return /* @__PURE__ */ R(c, { spacing: "xs", alignX: "stretch", children: [
48
+ /* @__PURE__ */ s(_, { variant: "link", onClick: C, children: "Clear" }),
49
+ /* @__PURE__ */ R(c, { direction: "horizontal", children: [
50
+ /* @__PURE__ */ s(
51
+ p,
52
+ {
53
+ label: e == null ? void 0 : e.gteMinLabel,
54
+ type: "number",
55
+ min: e == null ? void 0 : e.gteMin,
56
+ max: e == null ? void 0 : e.lteMax,
57
+ value: a.gte.toString(),
58
+ onChange: S
59
+ }
60
+ ),
61
+ /* @__PURE__ */ s(
62
+ p,
63
+ {
64
+ label: e == null ? void 0 : e.lteMaxLabel,
65
+ type: "number",
66
+ min: e == null ? void 0 : e.gteMin,
67
+ max: e == null ? void 0 : e.lteMax,
68
+ value: a.lte.toString(),
69
+ onChange: L
70
+ }
71
+ )
72
+ ] }),
73
+ /* @__PURE__ */ s(
74
+ A,
75
+ {
76
+ value: v,
77
+ onChange: N,
78
+ min: e == null ? void 0 : e.gteMin,
79
+ max: e == null ? void 0 : e.lteMax,
80
+ valueLabelDisplay: "auto"
46
81
  }
47
- return /* @__PURE__ */ c(x, { type: t, value: p[e.id], label: e.label, onChange: (r) => b(e.id, r) }, e.id);
48
- })
82
+ )
49
83
  ] });
50
84
  });
51
85
  export {
52
- N as MultipleFieldFilter
86
+ q as NumberRangeFilter
53
87
  };
package/dist/index29.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),d=require("react"),_=require("mobx-react"),j=require("lodash/debounce"),r=require("@veeqo/ui"),L=require("./index84.cjs"),R=require("./index61.cjs"),p=require("./index7.cjs"),y=require("./index56.cjs"),v=i=>i&&i.__esModule?i:{default:i},k=v(j),I=_.observer(({field:i})=>{var M;const{FILTERS_DEBOUCE_INTERVAL_MS:f}=p.useBusinessLogic(),{Filters:{numberRangeFilters:u,setNumberRangeFilter:x,clearNumberRangeFilter:F}}=y.useStores(),e=u.get(i.id),[o,g]=d.useState({gte:(e==null?void 0:e.gte)??0,lte:(e==null?void 0:e.lte)??100});if(!((M=i.options)!=null&&M.length))return null;const b=()=>{const l=new R.NumberRangeFilter({filterId:i.id});return u.set(i.id,l),l},c=d.useCallback(k.default(({numberRange:l,lte:t,gte:n})=>{x({numberRange:l,lte:t,gte:n})},f),[x]),h=()=>{g({gte:0,lte:100}),F(i.id)},S=(l,t)=>{let n=new R.NumberRangeFilter({filterId:i.id});if(e||(n=b()),!Array.isArray(t)||t.length!==2)return;const[s,m]=t;g({gte:s,lte:m}),c(e?{numberRange:e,lte:m,gte:s}:{numberRange:n,lte:m,gte:s})},N=l=>{if(e||b(),!e)return;const t=Number(l);if(t>e.lteMax)return;let{lte:n}=e,{gte:s}=e;t>=e.gteMin&&t<=e.lteMax&&(s=t),(!e.lte||t>=e.lte)&&(n=e.lteMax),g({gte:s,lte:n}),c({numberRange:e,lte:n,gte:s})},C=l=>{if(e||b(),!e)return;const t=Number(l);if(t<e.gteMin)return;let{lte:n}=e,{gte:s}=e;t>=e.gteMin&&t<=e.lteMax&&(n=t),(!e.gte||t<=e.gte)&&(s=e.gteMin),g({gte:s,lte:n}),c({numberRange:e,lte:n,gte:s})},q=[o.gte,o.lte];return a.jsxs(r.Stack,{spacing:"xs",alignX:"stretch",children:[a.jsx(r.Button,{variant:"link",onClick:h,children:"Clear"}),a.jsxs(r.Stack,{direction:"horizontal",children:[a.jsx(r.TextField,{label:e==null?void 0:e.gteMinLabel,type:"number",min:e==null?void 0:e.gteMin,max:e==null?void 0:e.lteMax,value:o.gte.toString(),onChange:N}),a.jsx(r.TextField,{label:e==null?void 0:e.lteMaxLabel,type:"number",min:e==null?void 0:e.gteMin,max:e==null?void 0:e.lteMax,value:o.lte.toString(),onChange:C})]}),a.jsx(L.MUISlider,{value:q,onChange:S,min:e==null?void 0:e.gteMin,max:e==null?void 0:e.lteMax,valueLabelDisplay:"auto"})]})});exports.NumberRangeFilter=I;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),h=require("mobx-react"),u=require("react"),q=require("lodash/debounce"),r=require("@veeqo/ui"),C=require("./index7.cjs"),F=require("./index56.cjs"),p=e=>e&&e.__esModule?e:{default:e},x=p(q),R=h.observer(({field:e})=>{var i;const{FILTERS_DEBOUCE_INTERVAL_MS:l}=C.useBusinessLogic(),{Filters:{setFilter:n,filters:a}}=F.useStores();if(!((i=e.options)!=null&&i.length))return null;const d=a.get(e.id),[S,c]=u.useState(d),b=u.useCallback(x.default((t,s)=>{n(t,s)},l),[n]),g=t=>{const s=`${t[0]}`;c(s),b(e.id,s)},_=()=>{c(""),n(e.id,"")};return o.jsxs(r.Stack,{spacing:"xs",children:[o.jsx(r.Button,{variant:"link",onClick:_,children:"Clear"}),o.jsx(r.ChoiceList,{title:e.label,options:e.options,selected:[S],onChange:t=>g(t)})]})});exports.RadioFilter=R;