@tsed/react-formio 3.0.0-rc.23 → 3.0.0-rc.24

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 (89) hide show
  1. package/dist/all.js +1 -2
  2. package/dist/all.js.map +1 -1
  3. package/dist/atoms/icon/Icon.js +4 -4
  4. package/dist/atoms/icon/Icon.js.map +1 -1
  5. package/dist/chunks/clsx.js +17 -0
  6. package/dist/chunks/clsx.js.map +1 -0
  7. package/dist/chunks/index.js +59969 -36
  8. package/dist/chunks/index.js.map +1 -1
  9. package/dist/contexts/FormioContext.js +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/molecules/button/Button.js +4 -4
  12. package/dist/molecules/button/Button.js.map +1 -1
  13. package/dist/molecules/card/Card.js +4 -4
  14. package/dist/molecules/card/Card.js.map +1 -1
  15. package/dist/molecules/forms/form-control/FormControl.js +1 -1
  16. package/dist/molecules/forms/form-control/FormControl.js.map +1 -1
  17. package/dist/molecules/forms/select/components/ChoicesSelect.js +53 -46
  18. package/dist/molecules/forms/select/components/ChoicesSelect.js.map +1 -1
  19. package/dist/molecules/forms/select/components/HtmlSelect.js +8 -8
  20. package/dist/molecules/forms/select/components/HtmlSelect.js.map +1 -1
  21. package/dist/molecules/forms/select/components/choices.template.d.ts +27 -2
  22. package/dist/molecules/forms/select/components/choices.template.js +1085 -1086
  23. package/dist/molecules/forms/select/components/choices.template.js.map +1 -1
  24. package/dist/molecules/forms/select/hooks/useOptions.d.ts +1 -1
  25. package/dist/molecules/forms/select/hooks/useOptions.js +15 -15
  26. package/dist/molecules/forms/select/hooks/useOptions.js.map +1 -1
  27. package/dist/molecules/loader/Loader.js +2 -5
  28. package/dist/molecules/loader/Loader.js.map +1 -1
  29. package/dist/molecules/pagination/Pagination.js +8 -8
  30. package/dist/molecules/pagination/Pagination.js.map +1 -1
  31. package/dist/molecules/pagination/PaginationButton.js +4 -4
  32. package/dist/molecules/pagination/PaginationButton.js.map +1 -1
  33. package/dist/molecules/table/Table.js +1 -1
  34. package/dist/molecules/table/Table.js.map +1 -1
  35. package/dist/molecules/table/components/DefaultCellHeader.js +1 -1
  36. package/dist/molecules/table/components/DefaultCellHeader.js.map +1 -1
  37. package/dist/molecules/table/components/DefaultOperationButton.js +1 -1
  38. package/dist/molecules/table/components/DefaultOperationButton.js.map +1 -1
  39. package/dist/molecules/table/filters/Filters.d.ts +2 -2
  40. package/dist/molecules/table/hooks/useUniqValues.d.ts +6 -2
  41. package/dist/molecules/table/hooks/useUniqValues.js.map +1 -1
  42. package/dist/molecules/table/utils/mapFormToColumns.js +27 -28
  43. package/dist/molecules/table/utils/mapFormToColumns.js.map +1 -1
  44. package/dist/molecules/tabs/Tab.js +1 -1
  45. package/dist/molecules/tabs/Tab.js.map +1 -1
  46. package/dist/molecules/tabs/TabPanel.js +4 -4
  47. package/dist/molecules/tabs/TabPanel.js.map +1 -1
  48. package/dist/molecules/tabs/Tabs.js +1 -1
  49. package/dist/molecules/tabs/Tabs.js.map +1 -1
  50. package/dist/organisms/form/actions/FormAction.js +1 -1
  51. package/dist/organisms/form/builder/FormEdit.js +1 -1
  52. package/dist/organisms/form/builder/FormEdit.js.map +1 -1
  53. package/dist/organisms/form/builder/useFormBuilder.js +1 -1
  54. package/dist/organisms/form/useForm.js +1 -1
  55. package/dist/organisms/modal/RemoveModal.js +1 -1
  56. package/dist/organisms/modal/RemoveModal.js.map +1 -1
  57. package/dist/organisms/table/actions/ActionsTable.js +1 -1
  58. package/dist/organisms/table/actions/ActionsTable.js.map +1 -1
  59. package/dist/organisms/table/forms/components/FormsCell.js +1 -1
  60. package/dist/organisms/table/forms/components/FormsCell.js.map +1 -1
  61. package/dist/utils/iconClass.js +1 -1
  62. package/package.json +4 -4
  63. package/src/atoms/icon/Icon.tsx +1 -1
  64. package/src/molecules/button/Button.tsx +1 -1
  65. package/src/molecules/card/Card.tsx +2 -2
  66. package/src/molecules/forms/form-control/FormControl.tsx +2 -2
  67. package/src/molecules/forms/select/components/ChoicesSelect.stories.tsx +134 -2
  68. package/src/molecules/forms/select/components/ChoicesSelect.tsx +11 -4
  69. package/src/molecules/forms/select/components/HtmlSelect.tsx +1 -1
  70. package/src/molecules/forms/select/components/choices.template.tsx +51 -29
  71. package/src/molecules/forms/select/hooks/useOptions.ts +1 -5
  72. package/src/molecules/loader/Loader.tsx +3 -7
  73. package/src/molecules/pagination/Pagination.tsx +5 -5
  74. package/src/molecules/pagination/PaginationButton.tsx +2 -2
  75. package/src/molecules/table/Table.tsx +2 -2
  76. package/src/molecules/table/components/DefaultCellHeader.tsx +3 -3
  77. package/src/molecules/table/components/DefaultOperationButton.tsx +1 -1
  78. package/src/molecules/table/filters/Filters.ts +2 -2
  79. package/src/molecules/table/hooks/useUniqValues.tsx +7 -3
  80. package/src/molecules/table/utils/mapFormToColumns.tsx +4 -4
  81. package/src/molecules/tabs/Tab.tsx +3 -3
  82. package/src/molecules/tabs/TabPanel.tsx +2 -2
  83. package/src/molecules/tabs/Tabs.tsx +2 -2
  84. package/src/organisms/form/builder/FormEdit.tsx +2 -2
  85. package/src/organisms/modal/RemoveModal.tsx +3 -3
  86. package/src/organisms/table/actions/ActionsTable.tsx +2 -2
  87. package/src/organisms/table/forms/components/FormsCell.tsx +1 -1
  88. package/dist/chunks/index2.js +0 -59979
  89. package/dist/chunks/index2.js.map +0 -1
@@ -3,7 +3,7 @@ export declare function mapOptions(options: AllSelectProps["options"]): (import(
3
3
  label: any;
4
4
  options: any;
5
5
  }[];
6
- export declare function useOptions<Data = string>({ options, choices }: AllSelectProps<Data>): (import('../Select.interface').SelectOptionBaseProps<string> | Omit<import('../Select.interface').SelectOptionProps<string>, "value">)[] | {
6
+ export declare function useOptions<Data = string>({ options }: AllSelectProps<Data>): (import('../Select.interface').SelectOptionBaseProps<string> | Omit<import('../Select.interface').SelectOptionProps<string>, "value">)[] | {
7
7
  label: any;
8
8
  options: any;
9
9
  }[];
@@ -1,7 +1,7 @@
1
1
  import { useMemo as n } from "react";
2
- function o(e) {
3
- if (e.find((u) => u.group)) {
4
- let u = function(r) {
2
+ function o(t) {
3
+ if (t.find((p) => p.group)) {
4
+ let p = function(r) {
5
5
  return {
6
6
  ...r,
7
7
  customProperties: {
@@ -9,27 +9,27 @@ function o(e) {
9
9
  template: r.template
10
10
  }
11
11
  };
12
- }, p = /* @__PURE__ */ new Map();
13
- return e.forEach((r) => {
12
+ }, u = /* @__PURE__ */ new Map();
13
+ return t.forEach((r) => {
14
14
  if (r.group) {
15
- const t = p.get(r.group) || [];
16
- t.push(r), p.set(r.group, t);
15
+ const e = u.get(r.group) || [];
16
+ e.push(r), u.set(r.group, e);
17
17
  } else {
18
- const t = p.get("default") || [];
19
- t.push(u(r)), p.set("default", t);
18
+ const e = u.get("default") || [];
19
+ e.push(p(r)), u.set("default", e);
20
20
  }
21
- }), [...p.entries()].map(([r, t]) => ({
21
+ }), [...u.entries()].map(([r, e]) => ({
22
22
  label: r,
23
- options: t
23
+ options: e
24
24
  }));
25
25
  }
26
- return e;
26
+ return t;
27
27
  }
28
- function f({ options: e, choices: u }) {
29
- return u && (e = u), n(() => o(e), [e]);
28
+ function a({ options: t }) {
29
+ return n(() => o(t), [t]);
30
30
  }
31
31
  export {
32
32
  o as mapOptions,
33
- f as useOptions
33
+ a as useOptions
34
34
  };
35
35
  //# sourceMappingURL=useOptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useOptions.js","sources":["../../../../../src/molecules/forms/select/hooks/useOptions.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport type { AllSelectProps } from \"../Select.interface\";\n\nexport function mapOptions(options: AllSelectProps[\"options\"]) {\n if (options.find((item) => item.group)) {\n let groupsMap = new Map();\n\n function mapItem(item: AllSelectProps[\"options\"][0]) {\n return {\n ...item,\n customProperties: {\n ...item.data,\n template: item.template\n }\n };\n }\n\n options.forEach((item) => {\n if (item.group) {\n // legacy model group\n const group = groupsMap.get(item.group) || [];\n\n group.push(item);\n\n groupsMap.set(item.group, group);\n } else {\n const group = groupsMap.get(\"default\") || [];\n group.push(mapItem(item));\n groupsMap.set(\"default\", group);\n }\n });\n\n return [...groupsMap.entries()].map(([label, options]) => {\n return {\n label,\n options\n };\n });\n }\n\n return options;\n}\n\nexport function useOptions<Data = string>({ options, choices }: AllSelectProps<Data>) {\n if (choices) {\n options = choices;\n }\n\n return useMemo(() => {\n return mapOptions(options);\n }, [options]);\n}\n"],"names":["mapOptions","options","item","mapItem","groupsMap","group","label","useOptions","choices","useMemo"],"mappings":";AAIO,SAASA,EAAWC,GAAoC;AAC7D,MAAIA,EAAQ,KAAK,CAACC,MAASA,EAAK,KAAK,GAAG;AAGtC,QAASC,IAAT,SAAiBD,GAAoC;AACnD,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,kBAAkB;AAAA,UAChB,GAAGA,EAAK;AAAA,UACR,UAAUA,EAAK;AAAA,QAAA;AAAA,MACjB;AAAA,IAEJ,GAVIE,wBAAgB,IAAA;AAYpB,WAAAH,EAAQ,QAAQ,CAACC,MAAS;AACxB,UAAIA,EAAK,OAAO;AAEd,cAAMG,IAAQD,EAAU,IAAIF,EAAK,KAAK,KAAK,CAAA;AAE3C,QAAAG,EAAM,KAAKH,CAAI,GAEfE,EAAU,IAAIF,EAAK,OAAOG,CAAK;AAAA,MACjC,OAAO;AACL,cAAMA,IAAQD,EAAU,IAAI,SAAS,KAAK,CAAA;AAC1C,QAAAC,EAAM,KAAKF,EAAQD,CAAI,CAAC,GACxBE,EAAU,IAAI,WAAWC,CAAK;AAAA,MAChC;AAAA,IACF,CAAC,GAEM,CAAC,GAAGD,EAAU,QAAA,CAAS,EAAE,IAAI,CAAC,CAACE,GAAOL,CAAO,OAC3C;AAAA,MACL,OAAAK;AAAA,MACA,SAAAL;AAAAA,IAAA,EAEH;AAAA,EACH;AAEA,SAAOA;AACT;AAEO,SAASM,EAA0B,EAAE,SAAAN,GAAS,SAAAO,KAAiC;AACpF,SAAIA,MACFP,IAAUO,IAGLC,EAAQ,MACNT,EAAWC,CAAO,GACxB,CAACA,CAAO,CAAC;AACd;"}
1
+ {"version":3,"file":"useOptions.js","sources":["../../../../../src/molecules/forms/select/hooks/useOptions.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport type { AllSelectProps } from \"../Select.interface\";\n\nexport function mapOptions(options: AllSelectProps[\"options\"]) {\n if (options.find((item) => item.group)) {\n let groupsMap = new Map();\n\n function mapItem(item: AllSelectProps[\"options\"][0]) {\n return {\n ...item,\n customProperties: {\n ...item.data,\n template: item.template\n }\n };\n }\n\n options.forEach((item) => {\n if (item.group) {\n // legacy model group\n const group = groupsMap.get(item.group) || [];\n\n group.push(item);\n\n groupsMap.set(item.group, group);\n } else {\n const group = groupsMap.get(\"default\") || [];\n group.push(mapItem(item));\n groupsMap.set(\"default\", group);\n }\n });\n\n return [...groupsMap.entries()].map(([label, options]) => {\n return {\n label,\n options\n };\n });\n }\n\n return options;\n}\n\nexport function useOptions<Data = string>({ options }: AllSelectProps<Data>) {\n return useMemo(() => {\n return mapOptions(options);\n }, [options]);\n}\n"],"names":["mapOptions","options","item","mapItem","groupsMap","group","label","useOptions","useMemo"],"mappings":";AAIO,SAASA,EAAWC,GAAoC;AAC7D,MAAIA,EAAQ,KAAK,CAACC,MAASA,EAAK,KAAK,GAAG;AAGtC,QAASC,IAAT,SAAiBD,GAAoC;AACnD,aAAO;AAAA,QACL,GAAGA;AAAA,QACH,kBAAkB;AAAA,UAChB,GAAGA,EAAK;AAAA,UACR,UAAUA,EAAK;AAAA,QAAA;AAAA,MACjB;AAAA,IAEJ,GAVIE,wBAAgB,IAAA;AAYpB,WAAAH,EAAQ,QAAQ,CAACC,MAAS;AACxB,UAAIA,EAAK,OAAO;AAEd,cAAMG,IAAQD,EAAU,IAAIF,EAAK,KAAK,KAAK,CAAA;AAE3C,QAAAG,EAAM,KAAKH,CAAI,GAEfE,EAAU,IAAIF,EAAK,OAAOG,CAAK;AAAA,MACjC,OAAO;AACL,cAAMA,IAAQD,EAAU,IAAI,SAAS,KAAK,CAAA;AAC1C,QAAAC,EAAM,KAAKF,EAAQD,CAAI,CAAC,GACxBE,EAAU,IAAI,WAAWC,CAAK;AAAA,MAChC;AAAA,IACF,CAAC,GAEM,CAAC,GAAGD,EAAU,QAAA,CAAS,EAAE,IAAI,CAAC,CAACE,GAAOL,CAAO,OAC3C;AAAA,MACL,OAAAK;AAAA,MACA,SAAAL;AAAAA,IAAA,EAEH;AAAA,EACH;AAEA,SAAOA;AACT;AAEO,SAASM,EAA0B,EAAE,SAAAN,KAAiC;AAC3E,SAAOO,EAAQ,MACNR,EAAWC,CAAO,GACxB,CAACA,CAAO,CAAC;AACd;"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { c as r } from "../../chunks/index.js";
2
+ import { c as r } from "../../chunks/clsx.js";
3
3
  import { Icon as s } from "../../atoms/icon/Icon.js";
4
4
  function f({
5
5
  isActive: i,
@@ -13,10 +13,7 @@ function f({
13
13
  "div",
14
14
  {
15
15
  ...m,
16
- className: r(
17
- "opacity-85 z-20 flex items-center justify-center p-5 absolute top-0 right-0 left-0 bottom-0 bg-white",
18
- n
19
- ),
16
+ className: r("opacity-85 z-20 flex items-center justify-center p-5 absolute top-0 right-0 left-0 bottom-0 bg-white", n),
20
17
  children: /* @__PURE__ */ e(s, { "data-testid": `icon_${t}`, className: r("text-8xl", o), iconset: a, name: t, spinning: !0 })
21
18
  }
22
19
  ) : null;
@@ -1 +1 @@
1
- {"version":3,"file":"Loader.js","sources":["../../../src/molecules/loader/Loader.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport cx from \"classnames\";\nimport { type ComponentPropsWithoutRef, PropsWithChildren } from \"react\";\n\nimport { Icon } from \"../../atoms/icon/Icon.js\";\n\nexport interface LoaderProps extends ComponentPropsWithoutRef<\"div\"> {\n isActive?: boolean;\n color?: string;\n icon?: string;\n iconset?: string;\n}\n\nexport function Loader({\n isActive,\n color = \"text-primary\",\n icon = \"loader\",\n iconset,\n className = \"\",\n ...props\n}: PropsWithChildren<LoaderProps>) {\n if (isActive) {\n return (\n <div\n {...props}\n className={classnames(\n \"opacity-85 z-20 flex items-center justify-center p-5 absolute top-0 right-0 left-0 bottom-0 bg-white\",\n className\n )}\n >\n <Icon data-testid={`icon_${icon}`} className={cx(\"text-8xl\", color)} iconset={iconset} name={icon} spinning={true} />\n </div>\n );\n }\n\n return null;\n}\n"],"names":["Loader","isActive","color","icon","iconset","className","props","jsx","classnames","Icon","cx"],"mappings":";;;AAaO,SAASA,EAAO;AAAA,EACrB,UAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,SAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAmC;AACjC,SAAIL,IAEA,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGD;AAAA,MACJ,WAAWE;AAAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAGF,UAAA,gBAAAE,EAACE,GAAA,EAAK,eAAa,QAAQN,CAAI,IAAI,WAAWO,EAAG,YAAYR,CAAK,GAAG,SAAAE,GAAkB,MAAMD,GAAM,UAAU,GAAA,CAAM;AAAA,IAAA;AAAA,EAAA,IAKlH;AACT;"}
1
+ {"version":3,"file":"Loader.js","sources":["../../../src/molecules/loader/Loader.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { type ComponentPropsWithoutRef, PropsWithChildren } from \"react\";\n\nimport { Icon } from \"../../atoms/icon/Icon.js\";\n\nexport interface LoaderProps extends ComponentPropsWithoutRef<\"div\"> {\n isActive?: boolean;\n color?: string;\n icon?: string;\n iconset?: string;\n}\n\nexport function Loader({\n isActive,\n color = \"text-primary\",\n icon = \"loader\",\n iconset,\n className = \"\",\n ...props\n}: PropsWithChildren<LoaderProps>) {\n if (isActive) {\n return (\n <div\n {...props}\n className={clsx(\"opacity-85 z-20 flex items-center justify-center p-5 absolute top-0 right-0 left-0 bottom-0 bg-white\", className)}\n >\n <Icon data-testid={`icon_${icon}`} className={clsx(\"text-8xl\", color)} iconset={iconset} name={icon} spinning={true} />\n </div>\n );\n }\n\n return null;\n}\n"],"names":["Loader","isActive","color","icon","iconset","className","props","jsx","clsx","Icon"],"mappings":";;;AAYO,SAASA,EAAO;AAAA,EACrB,UAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,SAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAmC;AACjC,SAAIL,IAEA,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGD;AAAA,MACJ,WAAWE,EAAK,wGAAwGH,CAAS;AAAA,MAEjI,UAAA,gBAAAE,EAACE,GAAA,EAAK,eAAa,QAAQN,CAAI,IAAI,WAAWK,EAAK,YAAYN,CAAK,GAAG,SAAAE,GAAkB,MAAMD,GAAM,UAAU,GAAA,CAAM;AAAA,IAAA;AAAA,EAAA,IAKpH;AACT;"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
- import { c as s } from "../../chunks/index.js";
2
+ import { c as o } from "../../chunks/clsx.js";
3
3
  import { useI18n as S } from "../../hooks/useI18n.js";
4
4
  import { registerComponent as z, getComponent as p } from "../../registries/components.js";
5
5
  import { getPageNumbers as E, LEFT_PAGE as G, RIGHT_PAGE as T } from "./utils/getPageNumbers.js";
@@ -23,16 +23,16 @@ function _(r) {
23
23
  // pageNeighbours,
24
24
  totalPages: f
25
25
  }), I = P.map((a) => ({ value: a, label: a })), k = p("Select"), l = p("PaginationButton");
26
- return /* @__PURE__ */ n("nav", { "aria-label": "Page navigation", className: s("pagination-group -mb-3", u), children: [
26
+ return /* @__PURE__ */ n("nav", { "aria-label": "Page navigation", className: o("pagination-group -mb-3", u), children: [
27
27
  /* @__PURE__ */ n("ul", { className: "pagination mb-3 mr-3", children: [
28
- /* @__PURE__ */ e("li", { className: s("page-item", !c && "disabled"), children: /* @__PURE__ */ e(l, { tabIndex: -1, disabled: !c, onClick: () => b(), children: i("Previous") }) }),
28
+ /* @__PURE__ */ e("li", { className: o("page-item", !c && "disabled"), children: /* @__PURE__ */ e(l, { tabIndex: -1, disabled: !c, onClick: () => b(), children: i("Previous") }) }),
29
29
  h.map((a) => {
30
30
  if ([G, T].includes(a))
31
31
  return /* @__PURE__ */ e("li", { className: "page-item", children: /* @__PURE__ */ e(l, { "aria-hidden": "true", children: "..." }) }, a);
32
- const o = a - 1 === t;
33
- return /* @__PURE__ */ e("li", { className: s("page-item", o && "active"), children: /* @__PURE__ */ e(l, { tabIndex: t, active: o, onClick: () => N(a - 1), children: a }) }, a);
32
+ const s = a - 1 === t;
33
+ return /* @__PURE__ */ e("li", { className: o("page-item", s && "active"), children: /* @__PURE__ */ e(l, { tabIndex: t, active: s, onClick: () => N(a - 1), children: a }) }, a);
34
34
  }),
35
- /* @__PURE__ */ e("li", { className: s("page-item", !m && "disabled"), children: /* @__PURE__ */ e(l, { tabIndex: h.length, disabled: !m, onClick: () => x(), children: i("Next") }) })
35
+ /* @__PURE__ */ e("li", { className: o("page-item", !m && "disabled"), children: /* @__PURE__ */ e(l, { tabIndex: h.length, disabled: !m, onClick: () => x(), children: i("Next") }) })
36
36
  ] }),
37
37
  /* @__PURE__ */ n("li", { className: "mb-3 mr-3 flex items-center", children: [
38
38
  /* @__PURE__ */ e(
@@ -43,8 +43,8 @@ function _(r) {
43
43
  options: I,
44
44
  multiple: !1,
45
45
  layout: r.layout,
46
- onChange: (a, o) => {
47
- v(+o);
46
+ onChange: (a, s) => {
47
+ v(+s);
48
48
  }
49
49
  }
50
50
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../../src/molecules/pagination/Pagination.tsx"],"sourcesContent":["import classnames from \"classnames\";\n\nimport { useI18n } from \"../../hooks/useI18n.js\";\nimport type { FormOptions } from \"../../interfaces/index.js\";\nimport { getComponent, registerComponent } from \"../../registries/components\";\nimport type { Select as DefaultSelect } from \"../forms/select/Select\";\nimport type { PaginationButton as DefaultPaginationButton } from \"./PaginationButton\";\nimport { getPageNumbers, LEFT_PAGE, RIGHT_PAGE } from \"./utils/getPageNumbers.js\";\n\nexport interface PaginationProps {\n className?: string;\n pageSizes?: number[];\n canPreviousPage: boolean;\n canNextPage: boolean;\n pageCount: number;\n pageIndex: number;\n pageOptions?: number[];\n pageSize: number;\n rowCount?: number;\n layout?: \"html5\" | \"react\" | \"choicesjs\";\n i18n?: FormOptions[\"i18n\"];\n onPageIndexChange: (pageIndex: number) => void;\n onClickPreviousPage: () => void;\n onClickNextPage: () => void;\n onPageSizeChange: (pageSize: number) => void;\n}\n\nexport function Pagination(props: PaginationProps) {\n const {\n className,\n pageSizes = [10, 25, 50, 100],\n onPageIndexChange,\n canPreviousPage,\n onClickPreviousPage,\n onClickNextPage,\n canNextPage,\n pageCount,\n pageIndex = 1,\n pageOptions,\n pageSize,\n onPageSizeChange,\n rowCount\n } = props;\n const { t } = useI18n(props.i18n);\n\n const pageNumbers = getPageNumbers({\n currentPage: pageIndex,\n // pageNeighbours,\n totalPages: pageCount\n });\n\n const options: any[] = pageSizes.map((value) => ({ value, label: value }));\n const Select = getComponent<typeof DefaultSelect>(\"Select\");\n const PaginationButton = getComponent<typeof DefaultPaginationButton>(\"PaginationButton\");\n\n return (\n <nav aria-label='Page navigation' className={classnames(\"pagination-group -mb-3\", className)}>\n <ul className='pagination mb-3 mr-3'>\n <li className={classnames(\"page-item\", !canPreviousPage && \"disabled\")}>\n <PaginationButton tabIndex={-1} disabled={!canPreviousPage} onClick={() => onClickPreviousPage()}>\n {t(\"Previous\")}\n </PaginationButton>\n </li>\n\n {pageNumbers.map((page) => {\n if ([LEFT_PAGE, RIGHT_PAGE].includes(page)) {\n return (\n <li className='page-item' key={page}>\n <PaginationButton aria-hidden='true'>...</PaginationButton>\n </li>\n );\n }\n\n const active = page - 1 === pageIndex;\n return (\n <li className={classnames(\"page-item\", active && \"active\")} key={page}>\n <PaginationButton tabIndex={pageIndex} active={active} onClick={() => onPageIndexChange(page - 1)}>\n {page}\n </PaginationButton>\n </li>\n );\n })}\n\n <li className={classnames(\"page-item\", !canNextPage && \"disabled\")}>\n <PaginationButton tabIndex={pageNumbers.length} disabled={!canNextPage} onClick={() => onClickNextPage()}>\n {t(\"Next\")}\n </PaginationButton>\n </li>\n </ul>\n\n <li className='mb-3 mr-3 flex items-center'>\n <Select<number>\n name={\"page\"}\n value={pageSize}\n options={options}\n multiple={false}\n layout={props.layout}\n onChange={(_, value) => {\n onPageSizeChange(+value);\n }}\n />\n <span className={\"ml-3\"}>{t(\"items per page\")}</span>\n </li>\n {pageOptions && (\n <li className={\"mb-3 mr-3 flex items-center\"}>\n <span>{t(\"Page\")}&nbsp;</span>\n <strong>\n {pageIndex + 1} of {pageOptions.length}\n </strong>\n </li>\n )}\n {rowCount !== undefined && (\n <li className={\"mb-3 flex items-center\"} data-testid='pagination-total-items'>\n {t(\"Total\")}: <strong className='mx-1'>{new Intl.NumberFormat(undefined).format(rowCount)}</strong> {t(\"items\")}\n </li>\n )}\n </nav>\n );\n}\n\nregisterComponent(\"Pagination\", Pagination);\n"],"names":["Pagination","props","className","pageSizes","onPageIndexChange","canPreviousPage","onClickPreviousPage","onClickNextPage","canNextPage","pageCount","pageIndex","pageOptions","pageSize","onPageSizeChange","rowCount","t","useI18n","pageNumbers","getPageNumbers","options","value","Select","getComponent","PaginationButton","jsxs","classnames","jsx","page","LEFT_PAGE","RIGHT_PAGE","active","_","registerComponent"],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","sources":["../../../src/molecules/pagination/Pagination.tsx"],"sourcesContent":["import clsx from \"clsx\";\n\nimport { useI18n } from \"../../hooks/useI18n.js\";\nimport type { FormOptions } from \"../../interfaces/index.js\";\nimport { getComponent, registerComponent } from \"../../registries/components\";\nimport type { Select as DefaultSelect } from \"../forms/select/Select\";\nimport type { PaginationButton as DefaultPaginationButton } from \"./PaginationButton\";\nimport { getPageNumbers, LEFT_PAGE, RIGHT_PAGE } from \"./utils/getPageNumbers.js\";\n\nexport interface PaginationProps {\n className?: string;\n pageSizes?: number[];\n canPreviousPage: boolean;\n canNextPage: boolean;\n pageCount: number;\n pageIndex: number;\n pageOptions?: number[];\n pageSize: number;\n rowCount?: number;\n layout?: \"html5\" | \"react\" | \"choicesjs\";\n i18n?: FormOptions[\"i18n\"];\n onPageIndexChange: (pageIndex: number) => void;\n onClickPreviousPage: () => void;\n onClickNextPage: () => void;\n onPageSizeChange: (pageSize: number) => void;\n}\n\nexport function Pagination(props: PaginationProps) {\n const {\n className,\n pageSizes = [10, 25, 50, 100],\n onPageIndexChange,\n canPreviousPage,\n onClickPreviousPage,\n onClickNextPage,\n canNextPage,\n pageCount,\n pageIndex = 1,\n pageOptions,\n pageSize,\n onPageSizeChange,\n rowCount\n } = props;\n const { t } = useI18n(props.i18n);\n\n const pageNumbers = getPageNumbers({\n currentPage: pageIndex,\n // pageNeighbours,\n totalPages: pageCount\n });\n\n const options: any[] = pageSizes.map((value) => ({ value, label: value }));\n const Select = getComponent<typeof DefaultSelect>(\"Select\");\n const PaginationButton = getComponent<typeof DefaultPaginationButton>(\"PaginationButton\");\n\n return (\n <nav aria-label='Page navigation' className={clsx(\"pagination-group -mb-3\", className)}>\n <ul className='pagination mb-3 mr-3'>\n <li className={clsx(\"page-item\", !canPreviousPage && \"disabled\")}>\n <PaginationButton tabIndex={-1} disabled={!canPreviousPage} onClick={() => onClickPreviousPage()}>\n {t(\"Previous\")}\n </PaginationButton>\n </li>\n\n {pageNumbers.map((page) => {\n if ([LEFT_PAGE, RIGHT_PAGE].includes(page)) {\n return (\n <li className='page-item' key={page}>\n <PaginationButton aria-hidden='true'>...</PaginationButton>\n </li>\n );\n }\n\n const active = page - 1 === pageIndex;\n return (\n <li className={clsx(\"page-item\", active && \"active\")} key={page}>\n <PaginationButton tabIndex={pageIndex} active={active} onClick={() => onPageIndexChange(page - 1)}>\n {page}\n </PaginationButton>\n </li>\n );\n })}\n\n <li className={clsx(\"page-item\", !canNextPage && \"disabled\")}>\n <PaginationButton tabIndex={pageNumbers.length} disabled={!canNextPage} onClick={() => onClickNextPage()}>\n {t(\"Next\")}\n </PaginationButton>\n </li>\n </ul>\n\n <li className='mb-3 mr-3 flex items-center'>\n <Select<number>\n name={\"page\"}\n value={pageSize}\n options={options}\n multiple={false}\n layout={props.layout}\n onChange={(_, value) => {\n onPageSizeChange(+value);\n }}\n />\n <span className={\"ml-3\"}>{t(\"items per page\")}</span>\n </li>\n {pageOptions && (\n <li className={\"mb-3 mr-3 flex items-center\"}>\n <span>{t(\"Page\")}&nbsp;</span>\n <strong>\n {pageIndex + 1} of {pageOptions.length}\n </strong>\n </li>\n )}\n {rowCount !== undefined && (\n <li className={\"mb-3 flex items-center\"} data-testid='pagination-total-items'>\n {t(\"Total\")}: <strong className='mx-1'>{new Intl.NumberFormat(undefined).format(rowCount)}</strong> {t(\"items\")}\n </li>\n )}\n </nav>\n );\n}\n\nregisterComponent(\"Pagination\", Pagination);\n"],"names":["Pagination","props","className","pageSizes","onPageIndexChange","canPreviousPage","onClickPreviousPage","onClickNextPage","canNextPage","pageCount","pageIndex","pageOptions","pageSize","onPageSizeChange","rowCount","t","useI18n","pageNumbers","getPageNumbers","options","value","Select","getComponent","PaginationButton","jsxs","clsx","jsx","page","LEFT_PAGE","RIGHT_PAGE","active","_","registerComponent"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import { c as m } from "../../chunks/index.js";
3
- import { registerComponent as s } from "../../registries/components.js";
2
+ import { c as s } from "../../chunks/clsx.js";
3
+ import { registerComponent as m } from "../../registries/components.js";
4
4
  function c(t) {
5
5
  const { component: n = "button", children: a, disabled: o, active: i, ...e } = t;
6
6
  return /* @__PURE__ */ r(
@@ -9,12 +9,12 @@ function c(t) {
9
9
  ...e,
10
10
  "data-testid": "pagination-button",
11
11
  disabled: o,
12
- className: m("page-link", o ? "disabled" : "", "", t.className),
12
+ className: s("page-link", o ? "disabled" : "", "", t.className),
13
13
  children: a
14
14
  }
15
15
  );
16
16
  }
17
- s("PaginationButton", c);
17
+ m("PaginationButton", c);
18
18
  export {
19
19
  c as PaginationButton
20
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"PaginationButton.js","sources":["../../../src/molecules/pagination/PaginationButton.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport { PropsWithChildren } from \"react\";\n\nimport { registerComponent } from \"../../registries/components\";\n\nexport function PaginationButton(\n props: PropsWithChildren<\n {\n component?: any;\n disabled?: boolean;\n className?: string;\n active?: boolean;\n } & Record<string, any>\n >\n) {\n const { component: Component = \"button\", children, disabled, active, ...otherProps } = props;\n\n return (\n <Component\n {...otherProps}\n data-testid='pagination-button'\n disabled={disabled}\n className={classnames(\"page-link\", disabled ? \"disabled\" : \"\", active ? \"\" : \"\", props.className)}\n >\n {children}\n </Component>\n );\n}\n\nregisterComponent(\"PaginationButton\", PaginationButton);\n"],"names":["PaginationButton","props","Component","children","disabled","active","otherProps","jsx","classnames","registerComponent"],"mappings":";;;AAKO,SAASA,EACdC,GAQA;AACA,QAAM,EAAE,WAAWC,IAAY,UAAU,UAAAC,GAAU,UAAAC,GAAU,QAAAC,GAAQ,GAAGC,EAAA,IAAeL;AAEvF,SACE,gBAAAM;AAAA,IAACL;AAAA,IAAA;AAAA,MACE,GAAGI;AAAA,MACJ,eAAY;AAAA,MACZ,UAAAF;AAAA,MACA,WAAWI,EAAW,aAAaJ,IAAW,aAAa,IAAa,IAASH,EAAM,SAAS;AAAA,MAE/F,UAAAE;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAM,EAAkB,oBAAoBT,CAAgB;"}
1
+ {"version":3,"file":"PaginationButton.js","sources":["../../../src/molecules/pagination/PaginationButton.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { PropsWithChildren } from \"react\";\n\nimport { registerComponent } from \"../../registries/components\";\n\nexport function PaginationButton(\n props: PropsWithChildren<\n {\n component?: any;\n disabled?: boolean;\n className?: string;\n active?: boolean;\n } & Record<string, any>\n >\n) {\n const { component: Component = \"button\", children, disabled, active, ...otherProps } = props;\n\n return (\n <Component\n {...otherProps}\n data-testid='pagination-button'\n disabled={disabled}\n className={clsx(\"page-link\", disabled ? \"disabled\" : \"\", active ? \"\" : \"\", props.className)}\n >\n {children}\n </Component>\n );\n}\n\nregisterComponent(\"PaginationButton\", PaginationButton);\n"],"names":["PaginationButton","props","Component","children","disabled","active","otherProps","jsx","clsx","registerComponent"],"mappings":";;;AAKO,SAASA,EACdC,GAQA;AACA,QAAM,EAAE,WAAWC,IAAY,UAAU,UAAAC,GAAU,UAAAC,GAAU,QAAAC,GAAQ,GAAGC,EAAA,IAAeL;AAEvF,SACE,gBAAAM;AAAA,IAACL;AAAA,IAAA;AAAA,MACE,GAAGI;AAAA,MACJ,eAAY;AAAA,MACZ,UAAAF;AAAA,MACA,WAAWI,EAAK,aAAaJ,IAAW,aAAa,IAAa,IAASH,EAAM,SAAS;AAAA,MAEzF,UAAAE;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAM,EAAkB,oBAAoBT,CAAgB;"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs as l, jsx as n } from "react/jsx-runtime";
2
2
  import { createElement as p } from "react";
3
3
  import { flexRender as b } from "@tanstack/react-table";
4
- import { c as x } from "../../chunks/index.js";
4
+ import { c as x } from "../../chunks/clsx.js";
5
5
  import { getComponent as r } from "../../registries/components.js";
6
6
  import { useTable as f } from "./hooks/useTable.js";
7
7
  function w({
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../../src/molecules/table/Table.tsx"],"sourcesContent":["import { flexRender } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { PropsWithChildren } from \"react\";\n\nimport type { JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport { getComponent } from \"../../registries/components\";\nimport type { Pagination as DefaultPagination } from \"../pagination/Pagination\";\nimport type { DefaultCellFooter } from \"./components/DefaultCellFooter\";\nimport type { DefaultCellHeader } from \"./components/DefaultCellHeader\";\nimport { useTable, UseTableProps } from \"./hooks/useTable\";\n\nexport interface TableProps<Data extends object = JSONRecord> extends UseTableProps<Data> {\n className?: string;\n enableFooter?: boolean;\n enablePagination?: boolean;\n}\n\nexport function Table<Data extends object = JSONRecord>({\n className,\n enableFooter,\n enablePagination = true,\n children,\n ...props\n}: PropsWithChildren<TableProps<Data>>) {\n const { tableInstance, i18n } = useTable<Data>(props);\n const CellHeader = getComponent<typeof DefaultCellHeader>(\"CellHeader\");\n const CellFooter = getComponent<typeof DefaultCellFooter>(\"CellFooter\");\n const Pagination = getComponent<typeof DefaultPagination>(\"Pagination\");\n\n const { pagination } = tableInstance.getState();\n\n return (\n <div className={cx(\"table-group\", className)}>\n <div className='table-group-body'>\n <table className='table table-striped table-hover'>\n <thead>\n {tableInstance.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const sort = header.column.getIsSorted();\n return (\n <th\n data-testid={`head-cell-${header.id}`}\n key={header.id}\n aria-sort={sort ? (sort === \"asc\" ? \"ascending\" : \"descending\") : \"none\"}\n >\n {header.isPlaceholder ? null : <CellHeader header={header} i18n={i18n} />}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody>\n {tableInstance.getRowModel().rows.map((row) => {\n return (\n <tr key={row.id} data-testid={`body-row-${row.id}`}>\n {row\n .getVisibleCells()\n .filter((cell) => !cell.column.columnDef.meta?.hidden)\n .map((cell) => {\n return (\n <td\n onClick={() => props.onClick?.(cell.row.original, { action: \"row\" })}\n {...cell.column.columnDef?.meta?.cellProps}\n key={cell.id}\n data-testid={`body-cell-${cell.id}`}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n {enableFooter && (\n <tfoot>\n {tableInstance.getFooterGroups().map((footerGroup) => (\n <tr key={footerGroup.id}>\n {footerGroup.headers.map((header) => (\n <th key={header.id}>{header.isPlaceholder ? null : <CellFooter header={header} i18n={i18n} />}</th>\n ))}\n </tr>\n ))}\n </tfoot>\n )}\n </table>\n </div>\n <div className='table-group-footer'>\n {props.data.length && pagination && enablePagination ? (\n <Pagination\n className={\"flex-1\"}\n canNextPage={tableInstance.getCanNextPage()}\n canPreviousPage={tableInstance.getCanPreviousPage()}\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n pageSizes={props.pageSizes}\n i18n={props.i18n}\n pageCount={tableInstance.getPageCount()}\n rowCount={props.rowCount}\n onPageIndexChange={(page) => tableInstance.setPageIndex(page)}\n onClickPreviousPage={() => tableInstance.previousPage()}\n onClickNextPage={() => tableInstance.nextPage()}\n onPageSizeChange={(pageSize) => tableInstance.setPageSize(pageSize)}\n />\n ) : null}\n <div>{children}</div>\n </div>\n </div>\n );\n}\n"],"names":["Table","className","enableFooter","enablePagination","children","props","tableInstance","i18n","useTable","CellHeader","getComponent","CellFooter","Pagination","pagination","cx","jsx","jsxs","headerGroup","header","sort","row","cell","createElement","flexRender","footerGroup","page","pageSize"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","sources":["../../../src/molecules/table/Table.tsx"],"sourcesContent":["import { flexRender } from \"@tanstack/react-table\";\nimport clsx from \"clsx\";\nimport { PropsWithChildren } from \"react\";\n\nimport type { JSONRecord } from \"../../interfaces/JSONRecord.js\";\nimport { getComponent } from \"../../registries/components\";\nimport type { Pagination as DefaultPagination } from \"../pagination/Pagination\";\nimport type { DefaultCellFooter } from \"./components/DefaultCellFooter\";\nimport type { DefaultCellHeader } from \"./components/DefaultCellHeader\";\nimport { useTable, UseTableProps } from \"./hooks/useTable\";\n\nexport interface TableProps<Data extends object = JSONRecord> extends UseTableProps<Data> {\n className?: string;\n enableFooter?: boolean;\n enablePagination?: boolean;\n}\n\nexport function Table<Data extends object = JSONRecord>({\n className,\n enableFooter,\n enablePagination = true,\n children,\n ...props\n}: PropsWithChildren<TableProps<Data>>) {\n const { tableInstance, i18n } = useTable<Data>(props);\n const CellHeader = getComponent<typeof DefaultCellHeader>(\"CellHeader\");\n const CellFooter = getComponent<typeof DefaultCellFooter>(\"CellFooter\");\n const Pagination = getComponent<typeof DefaultPagination>(\"Pagination\");\n\n const { pagination } = tableInstance.getState();\n\n return (\n <div className={clsx(\"table-group\", className)}>\n <div className='table-group-body'>\n <table className='table table-striped table-hover'>\n <thead>\n {tableInstance.getHeaderGroups().map((headerGroup) => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const sort = header.column.getIsSorted();\n return (\n <th\n data-testid={`head-cell-${header.id}`}\n key={header.id}\n aria-sort={sort ? (sort === \"asc\" ? \"ascending\" : \"descending\") : \"none\"}\n >\n {header.isPlaceholder ? null : <CellHeader header={header} i18n={i18n} />}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n <tbody>\n {tableInstance.getRowModel().rows.map((row) => {\n return (\n <tr key={row.id} data-testid={`body-row-${row.id}`}>\n {row\n .getVisibleCells()\n .filter((cell) => !cell.column.columnDef.meta?.hidden)\n .map((cell) => {\n return (\n <td\n onClick={() => props.onClick?.(cell.row.original, { action: \"row\" })}\n {...cell.column.columnDef?.meta?.cellProps}\n key={cell.id}\n data-testid={`body-cell-${cell.id}`}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n {enableFooter && (\n <tfoot>\n {tableInstance.getFooterGroups().map((footerGroup) => (\n <tr key={footerGroup.id}>\n {footerGroup.headers.map((header) => (\n <th key={header.id}>{header.isPlaceholder ? null : <CellFooter header={header} i18n={i18n} />}</th>\n ))}\n </tr>\n ))}\n </tfoot>\n )}\n </table>\n </div>\n <div className='table-group-footer'>\n {props.data.length && pagination && enablePagination ? (\n <Pagination\n className={\"flex-1\"}\n canNextPage={tableInstance.getCanNextPage()}\n canPreviousPage={tableInstance.getCanPreviousPage()}\n pageIndex={pagination.pageIndex}\n pageSize={pagination.pageSize}\n pageSizes={props.pageSizes}\n i18n={props.i18n}\n pageCount={tableInstance.getPageCount()}\n rowCount={props.rowCount}\n onPageIndexChange={(page) => tableInstance.setPageIndex(page)}\n onClickPreviousPage={() => tableInstance.previousPage()}\n onClickNextPage={() => tableInstance.nextPage()}\n onPageSizeChange={(pageSize) => tableInstance.setPageSize(pageSize)}\n />\n ) : null}\n <div>{children}</div>\n </div>\n </div>\n );\n}\n"],"names":["Table","className","enableFooter","enablePagination","children","props","tableInstance","i18n","useTable","CellHeader","getComponent","CellFooter","Pagination","pagination","clsx","jsx","jsxs","headerGroup","header","sort","row","cell","createElement","flexRender","footerGroup","page","pageSize"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs as o, jsx as r } from "react/jsx-runtime";
2
2
  import { flexRender as d } from "@tanstack/react-table";
3
- import { c as t } from "../../../chunks/index.js";
3
+ import { c as t } from "../../../chunks/clsx.js";
4
4
  import { registerComponent as g, getComponent as n } from "../../../registries/components.js";
5
5
  function u(l) {
6
6
  const { header: e, i18n: c } = l, a = n("ArrowSort"), i = n("Filter"), m = e.column.getCanSort(), s = e.column.getCanFilter();
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultCellHeader.js","sources":["../../../../src/molecules/table/components/DefaultCellHeader.tsx"],"sourcesContent":["import { flexRender, type Header } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\n\nimport { getComponent, registerComponent } from \"../../../registries/components\";\nimport type { DefaultArrowSort } from \"./DefaultArrowSort\";\nimport type { DefaultFilter } from \"./DefaultFilter\";\n\nexport interface DefaultCellHeaderProps<Data = any> {\n header: Header<Data, unknown>;\n i18n?: (f: string) => string;\n}\n\nexport function DefaultCellHeader<Data = any>(props: DefaultCellHeaderProps<Data>) {\n const { header, i18n } = props;\n\n const ArrowSort = getComponent<typeof DefaultArrowSort>(\"ArrowSort\");\n const Filter = getComponent<typeof DefaultFilter>(\"Filter\");\n const canSort = header.column.getCanSort();\n const canFilter = header.column.getCanFilter();\n\n return (\n <div className={cx(\"table-cell-header\", {})}>\n <div\n className={cx(\"table-cell-header__label\", {\n \"cursor-pointer select-none\": header.column.getCanSort()\n })}\n {...(canSort\n ? {\n onClick: header.column.getToggleSortingHandler()\n }\n : {})}\n >\n <span>{flexRender(header.column.columnDef.header, header.getContext())}</span>\n\n <ArrowSort header={header} />\n </div>\n {canFilter && <Filter header={header} i18n={i18n} />}\n </div>\n );\n}\n\nregisterComponent(\"CellHeader\", DefaultCellHeader);\n"],"names":["DefaultCellHeader","props","header","i18n","ArrowSort","getComponent","Filter","canSort","canFilter","cx","jsxs","jsx","registerComponent"],"mappings":";;;;AAYO,SAASA,EAA8BC,GAAqC;AACjF,QAAM,EAAE,QAAAC,GAAQ,MAAAC,EAAA,IAASF,GAEnBG,IAAYC,EAAsC,WAAW,GAC7DC,IAASD,EAAmC,QAAQ,GACpDE,IAAUL,EAAO,OAAO,WAAA,GACxBM,IAAYN,EAAO,OAAO,aAAA;AAEhC,2BACG,OAAA,EAAI,WAAWO,EAAG,qBAAqB,CAAA,CAAE,GACxC,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD,EAAG,4BAA4B;AAAA,UACxC,8BAA8BP,EAAO,OAAO,WAAA;AAAA,QAAW,CACxD;AAAA,QACA,GAAIK,IACD;AAAA,UACE,SAASL,EAAO,OAAO,wBAAA;AAAA,QAAwB,IAEjD,CAAA;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAS,EAAC,QAAA,EAAM,YAAWT,EAAO,OAAO,UAAU,QAAQA,EAAO,WAAA,CAAY,EAAA,CAAE;AAAA,UAEvE,gBAAAS,EAACP,KAAU,QAAAF,EAAA,CAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAE5BM,KAAa,gBAAAG,EAACL,GAAA,EAAO,QAAAJ,GAAgB,MAAAC,EAAA,CAAY;AAAA,EAAA,GACpD;AAEJ;AAEAS,EAAkB,cAAcZ,CAAiB;"}
1
+ {"version":3,"file":"DefaultCellHeader.js","sources":["../../../../src/molecules/table/components/DefaultCellHeader.tsx"],"sourcesContent":["import { flexRender, type Header } from \"@tanstack/react-table\";\nimport clsx from \"clsx\";\n\nimport { getComponent, registerComponent } from \"../../../registries/components\";\nimport type { DefaultArrowSort } from \"./DefaultArrowSort\";\nimport type { DefaultFilter } from \"./DefaultFilter\";\n\nexport interface DefaultCellHeaderProps<Data = any> {\n header: Header<Data, unknown>;\n i18n?: (f: string) => string;\n}\n\nexport function DefaultCellHeader<Data = any>(props: DefaultCellHeaderProps<Data>) {\n const { header, i18n } = props;\n\n const ArrowSort = getComponent<typeof DefaultArrowSort>(\"ArrowSort\");\n const Filter = getComponent<typeof DefaultFilter>(\"Filter\");\n const canSort = header.column.getCanSort();\n const canFilter = header.column.getCanFilter();\n\n return (\n <div className={clsx(\"table-cell-header\", {})}>\n <div\n className={clsx(\"table-cell-header__label\", {\n \"cursor-pointer select-none\": header.column.getCanSort()\n })}\n {...(canSort\n ? {\n onClick: header.column.getToggleSortingHandler()\n }\n : {})}\n >\n <span>{flexRender(header.column.columnDef.header, header.getContext())}</span>\n\n <ArrowSort header={header} />\n </div>\n {canFilter && <Filter header={header} i18n={i18n} />}\n </div>\n );\n}\n\nregisterComponent(\"CellHeader\", DefaultCellHeader);\n"],"names":["DefaultCellHeader","props","header","i18n","ArrowSort","getComponent","Filter","canSort","canFilter","clsx","jsxs","jsx","registerComponent"],"mappings":";;;;AAYO,SAASA,EAA8BC,GAAqC;AACjF,QAAM,EAAE,QAAAC,GAAQ,MAAAC,EAAA,IAASF,GAEnBG,IAAYC,EAAsC,WAAW,GAC7DC,IAASD,EAAmC,QAAQ,GACpDE,IAAUL,EAAO,OAAO,WAAA,GACxBM,IAAYN,EAAO,OAAO,aAAA;AAEhC,2BACG,OAAA,EAAI,WAAWO,EAAK,qBAAqB,CAAA,CAAE,GAC1C,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWD,EAAK,4BAA4B;AAAA,UAC1C,8BAA8BP,EAAO,OAAO,WAAA;AAAA,QAAW,CACxD;AAAA,QACA,GAAIK,IACD;AAAA,UACE,SAASL,EAAO,OAAO,wBAAA;AAAA,QAAwB,IAEjD,CAAA;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAS,EAAC,QAAA,EAAM,YAAWT,EAAO,OAAO,UAAU,QAAQA,EAAO,WAAA,CAAY,EAAA,CAAE;AAAA,UAEvE,gBAAAS,EAACP,KAAU,QAAAF,EAAA,CAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAE5BM,KAAa,gBAAAG,EAACL,GAAA,EAAO,QAAAJ,GAAgB,MAAAC,EAAA,CAAY;AAAA,EAAA,GACpD;AAEJ;AAEAS,EAAkB,cAAcZ,CAAiB;"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as n, jsx as i, Fragment as x } from "react/jsx-runtime";
2
- import { c as d } from "../../../chunks/index.js";
2
+ import { c as d } from "../../../chunks/clsx.js";
3
3
  import { registerComponent as C } from "../../../registries/components.js";
4
4
  import { iconClass as N } from "../../../utils/iconClass.js";
5
5
  import { stopPropagationWrapper as O } from "../../../utils/stopPropagationWrapper.js";
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultOperationButton.js","sources":["../../../../src/molecules/table/components/DefaultOperationButton.tsx"],"sourcesContent":["import { CellContext } from \"@tanstack/react-table\";\nimport cx from \"classnames\";\nimport { HTMLAttributes } from \"react\";\n\nimport { type CellMetadata, Operation } from \"../../../interfaces\";\nimport type { JSONRecord } from \"../../../interfaces/JSONRecord.js\";\nimport { registerComponent } from \"../../../registries/components\";\nimport { iconClass } from \"../../../utils/iconClass\";\nimport { stopPropagationWrapper } from \"../../../utils/stopPropagationWrapper\";\n\nexport interface OperationButtonProps<Data extends object = JSONRecord> extends Omit<HTMLAttributes<HTMLButtonElement>, \"onClick\"> {\n operation: Operation<Data>;\n info: CellContext<Data, unknown>;\n metadata?: CellMetadata;\n onClick: () => void;\n i18n?: (i18n: string) => string;\n}\n\nexport function DefaultOperationButton<Data extends object = JSONRecord>(props: OperationButtonProps<Data>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { i18n = (f: string) => f, onClick, operation, info, ...extraProps } = props;\n const { className = \"btn\", buttonSize = \"xs\", buttonType = \"primary\", buttonOutline, action, title = \"\", icon = \"\" } = operation;\n\n return (\n <button\n {...extraProps}\n aria-label={\"Operation button: \" + (title || action)}\n className={cx(className, [\"btn\", buttonOutline && \"outline\", buttonType].filter(Boolean).join(\"-\"), `btn-${buttonSize}`)}\n onClick={stopPropagationWrapper(() => onClick())}\n >\n {icon ? (\n <>\n <i className={iconClass(undefined, icon)} /> {title && \" \"}\n </>\n ) : null}\n {title && <span className={icon && title ? \"ml-1\" : \"\"}>{i18n(title)}</span>}\n </button>\n );\n}\n\nregisterComponent(\"OperationButton\", DefaultOperationButton);\n"],"names":["DefaultOperationButton","props","i18n","onClick","operation","info","extraProps","className","buttonSize","buttonType","buttonOutline","action","title","icon","jsxs","cx","stopPropagationWrapper","Fragment","jsx","iconClass","registerComponent"],"mappings":";;;;;AAkBO,SAASA,EAAyDC,GAAmC;AAE1G,QAAM,EAAE,MAAAC,IAAO,CAAC,MAAc,GAAG,SAAAC,GAAS,WAAAC,GAAW,MAAAC,GAAM,GAAGC,EAAA,IAAeL,GACvE,EAAE,WAAAM,IAAY,OAAO,YAAAC,IAAa,MAAM,YAAAC,IAAa,WAAW,eAAAC,GAAe,QAAAC,GAAQ,OAAAC,IAAQ,IAAI,MAAAC,IAAO,OAAOT;AAEvH,SACE,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,cAAY,wBAAwBM,KAASD;AAAA,MAC7C,WAAWI,EAAGR,GAAW,CAAC,OAAOG,KAAiB,WAAWD,CAAU,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,OAAOD,CAAU,EAAE;AAAA,MACvH,SAASQ,EAAuB,MAAMb,GAAS;AAAA,MAE9C,UAAA;AAAA,QAAAU,IACC,gBAAAC,EAAAG,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAC,EAAC,KAAA,EAAE,WAAWC,EAAU,QAAWN,CAAI,GAAG;AAAA,UAAE;AAAA,UAAED,KAAS;AAAA,QAAA,EAAA,CACzD,IACE;AAAA,QACHA,KAAS,gBAAAM,EAAC,QAAA,EAAK,WAAWL,KAAQD,IAAQ,SAAS,IAAK,UAAAV,EAAKU,CAAK,EAAA,CAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3E;AAEAQ,EAAkB,mBAAmBpB,CAAsB;"}
1
+ {"version":3,"file":"DefaultOperationButton.js","sources":["../../../../src/molecules/table/components/DefaultOperationButton.tsx"],"sourcesContent":["import { CellContext } from \"@tanstack/react-table\";\nimport cx from \"clsx\";\nimport { HTMLAttributes } from \"react\";\n\nimport { type CellMetadata, Operation } from \"../../../interfaces\";\nimport type { JSONRecord } from \"../../../interfaces/JSONRecord.js\";\nimport { registerComponent } from \"../../../registries/components\";\nimport { iconClass } from \"../../../utils/iconClass\";\nimport { stopPropagationWrapper } from \"../../../utils/stopPropagationWrapper\";\n\nexport interface OperationButtonProps<Data extends object = JSONRecord> extends Omit<HTMLAttributes<HTMLButtonElement>, \"onClick\"> {\n operation: Operation<Data>;\n info: CellContext<Data, unknown>;\n metadata?: CellMetadata;\n onClick: () => void;\n i18n?: (i18n: string) => string;\n}\n\nexport function DefaultOperationButton<Data extends object = JSONRecord>(props: OperationButtonProps<Data>) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { i18n = (f: string) => f, onClick, operation, info, ...extraProps } = props;\n const { className = \"btn\", buttonSize = \"xs\", buttonType = \"primary\", buttonOutline, action, title = \"\", icon = \"\" } = operation;\n\n return (\n <button\n {...extraProps}\n aria-label={\"Operation button: \" + (title || action)}\n className={cx(className, [\"btn\", buttonOutline && \"outline\", buttonType].filter(Boolean).join(\"-\"), `btn-${buttonSize}`)}\n onClick={stopPropagationWrapper(() => onClick())}\n >\n {icon ? (\n <>\n <i className={iconClass(undefined, icon)} /> {title && \" \"}\n </>\n ) : null}\n {title && <span className={icon && title ? \"ml-1\" : \"\"}>{i18n(title)}</span>}\n </button>\n );\n}\n\nregisterComponent(\"OperationButton\", DefaultOperationButton);\n"],"names":["DefaultOperationButton","props","i18n","onClick","operation","info","extraProps","className","buttonSize","buttonType","buttonOutline","action","title","icon","jsxs","cx","stopPropagationWrapper","Fragment","jsx","iconClass","registerComponent"],"mappings":";;;;;AAkBO,SAASA,EAAyDC,GAAmC;AAE1G,QAAM,EAAE,MAAAC,IAAO,CAAC,MAAc,GAAG,SAAAC,GAAS,WAAAC,GAAW,MAAAC,GAAM,GAAGC,EAAA,IAAeL,GACvE,EAAE,WAAAM,IAAY,OAAO,YAAAC,IAAa,MAAM,YAAAC,IAAa,WAAW,eAAAC,GAAe,QAAAC,GAAQ,OAAAC,IAAQ,IAAI,MAAAC,IAAO,OAAOT;AAEvH,SACE,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGR;AAAA,MACJ,cAAY,wBAAwBM,KAASD;AAAA,MAC7C,WAAWI,EAAGR,GAAW,CAAC,OAAOG,KAAiB,WAAWD,CAAU,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,OAAOD,CAAU,EAAE;AAAA,MACvH,SAASQ,EAAuB,MAAMb,GAAS;AAAA,MAE9C,UAAA;AAAA,QAAAU,IACC,gBAAAC,EAAAG,GAAA,EACE,UAAA;AAAA,UAAA,gBAAAC,EAAC,KAAA,EAAE,WAAWC,EAAU,QAAWN,CAAI,GAAG;AAAA,UAAE;AAAA,UAAED,KAAS;AAAA,QAAA,EAAA,CACzD,IACE;AAAA,QACHA,KAAS,gBAAAM,EAAC,QAAA,EAAK,WAAWL,KAAQD,IAAQ,SAAS,IAAK,UAAAV,EAAKU,CAAK,EAAA,CAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3E;AAEAQ,EAAkB,mBAAmBpB,CAAsB;"}
@@ -3,7 +3,7 @@ import { SelectOptionProps, SelectProps } from '../../forms/select/Select.interf
3
3
  import { FilterProps } from '../components/DefaultFilter';
4
4
  export type FilterVariants = "text" | "range" | "select" | "boolean";
5
5
  export interface FilterBaseOptions extends Record<string, unknown> {
6
- variant: string;
6
+ variant: FilterVariants;
7
7
  }
8
8
  export interface FilterTextOptions extends FilterBaseOptions {
9
9
  variant: "text";
@@ -18,7 +18,7 @@ export interface FilterRangeOptions extends FilterBaseOptions {
18
18
  }
19
19
  export interface FilterSelectOptions<Data extends RowData = any> extends FilterBaseOptions, Omit<SelectProps<string>, "options"> {
20
20
  variant: "select";
21
- options?: SelectOptionProps<string>[] | ((props: FilterProps<Data, FilterSelectOptions>) => SelectOptionProps<string>)[];
21
+ options?: SelectOptionProps<string>[] | ((props: FilterProps<Data, FilterSelectOptions>) => SelectOptionProps<string>[]);
22
22
  }
23
23
  export interface FilterBooleanOptions extends FilterBaseOptions {
24
24
  variant: "boolean";
@@ -1,4 +1,8 @@
1
1
  import { SelectOptionProps } from '../../../molecules/forms/select/Select.interface';
2
- import { FilterProps } from '../components/DefaultFilter';
2
+ import { DefaultFilterProps } from '../components/DefaultFilter';
3
3
  import { FilterSelectOptions } from '../filters/Filters';
4
- export declare function useUniqValues<Data = any>({ header, options }: FilterProps<Data, FilterSelectOptions>): SelectOptionProps[];
4
+ type UseUniqValuesProps<Data = any> = DefaultFilterProps<Data> & {
5
+ options?: FilterSelectOptions<Data>;
6
+ };
7
+ export declare function useUniqValues<Data = any>({ header, options }: UseUniqValuesProps<Data>): SelectOptionProps[];
8
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"useUniqValues.js","sources":["../../../../src/molecules/table/hooks/useUniqValues.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { SelectOptionProps } from \"../../../molecules/forms/select/Select.interface\";\nimport type { FilterProps } from \"../components/DefaultFilter\";\nimport { FilterSelectOptions } from \"../filters/Filters\";\n\nexport function useUniqValues<Data = any>({ header, options }: FilterProps<Data, FilterSelectOptions>): SelectOptionProps[] {\n return useMemo(() => {\n const providedOptions = options?.options;\n\n if (providedOptions) {\n if (typeof providedOptions === \"function\") {\n return providedOptions({ header, options: options as FilterSelectOptions });\n }\n\n return providedOptions;\n }\n\n switch (header.column.columnDef.meta?.filter?.variant) {\n case \"boolean\":\n return [\n { label: header.column.columnDef.meta?.labels?.[\"yes\"] || \"Yes\", value: \"true\" },\n {\n label: header.column.columnDef.meta?.labels?.[\"no\"] || header.column.columnDef.meta?.labels?.[\"No\"] || \"No\",\n value: \"false\"\n }\n ];\n\n default:\n return Array.from(header.column.getFacetedUniqueValues().keys())\n .flat()\n .filter((value) => value !== undefined && value !== null)\n .map((value) => String(value))\n .sort()\n .slice(0, 5000)\n .map((value) => ({\n label: value,\n value\n }));\n }\n }, [header, options]);\n}\n"],"names":["useUniqValues","header","options","useMemo","providedOptions","value"],"mappings":";AAMO,SAASA,EAA0B,EAAE,QAAAC,GAAQ,SAAAC,KAAwE;AAC1H,SAAOC,EAAQ,MAAM;AACnB,UAAMC,IAAkBF,GAAS;AAEjC,QAAIE;AACF,aAAI,OAAOA,KAAoB,aACtBA,EAAgB,EAAE,QAAAH,GAAQ,SAAAC,GAAyC,IAGrEE;AAGT,YAAQH,EAAO,OAAO,UAAU,MAAM,QAAQ,SAAA;AAAA,MAC5C,KAAK;AACH,eAAO;AAAA,UACL,EAAE,OAAOA,EAAO,OAAO,UAAU,MAAM,QAAS,OAAU,OAAO,OAAO,OAAA;AAAA,UACxE;AAAA,YACE,OAAOA,EAAO,OAAO,UAAU,MAAM,QAAS,MAASA,EAAO,OAAO,UAAU,MAAM,QAAS,MAAS;AAAA,YACvG,OAAO;AAAA,UAAA;AAAA,QACT;AAAA,MAGJ;AACE,eAAO,MAAM,KAAKA,EAAO,OAAO,yBAAyB,KAAA,CAAM,EAC5D,OACA,OAAO,CAACI,MAAiCA,KAAU,IAAI,EACvD,IAAI,CAACA,MAAU,OAAOA,CAAK,CAAC,EAC5B,KAAA,EACA,MAAM,GAAG,GAAI,EACb,IAAI,CAACA,OAAW;AAAA,UACf,OAAOA;AAAA,UACP,OAAAA;AAAA,QAAA,EACA;AAAA,IAAA;AAAA,EAEV,GAAG,CAACJ,GAAQC,CAAO,CAAC;AACtB;"}
1
+ {"version":3,"file":"useUniqValues.js","sources":["../../../../src/molecules/table/hooks/useUniqValues.tsx"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport { SelectOptionProps } from \"../../../molecules/forms/select/Select.interface\";\nimport type { DefaultFilterProps } from \"../components/DefaultFilter\";\nimport { FilterSelectOptions } from \"../filters/Filters\";\n\ntype UseUniqValuesProps<Data = any> = DefaultFilterProps<Data> & {\n options?: FilterSelectOptions<Data>;\n};\n\nexport function useUniqValues<Data = any>({ header, options }: UseUniqValuesProps<Data>): SelectOptionProps[] {\n return useMemo(() => {\n const providedOptions = options?.options;\n\n if (providedOptions) {\n if (typeof providedOptions === \"function\") {\n return providedOptions({ header, options: options as FilterSelectOptions<Data> });\n }\n\n return providedOptions;\n }\n\n switch (header.column.columnDef.meta?.filter?.variant) {\n case \"boolean\":\n return [\n { label: header.column.columnDef.meta?.labels?.[\"yes\"] || \"Yes\", value: \"true\" },\n {\n label: header.column.columnDef.meta?.labels?.[\"no\"] || header.column.columnDef.meta?.labels?.[\"No\"] || \"No\",\n value: \"false\"\n }\n ];\n\n default:\n return Array.from(header.column.getFacetedUniqueValues().keys())\n .flat()\n .filter((value) => value !== undefined && value !== null)\n .map((value) => String(value))\n .sort()\n .slice(0, 5000)\n .map((value) => ({\n label: value,\n value\n }));\n }\n }, [header, options]);\n}\n"],"names":["useUniqValues","header","options","useMemo","providedOptions","value"],"mappings":";AAUO,SAASA,EAA0B,EAAE,QAAAC,GAAQ,SAAAC,KAA0D;AAC5G,SAAOC,EAAQ,MAAM;AACnB,UAAMC,IAAkBF,GAAS;AAEjC,QAAIE;AACF,aAAI,OAAOA,KAAoB,aACtBA,EAAgB,EAAE,QAAAH,GAAQ,SAAAC,GAA+C,IAG3EE;AAGT,YAAQH,EAAO,OAAO,UAAU,MAAM,QAAQ,SAAA;AAAA,MAC5C,KAAK;AACH,eAAO;AAAA,UACL,EAAE,OAAOA,EAAO,OAAO,UAAU,MAAM,QAAS,OAAU,OAAO,OAAO,OAAA;AAAA,UACxE;AAAA,YACE,OAAOA,EAAO,OAAO,UAAU,MAAM,QAAS,MAASA,EAAO,OAAO,UAAU,MAAM,QAAS,MAAS;AAAA,YACvG,OAAO;AAAA,UAAA;AAAA,QACT;AAAA,MAGJ;AACE,eAAO,MAAM,KAAKA,EAAO,OAAO,yBAAyB,KAAA,CAAM,EAC5D,OACA,OAAO,CAACI,MAAiCA,KAAU,IAAI,EACvD,IAAI,CAACA,MAAU,OAAOA,CAAK,CAAC,EAC5B,KAAA,EACA,MAAM,GAAG,GAAI,EACb,IAAI,CAACA,OAAW;AAAA,UACf,OAAOA;AAAA,UACP,OAAAA;AAAA,QAAA,EACA;AAAA,IAAA;AAAA,EAEV,GAAG,CAACJ,GAAQC,CAAO,CAAC;AACtB;"}
@@ -1,14 +1,14 @@
1
- import { createColumnHelper as f } from "@tanstack/react-table";
2
- import { c as y } from "../../../chunks/cloneDeep.js";
3
- import { g as C } from "../../../chunks/_commonjsHelpers.js";
4
- import { r as g } from "../../../chunks/get.js";
5
- import { getComponent as b } from "../../../registries/components.js";
6
- var x = g();
7
- const h = /* @__PURE__ */ C(x), K = {
1
+ import { createColumnHelper as C } from "@tanstack/react-table";
2
+ import { c as g } from "../../../chunks/cloneDeep.js";
3
+ import { g as b } from "../../../chunks/_commonjsHelpers.js";
4
+ import { r as x } from "../../../chunks/get.js";
5
+ import { getComponent as h } from "../../../registries/components.js";
6
+ var K = x();
7
+ const k = /* @__PURE__ */ b(K), E = {
8
8
  number: "range",
9
9
  currency: "range",
10
10
  checkbox: "boolean"
11
- }, k = {
11
+ }, F = {
12
12
  date: "date",
13
13
  datetime: "date",
14
14
  number: "number",
@@ -21,46 +21,45 @@ function m(r) {
21
21
  if ("accessorKey" in r && typeof r.accessorKey == "string")
22
22
  return r.accessorKey;
23
23
  }
24
- function S({
24
+ function w({
25
25
  form: r,
26
26
  columns: p = [],
27
27
  prefix: l = "data."
28
28
  }) {
29
- const d = f(), n = y(p);
29
+ const d = C(), s = g(p);
30
30
  return [...r.components.flatMap((e) => e.type === "tabs" ? e.components?.flatMap((t) => t.components) : [e]).filter((e) => e?.tableView).map((e) => {
31
- const t = e, o = `${l}${t.key}`, a = /* @__PURE__ */ new Set([t.key, o]), i = n.findIndex((u) => {
32
- const c = m(u);
31
+ const t = e, n = `${l}${t.key}`, a = /* @__PURE__ */ new Set([t.key, n]), i = s.findIndex((y) => {
32
+ const c = m(y);
33
33
  return c ? a.has(c) : !1;
34
34
  });
35
- let s = n[i];
36
- return s && n.splice(i, 1), d.accessor(o, {
35
+ let o = s[i];
36
+ o && s.splice(i, 1);
37
+ const u = E[t.type] || "text", f = o?.meta?.filter?.variant ? o.meta.filter : { variant: u };
38
+ return d.accessor(n, {
37
39
  header: (t.label || t.title || t.key)?.replace(/:/, ""),
38
40
  meta: {
39
- type: k[t.type] || t.type,
40
- filter: {
41
- ...s?.meta?.filter,
42
- variant: K[t.type] || "text"
43
- },
44
- ...s?.meta || {}
41
+ type: F[t.type] || t.type,
42
+ filter: f,
43
+ ...o?.meta || {}
45
44
  },
46
- ...s || {}
45
+ ...o || {}
47
46
  });
48
- }), ...n].reduce((e, t) => {
49
- const o = m(t);
50
- return o && e.some((a) => m(a) === o) || e.push(t), e;
47
+ }), ...s].reduce((e, t) => {
48
+ const n = m(t);
49
+ return n && e.some((a) => m(a) === n) || e.push(t), e;
51
50
  }, []).map((e, t) => {
52
- const o = b([`Cell.${e.id}`, `Cell.${e.meta?.type}`, "Cell"]);
51
+ const n = h([`Cell.${e.id}`, `Cell.${e.meta?.type}`, "Cell"]);
53
52
  return {
54
53
  ...e,
55
54
  meta: {
56
55
  ...e?.meta,
57
- order: h(e, "meta.order", t * 10)
56
+ order: k(e, "meta.order", t * 10)
58
57
  },
59
- cell: e.cell || o
58
+ cell: e.cell || n
60
59
  };
61
60
  }).sort((e, t) => e.meta.order > t.meta.order ? 1 : -1);
62
61
  }
63
62
  export {
64
- S as mapFormToColumns
63
+ w as mapFormToColumns
65
64
  };
66
65
  //# sourceMappingURL=mapFormToColumns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapFormToColumns.js","sources":["../../../../src/molecules/table/utils/mapFormToColumns.tsx"],"sourcesContent":["import \"../interfaces/extends\";\n\nimport { ColumnDef, ColumnDefResolved, createColumnHelper } from \"@tanstack/react-table\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport get from \"lodash/get\";\n\nimport type { ComponentType, FormType } from \"../../../interfaces\";\nimport { getComponent } from \"../../../registries/components\";\nimport type { DefaultCell } from \"../components/DefaultCell\";\nimport type { FilterVariants } from \"../filters/Filters\";\n\nconst MAP_FILTER_TYPES: Record<string, FilterVariants> = {\n number: \"range\",\n currency: \"range\",\n checkbox: \"boolean\"\n} as const;\n\nconst MAP_TYPES = {\n date: \"date\",\n datetime: \"date\",\n number: \"number\",\n currency: \"currency\",\n checkbox: \"boolean\"\n} as const;\n\nfunction getColumnIdentity<Data>(column: ColumnDef<Data, any> | ColumnDefResolved<Data, any>) {\n if (\"id\" in column && typeof column.id === \"string\") {\n return column.id;\n }\n\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function mapFormToColumns<Data = any>({\n form,\n columns = [],\n prefix = \"data.\"\n}: {\n form: FormType;\n columns?: ColumnDefResolved<Data, any>[];\n prefix?: string;\n}): ColumnDef<Data, any>[] {\n const columnHelper = createColumnHelper<Data>();\n const columnsToKeep = cloneDeep(columns);\n\n const columnsFromComponents = form.components\n .flatMap((component) => {\n if (component.type === \"tabs\") {\n return component.components?.flatMap((subComponent: ComponentType) => subComponent.components);\n }\n\n return [component];\n })\n .filter((component) => component?.tableView)\n .map((c) => {\n const component = c as ComponentType;\n const componentColumnKey = `${prefix}${component.key}`;\n const matchingKeys = new Set([component.key, componentColumnKey]);\n\n const columnIndex = columnsToKeep.findIndex((column) => {\n const identity = getColumnIdentity(column);\n\n return identity ? matchingKeys.has(identity) : false;\n });\n\n let column = columnsToKeep[columnIndex];\n\n if (column) {\n columnsToKeep.splice(columnIndex, 1);\n }\n\n return columnHelper.accessor(componentColumnKey as any, {\n header: (component.label || component.title || component.key)?.replace(/:/, \"\"),\n meta: {\n type: (MAP_TYPES[component.type as keyof typeof MAP_TYPES] || component.type) as any,\n filter: {\n ...column?.meta?.filter,\n variant: MAP_FILTER_TYPES[component.type as keyof typeof MAP_FILTER_TYPES] || \"text\"\n },\n ...(column?.meta || {})\n },\n ...(column || {})\n });\n });\n\n const dedupedColumns = [...columnsFromComponents, ...(columnsToKeep as any[])].reduce<ColumnDef<Data, any>[]>((acc, column) => {\n const identity = getColumnIdentity(column);\n\n if (identity && acc.some((existingColumn) => getColumnIdentity(existingColumn) === identity)) {\n return acc;\n }\n\n acc.push(column);\n return acc;\n }, []);\n\n const mergedColumns = dedupedColumns.map((column, index) => {\n const Cell = getComponent<typeof DefaultCell>([`Cell.${column.id}`, `Cell.${column.meta?.type}`, \"Cell\"]);\n\n return {\n ...column,\n meta: {\n ...column?.meta,\n order: get(column, \"meta.order\", index * 10)\n },\n cell: column.cell || Cell\n };\n });\n\n return mergedColumns.sort((a, b) => (a.meta.order > b.meta.order ? 1 : -1)) as ColumnDef<Data, any>[];\n}\n"],"names":["MAP_FILTER_TYPES","MAP_TYPES","getColumnIdentity","column","mapFormToColumns","form","columns","prefix","columnHelper","createColumnHelper","columnsToKeep","cloneDeep","component","subComponent","c","componentColumnKey","matchingKeys","columnIndex","identity","acc","existingColumn","index","Cell","getComponent","get","a","b"],"mappings":";;;;;;gCAWMA,IAAmD;AAAA,EACvD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AACZ,GAEMC,IAAY;AAAA,EAChB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AACZ;AAEA,SAASC,EAAwBC,GAA6D;AAC5F,MAAI,QAAQA,KAAU,OAAOA,EAAO,MAAO;AACzC,WAAOA,EAAO;AAGhB,MAAI,iBAAiBA,KAAU,OAAOA,EAAO,eAAgB;AAC3D,WAAOA,EAAO;AAIlB;AAEO,SAASC,EAA6B;AAAA,EAC3C,MAAAC;AAAA,EACA,SAAAC,IAAU,CAAA;AAAA,EACV,QAAAC,IAAS;AACX,GAI2B;AACzB,QAAMC,IAAeC,EAAA,GACfC,IAAgBC,EAAUL,CAAO;AAkEvC,SAxBuB,CAAC,GAxCMD,EAAK,WAChC,QAAQ,CAACO,MACJA,EAAU,SAAS,SACdA,EAAU,YAAY,QAAQ,CAACC,MAAgCA,EAAa,UAAU,IAGxF,CAACD,CAAS,CAClB,EACA,OAAO,CAACA,MAAcA,GAAW,SAAS,EAC1C,IAAI,CAACE,MAAM;AACV,UAAMF,IAAYE,GACZC,IAAqB,GAAGR,CAAM,GAAGK,EAAU,GAAG,IAC9CI,IAAe,oBAAI,IAAI,CAACJ,EAAU,KAAKG,CAAkB,CAAC,GAE1DE,IAAcP,EAAc,UAAU,CAACP,MAAW;AACtD,YAAMe,IAAWhB,EAAkBC,CAAM;AAEzC,aAAOe,IAAWF,EAAa,IAAIE,CAAQ,IAAI;AAAA,IACjD,CAAC;AAED,QAAIf,IAASO,EAAcO,CAAW;AAEtC,WAAId,KACFO,EAAc,OAAOO,GAAa,CAAC,GAG9BT,EAAa,SAASO,GAA2B;AAAA,MACtD,SAASH,EAAU,SAASA,EAAU,SAASA,EAAU,MAAM,QAAQ,KAAK,EAAE;AAAA,MAC9E,MAAM;AAAA,QACJ,MAAOX,EAAUW,EAAU,IAA8B,KAAKA,EAAU;AAAA,QACxE,QAAQ;AAAA,UACN,GAAGT,GAAQ,MAAM;AAAA,UACjB,SAASH,EAAiBY,EAAU,IAAqC,KAAK;AAAA,QAAA;AAAA,QAEhF,GAAIT,GAAQ,QAAQ,CAAA;AAAA,MAAC;AAAA,MAEvB,GAAIA,KAAU,CAAA;AAAA,IAAC,CAChB;AAAA,EACH,CAAC,GAE+C,GAAIO,CAAuB,EAAE,OAA+B,CAACS,GAAKhB,MAAW;AAC7H,UAAMe,IAAWhB,EAAkBC,CAAM;AAEzC,WAAIe,KAAYC,EAAI,KAAK,CAACC,MAAmBlB,EAAkBkB,CAAc,MAAMF,CAAQ,KAI3FC,EAAI,KAAKhB,CAAM,GACRgB;AAAA,EACT,GAAG,CAAA,CAAE,EAEgC,IAAI,CAAChB,GAAQkB,MAAU;AAC1D,UAAMC,IAAOC,EAAiC,CAAC,QAAQpB,EAAO,EAAE,IAAI,QAAQA,EAAO,MAAM,IAAI,IAAI,MAAM,CAAC;AAExG,WAAO;AAAA,MACL,GAAGA;AAAA,MACH,MAAM;AAAA,QACJ,GAAGA,GAAQ;AAAA,QACX,OAAOqB,EAAIrB,GAAQ,cAAckB,IAAQ,EAAE;AAAA,MAAA;AAAA,MAE7C,MAAMlB,EAAO,QAAQmB;AAAA,IAAA;AAAA,EAEzB,CAAC,EAEoB,KAAK,CAACG,GAAGC,MAAOD,EAAE,KAAK,QAAQC,EAAE,KAAK,QAAQ,IAAI,EAAG;AAC5E;"}
1
+ {"version":3,"file":"mapFormToColumns.js","sources":["../../../../src/molecules/table/utils/mapFormToColumns.tsx"],"sourcesContent":["import \"../interfaces/extends\";\n\nimport { ColumnDef, ColumnDefResolved, createColumnHelper } from \"@tanstack/react-table\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport get from \"lodash/get\";\n\nimport type { ComponentType, FormType } from \"../../../interfaces\";\nimport { getComponent } from \"../../../registries/components\";\nimport type { DefaultCell } from \"../components/DefaultCell\";\nimport type { FilterVariants } from \"../filters/Filters\";\n\nconst MAP_FILTER_TYPES: Record<string, FilterVariants> = {\n number: \"range\",\n currency: \"range\",\n checkbox: \"boolean\"\n} as const;\n\nconst MAP_TYPES = {\n date: \"date\",\n datetime: \"date\",\n number: \"number\",\n currency: \"currency\",\n checkbox: \"boolean\"\n} as const;\n\nfunction getColumnIdentity<Data>(column: ColumnDef<Data, any> | ColumnDefResolved<Data, any>) {\n if (\"id\" in column && typeof column.id === \"string\") {\n return column.id;\n }\n\n if (\"accessorKey\" in column && typeof column.accessorKey === \"string\") {\n return column.accessorKey;\n }\n\n return undefined;\n}\n\nexport function mapFormToColumns<Data = any>({\n form,\n columns = [],\n prefix = \"data.\"\n}: {\n form: FormType;\n columns?: ColumnDefResolved<Data, any>[];\n prefix?: string;\n}): ColumnDef<Data, any>[] {\n const columnHelper = createColumnHelper<Data>();\n const columnsToKeep = cloneDeep(columns);\n\n const columnsFromComponents = form.components\n .flatMap((component) => {\n if (component.type === \"tabs\") {\n return component.components?.flatMap((subComponent: ComponentType) => subComponent.components);\n }\n\n return [component];\n })\n .filter((component) => component?.tableView)\n .map((c) => {\n const component = c as ComponentType;\n const componentColumnKey = `${prefix}${component.key}`;\n const matchingKeys = new Set([component.key, componentColumnKey]);\n\n const columnIndex = columnsToKeep.findIndex((column) => {\n const identity = getColumnIdentity(column);\n\n return identity ? matchingKeys.has(identity) : false;\n });\n\n let column = columnsToKeep[columnIndex];\n\n if (column) {\n columnsToKeep.splice(columnIndex, 1);\n }\n\n const mappedVariant = MAP_FILTER_TYPES[component.type as keyof typeof MAP_FILTER_TYPES] || \"text\";\n const filter = column?.meta?.filter?.variant ? column.meta.filter : { variant: mappedVariant };\n\n return columnHelper.accessor(componentColumnKey as any, {\n header: (component.label || component.title || component.key)?.replace(/:/, \"\"),\n meta: {\n type: (MAP_TYPES[component.type as keyof typeof MAP_TYPES] || component.type) as any,\n filter,\n ...(column?.meta || {})\n },\n ...(column || {})\n });\n });\n\n const dedupedColumns = [...columnsFromComponents, ...(columnsToKeep as any[])].reduce<ColumnDef<Data, any>[]>((acc, column) => {\n const identity = getColumnIdentity(column);\n\n if (identity && acc.some((existingColumn) => getColumnIdentity(existingColumn) === identity)) {\n return acc;\n }\n\n acc.push(column);\n return acc;\n }, []);\n\n const mergedColumns = dedupedColumns.map((column, index) => {\n const Cell = getComponent<typeof DefaultCell>([`Cell.${column.id}`, `Cell.${column.meta?.type}`, \"Cell\"]);\n\n return {\n ...column,\n meta: {\n ...column?.meta,\n order: get(column, \"meta.order\", index * 10)\n },\n cell: column.cell || Cell\n };\n });\n\n return mergedColumns.sort((a, b) => (a.meta.order > b.meta.order ? 1 : -1)) as ColumnDef<Data, any>[];\n}\n"],"names":["MAP_FILTER_TYPES","MAP_TYPES","getColumnIdentity","column","mapFormToColumns","form","columns","prefix","columnHelper","createColumnHelper","columnsToKeep","cloneDeep","component","subComponent","c","componentColumnKey","matchingKeys","columnIndex","identity","mappedVariant","filter","acc","existingColumn","index","Cell","getComponent","get","a","b"],"mappings":";;;;;;gCAWMA,IAAmD;AAAA,EACvD,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AACZ,GAEMC,IAAY;AAAA,EAChB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,UAAU;AACZ;AAEA,SAASC,EAAwBC,GAA6D;AAC5F,MAAI,QAAQA,KAAU,OAAOA,EAAO,MAAO;AACzC,WAAOA,EAAO;AAGhB,MAAI,iBAAiBA,KAAU,OAAOA,EAAO,eAAgB;AAC3D,WAAOA,EAAO;AAIlB;AAEO,SAASC,EAA6B;AAAA,EAC3C,MAAAC;AAAA,EACA,SAAAC,IAAU,CAAA;AAAA,EACV,QAAAC,IAAS;AACX,GAI2B;AACzB,QAAMC,IAAeC,EAAA,GACfC,IAAgBC,EAAUL,CAAO;AAkEvC,SAxBuB,CAAC,GAxCMD,EAAK,WAChC,QAAQ,CAACO,MACJA,EAAU,SAAS,SACdA,EAAU,YAAY,QAAQ,CAACC,MAAgCA,EAAa,UAAU,IAGxF,CAACD,CAAS,CAClB,EACA,OAAO,CAACA,MAAcA,GAAW,SAAS,EAC1C,IAAI,CAACE,MAAM;AACV,UAAMF,IAAYE,GACZC,IAAqB,GAAGR,CAAM,GAAGK,EAAU,GAAG,IAC9CI,IAAe,oBAAI,IAAI,CAACJ,EAAU,KAAKG,CAAkB,CAAC,GAE1DE,IAAcP,EAAc,UAAU,CAACP,MAAW;AACtD,YAAMe,IAAWhB,EAAkBC,CAAM;AAEzC,aAAOe,IAAWF,EAAa,IAAIE,CAAQ,IAAI;AAAA,IACjD,CAAC;AAED,QAAIf,IAASO,EAAcO,CAAW;AAEtC,IAAId,KACFO,EAAc,OAAOO,GAAa,CAAC;AAGrC,UAAME,IAAgBnB,EAAiBY,EAAU,IAAqC,KAAK,QACrFQ,IAASjB,GAAQ,MAAM,QAAQ,UAAUA,EAAO,KAAK,SAAS,EAAE,SAASgB,EAAA;AAE/E,WAAOX,EAAa,SAASO,GAA2B;AAAA,MACtD,SAASH,EAAU,SAASA,EAAU,SAASA,EAAU,MAAM,QAAQ,KAAK,EAAE;AAAA,MAC9E,MAAM;AAAA,QACJ,MAAOX,EAAUW,EAAU,IAA8B,KAAKA,EAAU;AAAA,QACxE,QAAAQ;AAAA,QACA,GAAIjB,GAAQ,QAAQ,CAAA;AAAA,MAAC;AAAA,MAEvB,GAAIA,KAAU,CAAA;AAAA,IAAC,CAChB;AAAA,EACH,CAAC,GAE+C,GAAIO,CAAuB,EAAE,OAA+B,CAACW,GAAKlB,MAAW;AAC7H,UAAMe,IAAWhB,EAAkBC,CAAM;AAEzC,WAAIe,KAAYG,EAAI,KAAK,CAACC,MAAmBpB,EAAkBoB,CAAc,MAAMJ,CAAQ,KAI3FG,EAAI,KAAKlB,CAAM,GACRkB;AAAA,EACT,GAAG,CAAA,CAAE,EAEgC,IAAI,CAAClB,GAAQoB,MAAU;AAC1D,UAAMC,IAAOC,EAAiC,CAAC,QAAQtB,EAAO,EAAE,IAAI,QAAQA,EAAO,MAAM,IAAI,IAAI,MAAM,CAAC;AAExG,WAAO;AAAA,MACL,GAAGA;AAAA,MACH,MAAM;AAAA,QACJ,GAAGA,GAAQ;AAAA,QACX,OAAOuB,EAAIvB,GAAQ,cAAcoB,IAAQ,EAAE;AAAA,MAAA;AAAA,MAE7C,MAAMpB,EAAO,QAAQqB;AAAA,IAAA;AAAA,EAEzB,CAAC,EAEoB,KAAK,CAACG,GAAGC,MAAOD,EAAE,KAAK,QAAQC,EAAE,KAAK,QAAQ,IAAI,EAAG;AAC5E;"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as l, jsx as i } from "react/jsx-runtime";
2
- import { c as f } from "../../chunks/index.js";
2
+ import { c as f } from "../../chunks/clsx.js";
3
3
  import { useRef as b, useEffect as g, useCallback as n } from "react";
4
4
  import { useKeyboardControls as v } from "../../hooks/useKeyboardControls.js";
5
5
  import { registerComponent as A } from "../../registries/components.js";
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sources":["../../../src/molecules/tabs/Tab.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport { PropsWithChildren, useCallback, useEffect, useRef } from \"react\";\n\nimport { useKeyboardControls } from \"../../hooks/useKeyboardControls.js\";\nimport { registerComponent } from \"../../registries/components.js\";\nimport { iconClass } from \"../../utils/iconClass.js\";\nimport { useActiveTab, useRegisterTabControl, useTabsUid } from \"./hooks/tabControl.js\";\n\nexport interface TabProps {\n icon?: string;\n isActive?: boolean;\n className?: string;\n after?: React.ReactNode;\n value: number;\n /**\n * on tab select handler\n */\n onClick?: (value: number) => void;\n}\n\nexport function Tab({ onClick, icon, value, children, className, after }: PropsWithChildren<TabProps>) {\n const uid = useTabsUid();\n const ref = useRef<HTMLButtonElement>(null);\n const activeTab = useActiveTab();\n const dispatch = useRegisterTabControl({ value, ref });\n const previousActiveTab = useRef(activeTab);\n\n const isActive = useRef(activeTab === value);\n isActive.current = activeTab === value;\n\n useEffect(() => {\n if (previousActiveTab.current !== activeTab && value === activeTab) {\n ref.current?.focus();\n onClick?.(value);\n }\n if (previousActiveTab.current !== activeTab) {\n previousActiveTab.current = activeTab;\n }\n }, [value, onClick, activeTab]);\n\n const start = useCallback(() => {\n dispatch({ type: \"start\" });\n }, [dispatch]);\n\n const end = useCallback(() => {\n dispatch({ type: \"end\" });\n }, [dispatch]);\n\n const up = useCallback(() => {\n dispatch({ type: \"previous\" });\n }, [dispatch]);\n\n const down = useCallback(() => {\n dispatch({ type: \"next\" });\n }, [dispatch]);\n\n const left = useCallback(() => {\n const isRTL = document.documentElement.dir === \"rtl\";\n\n dispatch({ type: isRTL ? \"next\" : \"previous\" });\n }, [dispatch]);\n\n const right = useCallback(() => {\n const isRTL = document.documentElement.dir === \"rtl\";\n\n dispatch({ type: isRTL ? \"previous\" : \"next\" });\n }, [dispatch]);\n\n const handleKeyDown = useKeyboardControls({\n start,\n end,\n up,\n down,\n left,\n right\n });\n\n const handleClick = useCallback(() => {\n dispatch({ type: \"update\", payload: value });\n }, [dispatch, value]);\n\n return (\n <div title={\"button-wrapper\"} className={classnames(\"tw-tabs__button-wrapper\", className, { \"-active\": isActive.current }, className)}>\n <button\n ref={ref}\n id={`Tab_${value}_${uid}`}\n data-name='Tab'\n title='button-tab'\n role='tab'\n aria-selected={isActive.current}\n aria-controls={`TabPanel_${value}_${uid}`}\n tabIndex={isActive.current ? 0 : -1}\n className={\"tw-tabs__button\"}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {icon && <i className={classnames(iconClass(undefined, icon), \"tw-tabs__button-icon\")} />}\n <span className={\"tw-tabs__button-label\"}>{children}</span>\n {after}\n </button>\n <div className='tw-tabs__button-border' />\n </div>\n );\n}\n\nregisterComponent(\"Tab\", Tab);\n"],"names":["Tab","onClick","icon","value","children","className","after","uid","useTabsUid","ref","useRef","activeTab","useActiveTab","dispatch","useRegisterTabControl","previousActiveTab","isActive","useEffect","start","useCallback","end","up","down","left","isRTL","right","handleKeyDown","useKeyboardControls","handleClick","jsxs","classnames","jsx","iconClass","registerComponent"],"mappings":"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"}
1
+ {"version":3,"file":"Tab.js","sources":["../../../src/molecules/tabs/Tab.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { PropsWithChildren, useCallback, useEffect, useRef } from \"react\";\n\nimport { useKeyboardControls } from \"../../hooks/useKeyboardControls.js\";\nimport { registerComponent } from \"../../registries/components.js\";\nimport { iconClass } from \"../../utils/iconClass.js\";\nimport { useActiveTab, useRegisterTabControl, useTabsUid } from \"./hooks/tabControl.js\";\n\nexport interface TabProps {\n icon?: string;\n isActive?: boolean;\n className?: string;\n after?: React.ReactNode;\n value: number;\n /**\n * on tab select handler\n */\n onClick?: (value: number) => void;\n}\n\nexport function Tab({ onClick, icon, value, children, className, after }: PropsWithChildren<TabProps>) {\n const uid = useTabsUid();\n const ref = useRef<HTMLButtonElement>(null);\n const activeTab = useActiveTab();\n const dispatch = useRegisterTabControl({ value, ref });\n const previousActiveTab = useRef(activeTab);\n\n const isActive = useRef(activeTab === value);\n isActive.current = activeTab === value;\n\n useEffect(() => {\n if (previousActiveTab.current !== activeTab && value === activeTab) {\n ref.current?.focus();\n onClick?.(value);\n }\n if (previousActiveTab.current !== activeTab) {\n previousActiveTab.current = activeTab;\n }\n }, [value, onClick, activeTab]);\n\n const start = useCallback(() => {\n dispatch({ type: \"start\" });\n }, [dispatch]);\n\n const end = useCallback(() => {\n dispatch({ type: \"end\" });\n }, [dispatch]);\n\n const up = useCallback(() => {\n dispatch({ type: \"previous\" });\n }, [dispatch]);\n\n const down = useCallback(() => {\n dispatch({ type: \"next\" });\n }, [dispatch]);\n\n const left = useCallback(() => {\n const isRTL = document.documentElement.dir === \"rtl\";\n\n dispatch({ type: isRTL ? \"next\" : \"previous\" });\n }, [dispatch]);\n\n const right = useCallback(() => {\n const isRTL = document.documentElement.dir === \"rtl\";\n\n dispatch({ type: isRTL ? \"previous\" : \"next\" });\n }, [dispatch]);\n\n const handleKeyDown = useKeyboardControls({\n start,\n end,\n up,\n down,\n left,\n right\n });\n\n const handleClick = useCallback(() => {\n dispatch({ type: \"update\", payload: value });\n }, [dispatch, value]);\n\n return (\n <div title={\"button-wrapper\"} className={clsx(\"tw-tabs__button-wrapper\", className, { \"-active\": isActive.current }, className)}>\n <button\n ref={ref}\n id={`Tab_${value}_${uid}`}\n data-name='Tab'\n title='button-tab'\n role='tab'\n aria-selected={isActive.current}\n aria-controls={`TabPanel_${value}_${uid}`}\n tabIndex={isActive.current ? 0 : -1}\n className={\"tw-tabs__button\"}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {icon && <i className={clsx(iconClass(undefined, icon), \"tw-tabs__button-icon\")} />}\n <span className={\"tw-tabs__button-label\"}>{children}</span>\n {after}\n </button>\n <div className='tw-tabs__button-border' />\n </div>\n );\n}\n\nregisterComponent(\"Tab\", Tab);\n"],"names":["Tab","onClick","icon","value","children","className","after","uid","useTabsUid","ref","useRef","activeTab","useActiveTab","dispatch","useRegisterTabControl","previousActiveTab","isActive","useEffect","start","useCallback","end","up","down","left","isRTL","right","handleKeyDown","useKeyboardControls","handleClick","jsxs","clsx","jsx","iconClass","registerComponent"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import { c as b } from "../../chunks/index.js";
3
- import { registerComponent as s } from "../../registries/components.js";
2
+ import { c as s } from "../../chunks/clsx.js";
3
+ import { registerComponent as b } from "../../registries/components.js";
4
4
  import { useActiveTab as c, useTabsUid as m } from "./hooks/tabControl.js";
5
5
  function d({ value: a, className: i, children: n }) {
6
6
  const o = c(), t = m(), e = o === a;
@@ -13,14 +13,14 @@ function d({ value: a, className: i, children: n }) {
13
13
  "aria-hidden": !e,
14
14
  "aria-labelledby": `Tab_${a}_${t}`,
15
15
  tabIndex: e ? 0 : -1,
16
- className: b("tw-tabs__panel", i, {
16
+ className: s("tw-tabs__panel", i, {
17
17
  "-active": e
18
18
  }),
19
19
  children: n
20
20
  }
21
21
  );
22
22
  }
23
- s("TabPanel", d);
23
+ b("TabPanel", d);
24
24
  export {
25
25
  d as TabPanel
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TabPanel.js","sources":["../../../src/molecules/tabs/TabPanel.tsx"],"sourcesContent":["import classnames from \"classnames\";\n\nimport { registerComponent } from \"../../registries/components.js\";\nimport { useActiveTab, useTabsUid } from \"./hooks/tabControl.js\";\n\nexport interface TabPanelProps {\n className?: string;\n /**\n * Tab panel index<br/>\n * _Can be **0** or **1** indexed_\n */\n value: number;\n}\n\nexport function TabPanel({ value, className, children }: React.PropsWithChildren<TabPanelProps>) {\n const tabSelected = useActiveTab();\n const uid = useTabsUid();\n const isActive = tabSelected === value;\n\n return (\n <div\n id={`TabPanel_${value}_${uid}`}\n data-name={`TabPanel_${value}`}\n role='tabpanel'\n aria-hidden={!isActive}\n aria-labelledby={`Tab_${value}_${uid}`}\n tabIndex={isActive ? 0 : -1}\n className={classnames(\"tw-tabs__panel\", className, {\n \"-active\": isActive\n })}\n >\n {children}\n </div>\n );\n}\n\nregisterComponent(\"TabPanel\", TabPanel);\n"],"names":["TabPanel","value","className","children","tabSelected","useActiveTab","uid","useTabsUid","isActive","jsx","classnames","registerComponent"],"mappings":";;;;AAcO,SAASA,EAAS,EAAE,OAAAC,GAAO,WAAAC,GAAW,UAAAC,KAAoD;AAC/F,QAAMC,IAAcC,EAAA,GACdC,IAAMC,EAAA,GACNC,IAAWJ,MAAgBH;AAEjC,SACE,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI,YAAYR,CAAK,IAAIK,CAAG;AAAA,MAC5B,aAAW,YAAYL,CAAK;AAAA,MAC5B,MAAK;AAAA,MACL,eAAa,CAACO;AAAA,MACd,mBAAiB,OAAOP,CAAK,IAAIK,CAAG;AAAA,MACpC,UAAUE,IAAW,IAAI;AAAA,MACzB,WAAWE,EAAW,kBAAkBR,GAAW;AAAA,QACjD,WAAWM;AAAA,MAAA,CACZ;AAAA,MAEA,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAQ,EAAkB,YAAYX,CAAQ;"}
1
+ {"version":3,"file":"TabPanel.js","sources":["../../../src/molecules/tabs/TabPanel.tsx"],"sourcesContent":["import clsx from \"clsx\";\n\nimport { registerComponent } from \"../../registries/components.js\";\nimport { useActiveTab, useTabsUid } from \"./hooks/tabControl.js\";\n\nexport interface TabPanelProps {\n className?: string;\n /**\n * Tab panel index<br/>\n * _Can be **0** or **1** indexed_\n */\n value: number;\n}\n\nexport function TabPanel({ value, className, children }: React.PropsWithChildren<TabPanelProps>) {\n const tabSelected = useActiveTab();\n const uid = useTabsUid();\n const isActive = tabSelected === value;\n\n return (\n <div\n id={`TabPanel_${value}_${uid}`}\n data-name={`TabPanel_${value}`}\n role='tabpanel'\n aria-hidden={!isActive}\n aria-labelledby={`Tab_${value}_${uid}`}\n tabIndex={isActive ? 0 : -1}\n className={clsx(\"tw-tabs__panel\", className, {\n \"-active\": isActive\n })}\n >\n {children}\n </div>\n );\n}\n\nregisterComponent(\"TabPanel\", TabPanel);\n"],"names":["TabPanel","value","className","children","tabSelected","useActiveTab","uid","useTabsUid","isActive","jsx","clsx","registerComponent"],"mappings":";;;;AAcO,SAASA,EAAS,EAAE,OAAAC,GAAO,WAAAC,GAAW,UAAAC,KAAoD;AAC/F,QAAMC,IAAcC,EAAA,GACdC,IAAMC,EAAA,GACNC,IAAWJ,MAAgBH;AAEjC,SACE,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI,YAAYR,CAAK,IAAIK,CAAG;AAAA,MAC5B,aAAW,YAAYL,CAAK;AAAA,MAC5B,MAAK;AAAA,MACL,eAAa,CAACO;AAAA,MACd,mBAAiB,OAAOP,CAAK,IAAIK,CAAG;AAAA,MACpC,UAAUE,IAAW,IAAI;AAAA,MACzB,WAAWE,EAAK,kBAAkBR,GAAW;AAAA,QAC3C,WAAWM;AAAA,MAAA,CACZ;AAAA,MAEA,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAQ,EAAkB,YAAYX,CAAQ;"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import { c as i } from "../../chunks/index.js";
2
+ import { c as i } from "../../chunks/clsx.js";
3
3
  import { registerComponent as m } from "../../registries/components.js";
4
4
  import { TabsProvider as e } from "./context/TabControl.js";
5
5
  function n({ style: t, selected: o, children: s, className: a }) {