@alphakits/ui 2.0.7 → 2.0.8

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 (49) hide show
  1. package/dist/badge/component.d.ts +1 -1
  2. package/dist/badge/component.js +19 -19
  3. package/dist/badge/component.js.map +1 -1
  4. package/dist/badge/index.module.css +1 -1
  5. package/dist/badge/index.module.css.js +46 -32
  6. package/dist/badge/index.module.css.js.map +1 -1
  7. package/dist/cell/base/component.d.ts +6 -0
  8. package/dist/cell/base/component.js +69 -37
  9. package/dist/cell/base/component.js.map +1 -1
  10. package/dist/cell/base/index.module.css +1 -1
  11. package/dist/cell/base/index.module.css.js +12 -8
  12. package/dist/cell/base/index.module.css.js.map +1 -1
  13. package/dist/cell/pure/component.d.ts +2 -0
  14. package/dist/cell/pure/component.js +16 -14
  15. package/dist/cell/pure/component.js.map +1 -1
  16. package/dist/cell/pure/index.module.css +1 -1
  17. package/dist/cell/pure/index.module.css.js +16 -14
  18. package/dist/cell/pure/index.module.css.js.map +1 -1
  19. package/dist/filter-tag/component.d.ts +12 -0
  20. package/dist/filter-tag/component.js +38 -0
  21. package/dist/filter-tag/component.js.map +1 -0
  22. package/dist/filter-tag/index.d.ts +1 -0
  23. package/dist/filter-tag/index.js +5 -0
  24. package/dist/filter-tag/index.js.map +1 -0
  25. package/dist/filter-tag/index.module.css +1 -0
  26. package/dist/filter-tag/index.module.css.js +29 -0
  27. package/dist/filter-tag/index.module.css.js.map +1 -0
  28. package/dist/index.d.ts +1 -0
  29. package/dist/index.js +268 -266
  30. package/dist/index.js.map +1 -1
  31. package/dist/table/columns.js +2 -4
  32. package/dist/table/columns.js.map +1 -1
  33. package/dist/table/components/cell/component.d.ts +1 -0
  34. package/dist/table/components/cell/component.js +42 -35
  35. package/dist/table/components/cell/component.js.map +1 -1
  36. package/dist/table/components/cell/index.module.css +1 -1
  37. package/dist/table/components/cell/index.module.css.js +12 -8
  38. package/dist/table/components/cell/index.module.css.js.map +1 -1
  39. package/dist/table/components/cells/index.module.css +1 -1
  40. package/dist/table/components/table-header/index.module.css +1 -1
  41. package/dist/table/index.module.css.js +9 -6
  42. package/dist/table/index.module.css.js.map +1 -1
  43. package/dist/table/table.d.ts +2 -1
  44. package/dist/table/table.js +107 -101
  45. package/dist/table/table.js.map +1 -1
  46. package/dist/table/utils/prepare-rows.d.ts +2 -1
  47. package/dist/table/utils/prepare-rows.js +60 -27
  48. package/dist/table/utils/prepare-rows.js.map +1 -1
  49. package/package.json +1 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,5 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { Button as o } from "../button/component.js";
3
- const l = () => [
2
+ const r = () => [
4
3
  {
5
4
  header: "Title",
6
5
  accessor: "title",
@@ -49,7 +48,6 @@ const l = () => [
49
48
  align: "right",
50
49
  width: "200px",
51
50
  row: {
52
- title: ({ refetch: t }) => /* @__PURE__ */ e(o, { onClick: t, children: "Refetch" }),
53
51
  customAddon: ({ row: t }) => /* @__PURE__ */ e("div", { style: { background: "red" }, children: t.title.length })
54
52
  }
55
53
  }
@@ -62,6 +60,6 @@ const l = () => [
62
60
  // },
63
61
  ];
64
62
  export {
65
- l as NewColumns
63
+ r as NewColumns
66
64
  };
67
65
  //# sourceMappingURL=columns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"columns.js","sources":["../../src/table/columns.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Button } from '../button';\n\nimport { TableColumns } from './types';\n\ntype Row = {\n title: string;\n photo: string;\n};\n\nexport const NewColumns = (): TableColumns<Row> => [\n {\n header: 'Title',\n accessor: 'title',\n sort: true,\n row: {\n image: () => 'https://via.placeholder.com/150',\n subtitle: 'title',\n },\n },\n {\n header: 'Photo',\n accessor: 'photo',\n sort: true,\n row: {\n title: ({ row }) => `${row.title}awdawd`,\n image: ({ row }) => row.photo,\n },\n },\n // ,{\n // header: 'Brakin photo',\n // sort: true,\n // row: {\n // image: ({ row }) => row.title,\n // },\n // },{\n // header: 'No photo',\n // sort: true,\n // row: {\n // image: () => '',\n // },\n // },\n // {\n // header: 'icon',\n // row: {\n // icon: () => <ChevronForwardS />,\n // },\n // },\n {\n header: 'no icon',\n row: {\n icon: () => '',\n },\n },\n {\n header: 'Button',\n align: 'right',\n width: '200px',\n row: {\n title: ({ refetch }) => <Button onClick={ refetch }>Refetch</Button>,\n customAddon: ({ row }) => <div style={ { background: 'red' } }>{ row.title.length }</div>,\n },\n },\n // {\n // header: 'Button',\n // width: '50px',\n // row: {\n // title: null,\n // },\n // },\n];\n"],"names":["NewColumns","row","refetch","jsx","Button"],"mappings":";;AAWO,MAAMA,IAAa,MAAyB;AAAA,EAC/C;AAAA,IACI,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,KAAK;AAAA,MACD,OAAO,MAAM;AAAA,MACb,UAAU;AAAA,IAAA;AAAA,EACd;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,KAAK;AAAA,MACD,OAAO,CAAC,EAAE,KAAAC,QAAU,GAAGA,EAAI,KAAK;AAAA,MAChC,OAAO,CAAC,EAAE,KAAAA,EAAA,MAAUA,EAAI;AAAA,IAAA;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBJ;AAAA,IACI,QAAQ;AAAA,IACR,KAAK;AAAA,MACD,MAAM,MAAM;AAAA,IAAA;AAAA,EAChB;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,MACD,OAAO,CAAC,EAAE,SAAAC,EAAA,MAAc,gBAAAC,EAACC,GAAA,EAAO,SAAUF,GAAU,UAAA,WAAO;AAAA,MAC3D,aAAa,CAAC,EAAE,KAAAD,EAAA,MAAU,gBAAAE,EAAC,OAAA,EAAI,OAAQ,EAAE,YAAY,MAAA,GAAY,UAAAF,EAAI,MAAM,OAAA,CAAQ;AAAA,IAAA;AAAA,EACvF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASR;"}
1
+ {"version":3,"file":"columns.js","sources":["../../src/table/columns.tsx"],"sourcesContent":["import React from 'react';\n\nimport { TableColumns } from './types';\n\ntype Row = {\n title: string;\n photo: string;\n};\n\nexport const NewColumns = (): TableColumns<Row> => [\n {\n header: 'Title',\n accessor: 'title',\n sort: true,\n row: {\n image: () => 'https://via.placeholder.com/150',\n subtitle: 'title',\n },\n },\n {\n header: 'Photo',\n accessor: 'photo',\n sort: true,\n row: {\n title: ({ row }) => `${row.title}awdawd`,\n image: ({ row }) => row.photo,\n },\n },\n // ,{\n // header: 'Brakin photo',\n // sort: true,\n // row: {\n // image: ({ row }) => row.title,\n // },\n // },{\n // header: 'No photo',\n // sort: true,\n // row: {\n // image: () => '',\n // },\n // },\n // {\n // header: 'icon',\n // row: {\n // icon: () => <ChevronForwardS />,\n // },\n // },\n {\n header: 'no icon',\n row: {\n icon: () => '',\n },\n },\n {\n header: 'Button',\n align: 'right',\n width: '200px',\n row: {\n customAddon: ({ row }) => <div style={ { background: 'red' } }>{ row.title.length }</div>,\n },\n },\n // {\n // header: 'Button',\n // width: '50px',\n // row: {\n // title: null,\n // },\n // },\n];\n"],"names":["NewColumns","row","jsx"],"mappings":";AASO,MAAMA,IAAa,MAAyB;AAAA,EAC/C;AAAA,IACI,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,KAAK;AAAA,MACD,OAAO,MAAM;AAAA,MACb,UAAU;AAAA,IAAA;AAAA,EACd;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,KAAK;AAAA,MACD,OAAO,CAAC,EAAE,KAAAC,QAAU,GAAGA,EAAI,KAAK;AAAA,MAChC,OAAO,CAAC,EAAE,KAAAA,EAAA,MAAUA,EAAI;AAAA,IAAA;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBJ;AAAA,IACI,QAAQ;AAAA,IACR,KAAK;AAAA,MACD,MAAM,MAAM;AAAA,IAAA;AAAA,EAChB;AAAA,EAEJ;AAAA,IACI,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,MACD,aAAa,CAAC,EAAE,KAAAA,EAAA,MAAU,gBAAAC,EAAC,OAAA,EAAI,OAAQ,EAAE,YAAY,MAAA,GAAY,UAAAD,EAAI,MAAM,OAAA,CAAQ;AAAA,IAAA;AAAA,EACvF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASR;"}
@@ -11,6 +11,7 @@ export type CellProps = {
11
11
  children?: React.ReactNode;
12
12
  width?: string;
13
13
  align?: 'left' | 'right' | 'center';
14
+ compact?: boolean;
14
15
  /**
15
16
  * HTML тег
16
17
  */
@@ -1,53 +1,60 @@
1
- import { jsx as r } from "react/jsx-runtime";
2
- import s from "classnames";
3
- import { Cell as v } from "../../../cell/component.js";
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import d from "classnames";
3
+ import { Cell as T } from "../../../cell/component.js";
4
4
  import e from "./index.module.css.js";
5
- const y = ({
6
- dataTestID: m,
7
- className: o,
8
- children: i,
9
- title: c,
10
- subtitle: a,
11
- tableProps: d,
12
- cellProps: h,
5
+ const x = ({
6
+ dataTestID: a,
7
+ className: l,
8
+ children: m,
9
+ title: o,
10
+ subtitle: c,
11
+ tableProps: h,
12
+ cellProps: i,
13
13
  addon: f,
14
- align: t,
15
- width: p,
16
- tag: l = "td"
17
- }) => /* @__PURE__ */ r(
18
- l,
14
+ align: r,
15
+ compact: t,
16
+ width: v,
17
+ tag: n = "td"
18
+ }) => /* @__PURE__ */ s(
19
+ n,
19
20
  {
20
- "data-test-id": m,
21
- className: s(e.cell, o, {
22
- [e.is_div]: l === "div"
21
+ "data-test-id": a,
22
+ className: d(e.cell, l, {
23
+ [e.is_div]: n === "div",
24
+ [e.compact_cell]: t
23
25
  }),
24
- style: { width: p },
25
- ...d,
26
- children: i ? /* @__PURE__ */ r(
26
+ style: { width: v },
27
+ ...h,
28
+ children: m ? /* @__PURE__ */ s(
27
29
  "div",
28
30
  {
29
- className: s(e.children, {
30
- [e.center]: t === "center",
31
- [e.right]: t === "right"
31
+ className: d(e.children, {
32
+ [e.center]: r === "center",
33
+ [e.right]: r === "right"
32
34
  }),
33
- children: i
35
+ children: m
34
36
  }
35
- ) : /* @__PURE__ */ r(
36
- v.Base,
37
+ ) : /* @__PURE__ */ s(
38
+ T.Base,
37
39
  {
38
- title: c === void 0 ? "-" : c,
39
- subtitle: a,
40
- className: s({
41
- [e.center]: t === "center",
42
- [e.right]: t === "right"
40
+ title: o === void 0 ? "-" : o,
41
+ subtitle: c,
42
+ size: (i == null ? void 0 : i.size) || "s",
43
+ compactAddon: t,
44
+ singleLineTitle: t,
45
+ showTitleTooltipOnOverflow: t,
46
+ className: d({
47
+ [e.center]: r === "center",
48
+ [e.right]: r === "right",
49
+ [e.compact_content]: t
43
50
  }),
44
51
  addon: f,
45
- ...h
52
+ ...i
46
53
  }
47
54
  )
48
55
  }
49
56
  );
50
57
  export {
51
- y as TableCell
58
+ x as TableCell
52
59
  };
53
60
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../../src/table/components/cell/component.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\n\nimport { Cell as BaseCell } from '../../../cell';\nimport { BaseProps } from '../../../cell/base/component';\n\nimport styles from './index.module.css';\n\nexport type CellProps = {\n className?: string;\n dataTestID?: string;\n title?: BaseProps['title'];\n subtitle?: BaseProps['subtitle'];\n cellProps?: Omit<BaseProps, 'title' | 'subtitle'>;\n tableProps?: React.TdHTMLAttributes<any>;\n addon?: React.ReactNode;\n children?: React.ReactNode;\n width?: string;\n align?: 'left' | 'right' | 'center';\n\n /**\n * HTML тег\n */\n tag?: 'td' | 'div';\n};\n\nexport const TableCell: React.FC<CellProps> = ({\n dataTestID,\n className,\n children,\n title,\n subtitle,\n tableProps,\n cellProps,\n addon,\n align,\n width,\n tag: Component = 'td',\n}) => (\n <Component\n data-test-id={ dataTestID }\n className={ cn(styles.cell, className, {\n [styles.is_div]: Component === 'div',\n }) }\n style={ { width } }\n { ...tableProps }\n >\n { children ? (\n <div\n className={ cn(styles.children, {\n [styles.center]: align === 'center',\n [styles.right]: align === 'right',\n }) }\n >\n { children }\n </div>\n ) : (\n <BaseCell.Base\n title={ title === undefined ? '-' : title }\n subtitle={ subtitle }\n className={ cn({\n [styles.center]: align === 'center',\n [styles.right]: align === 'right',\n }) }\n addon={ addon }\n { ...cellProps }\n />\n ) }\n </Component>\n);\n"],"names":["TableCell","dataTestID","className","children","title","subtitle","tableProps","cellProps","addon","align","width","Component","jsx","cn","styles","BaseCell"],"mappings":";;;;AA0BO,MAAMA,IAAiC,CAAC;AAAA,EAC3C,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,KAAKC,IAAY;AACrB,MACI,gBAAAC;AAAA,EAACD;AAAA,EAAA;AAAA,IACG,gBAAeV;AAAA,IACf,WAAYY,EAAGC,EAAO,MAAMZ,GAAW;AAAA,MACnC,CAACY,EAAO,MAAM,GAAGH,MAAc;AAAA,IAAA,CAClC;AAAA,IACD,OAAQ,EAAE,OAAAD,EAAA;AAAA,IACR,GAAGJ;AAAA,IAEH,UAAAH,IACE,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAYC,EAAGC,EAAO,UAAU;AAAA,UAC5B,CAACA,EAAO,MAAM,GAAGL,MAAU;AAAA,UAC3B,CAACK,EAAO,KAAK,GAAGL,MAAU;AAAA,QAAA,CAC7B;AAAA,QAEC,UAAAN;AAAA,MAAA;AAAA,IAAA,IAGN,gBAAAS;AAAA,MAACG,EAAS;AAAA,MAAT;AAAA,QACG,OAAQX,MAAU,SAAY,MAAMA;AAAA,QACpC,UAAAC;AAAA,QACA,WAAYQ,EAAG;AAAA,UACX,CAACC,EAAO,MAAM,GAAGL,MAAU;AAAA,UAC3B,CAACK,EAAO,KAAK,GAAGL,MAAU;AAAA,QAAA,CAC7B;AAAA,QACD,OAAAD;AAAA,QACE,GAAGD;AAAA,MAAA;AAAA,IAAA;AAAA,EACT;AAER;"}
1
+ {"version":3,"file":"component.js","sources":["../../../../src/table/components/cell/component.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\n\nimport { Cell as BaseCell } from '../../../cell';\nimport { BaseProps } from '../../../cell/base/component';\n\nimport styles from './index.module.css';\n\nexport type CellProps = {\n className?: string;\n dataTestID?: string;\n title?: BaseProps['title'];\n subtitle?: BaseProps['subtitle'];\n cellProps?: Omit<BaseProps, 'title' | 'subtitle'>;\n tableProps?: React.TdHTMLAttributes<any>;\n addon?: React.ReactNode;\n children?: React.ReactNode;\n width?: string;\n align?: 'left' | 'right' | 'center';\n compact?: boolean;\n\n /**\n * HTML тег\n */\n tag?: 'td' | 'div';\n};\n\nexport const TableCell: React.FC<CellProps> = ({\n dataTestID,\n className,\n children,\n title,\n subtitle,\n tableProps,\n cellProps,\n addon,\n align,\n compact,\n width,\n tag: Component = 'td',\n}) => (\n <Component\n data-test-id={ dataTestID }\n className={ cn(styles.cell, className, {\n [styles.is_div]: Component === 'div',\n [styles.compact_cell]: compact,\n }) }\n style={ { width } }\n { ...tableProps }\n >\n { children ? (\n <div\n className={ cn(styles.children, {\n [styles.center]: align === 'center',\n [styles.right]: align === 'right',\n }) }\n >\n { children }\n </div>\n ) : (\n <BaseCell.Base\n title={ title === undefined ? '-' : title }\n subtitle={ subtitle }\n size={ cellProps?.size || 's' }\n compactAddon={ compact }\n singleLineTitle={ compact }\n showTitleTooltipOnOverflow={ compact }\n className={ cn({\n [styles.center]: align === 'center',\n [styles.right]: align === 'right',\n [styles.compact_content]: compact,\n }) }\n addon={ addon }\n { ...cellProps }\n />\n ) }\n </Component>\n);\n"],"names":["TableCell","dataTestID","className","children","title","subtitle","tableProps","cellProps","addon","align","compact","width","Component","jsx","cn","styles","BaseCell"],"mappings":";;;;AA2BO,MAAMA,IAAiC,CAAC;AAAA,EAC3C,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,KAAKC,IAAY;AACrB,MACI,gBAAAC;AAAA,EAACD;AAAA,EAAA;AAAA,IACG,gBAAeX;AAAA,IACf,WAAYa,EAAGC,EAAO,MAAMb,GAAW;AAAA,MACnC,CAACa,EAAO,MAAM,GAAGH,MAAc;AAAA,MAC/B,CAACG,EAAO,YAAY,GAAGL;AAAA,IAAA,CAC1B;AAAA,IACD,OAAQ,EAAE,OAAAC,EAAA;AAAA,IACR,GAAGL;AAAA,IAEH,UAAAH,IACE,gBAAAU;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAYC,EAAGC,EAAO,UAAU;AAAA,UAC5B,CAACA,EAAO,MAAM,GAAGN,MAAU;AAAA,UAC3B,CAACM,EAAO,KAAK,GAAGN,MAAU;AAAA,QAAA,CAC7B;AAAA,QAEC,UAAAN;AAAA,MAAA;AAAA,IAAA,IAGN,gBAAAU;AAAA,MAACG,EAAS;AAAA,MAAT;AAAA,QACG,OAAQZ,MAAU,SAAY,MAAMA;AAAA,QACpC,UAAAC;AAAA,QACA,OAAOE,KAAA,gBAAAA,EAAW,SAAQ;AAAA,QAC1B,cAAeG;AAAA,QACf,iBAAkBA;AAAA,QAClB,4BAA6BA;AAAA,QAC7B,WAAYI,EAAG;AAAA,UACX,CAACC,EAAO,MAAM,GAAGN,MAAU;AAAA,UAC3B,CAACM,EAAO,KAAK,GAAGN,MAAU;AAAA,UAC1B,CAACM,EAAO,eAAe,GAAGL;AAAA,QAAA,CAC7B;AAAA,QACD,OAAAF;AAAA,QACE,GAAGD;AAAA,MAAA;AAAA,IAAA;AAAA,EACT;AAER;"}
@@ -1 +1 @@
1
- table tr:last-child .cell_SVZP{border-bottom:0!important}.cell_SVZP{padding:0 16px;border-bottom:1px solid var(--color-border-secondary);position:relative;height:68px}.right_30pJ{justify-content:flex-end}.children_X057{width:100%;display:flex;align-items:center}.is_div_XHlH{min-height:68px;display:flex;align-items:center}
1
+ table tr:last-child .cell_SVZP{border-bottom:0!important}.cell_SVZP{padding:0 12px;border-bottom:1px solid var(--color-border-secondary);position:relative;height:52px}.compact_cell_zSJH{height:44px}.right_30pJ{justify-content:flex-end}.children_X057{width:100%;display:flex;align-items:center}.compact_content_bjnq{gap:0 6px!important;min-height:40px!important}.is_div_XHlH{min-height:52px;display:flex;align-items:center}
@@ -1,15 +1,19 @@
1
1
  import './index.module.css';
2
- const i = "cell_SVZP", l = "right_30pJ", c = "children_X057", s = "is_div_XHlH", t = {
3
- cell: i,
2
+ const c = "cell_SVZP", t = "compact_cell_zSJH", l = "right_30pJ", n = "children_X057", o = "compact_content_bjnq", e = "is_div_XHlH", _ = {
3
+ cell: c,
4
+ compact_cell: t,
4
5
  right: l,
5
- children: c,
6
- is_div: s
6
+ children: n,
7
+ compact_content: o,
8
+ is_div: e
7
9
  };
8
10
  export {
9
- i as cell,
10
- c as children,
11
- t as default,
12
- s as is_div,
11
+ c as cell,
12
+ n as children,
13
+ t as compact_cell,
14
+ o as compact_content,
15
+ _ as default,
16
+ e as is_div,
13
17
  l as right
14
18
  };
15
19
  //# sourceMappingURL=index.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1 +1 @@
1
- .header_row_-IYY{overflow:hidden}.header_row_-IYY th:only-child{border-radius:8px!important}.header_row_-IYY th:first-child{border-radius:8px 0 0 8px}.header_row_-IYY th:last-child{border-radius:0 8px 8px 0}.cell_c2wS{height:48px;padding:4px 16px;box-sizing:border-box;background:var(--color-bg-secondary);position:sticky;top:0;z-index:9}.clickable_uhII{cursor:pointer}.head_wrapper_WjtN{display:flex;align-items:center}.arrow_svnk{height:16px;width:16px;margin-left:12px;display:flex;flex-direction:column;color:var(--color-graphic-thirdly);opacity:.4}.accent_5Dn8{color:var(--color-graphic-primary)}.DESC_p2eV{transform:rotate(-90deg)}.ASC_fIiQ{transform:rotate(90deg)}
1
+ .header_row_-IYY{overflow:hidden}.header_row_-IYY th:only-child{border-radius:8px!important}.header_row_-IYY th:first-child{border-radius:8px 0 0 8px}.header_row_-IYY th:last-child{border-radius:0 8px 8px 0}.cell_c2wS{height:40px;padding:0 12px;box-sizing:border-box;background:var(--color-bg-secondary);position:sticky;top:0;z-index:9}.clickable_uhII{cursor:pointer}.head_wrapper_WjtN{display:flex;align-items:center}.arrow_svnk{height:16px;width:16px;margin-left:8px;display:flex;flex-direction:column;color:var(--color-graphic-thirdly);opacity:.4}.accent_5Dn8{color:var(--color-graphic-primary)}.DESC_p2eV{transform:rotate(-90deg)}.ASC_fIiQ{transform:rotate(90deg)}
@@ -1 +1 @@
1
- .table_header_GXu4{width:100%;margin-bottom:16px}.actions_GZKJ{display:flex;align-items:center;justify-content:space-between}.leftHeaderAddons_W8Yb{margin-right:16px!important}.tags_PpKz{margin-top:12px;display:flex;flex-wrap:wrap;margin-right:-12px}.tags_PpKz>*:not(:last-child):not(:only-child){margin-right:12px}.tags_PpKz>*{margin:4px 0}.tag_SqNT{margin-right:12px}.buttons_3CQY{display:flex;align-items:center}.buttons_3CQY button:not(:last-child){margin-right:12px}
1
+ .table_header_GXu4{width:100%;margin-bottom:12px}.actions_GZKJ{display:flex;align-items:center;justify-content:space-between}.leftHeaderAddons_W8Yb{margin-right:12px!important}.tags_PpKz{margin-top:8px;display:flex;flex-wrap:wrap;margin-right:-8px}.tags_PpKz>*:not(:last-child):not(:only-child){margin-right:8px}.tags_PpKz>*{margin:4px 0}.tag_SqNT{margin-right:8px}.buttons_3CQY{display:flex;align-items:center}.buttons_3CQY button:not(:last-child){margin-right:8px}
@@ -1,15 +1,18 @@
1
1
  import './index.module.css';
2
- const l = "table_wrapper_SeB5", e = "table_9sbd", a = "fill_Q-ic", t = "clickable_k4S8", c = {
2
+ const l = "table_wrapper_SeB5", t = "table_9sbd", a = "fill_Q-ic", c = "compact_kbrU", e = "clickable_k4S8", b = {
3
3
  table_wrapper: l,
4
- table: e,
4
+ table: t,
5
5
  fill: a,
6
- clickable: t
6
+ default: "default_BxOw",
7
+ compact: c,
8
+ clickable: e
7
9
  };
8
10
  export {
9
- t as clickable,
10
- c as default,
11
+ e as clickable,
12
+ c as compact,
13
+ b as default,
11
14
  a as fill,
12
- e as table,
15
+ t as table,
13
16
  l as table_wrapper
14
17
  };
15
18
  //# sourceMappingURL=index.module.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
1
+ {"version":3,"file":"index.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -20,6 +20,7 @@ type FiltersButton = {
20
20
  };
21
21
  export type TableProps<T extends object> = Records<T> & {
22
22
  columns: TableColumns<T>;
23
+ view?: 'default' | 'compact';
23
24
  searchPlaceholder?: string;
24
25
  rightHeaderAddons?: React.ReactNode;
25
26
  leftHeaderAddons?: React.ReactNode;
@@ -35,5 +36,5 @@ export type TableProps<T extends object> = Records<T> & {
35
36
  /** true — параметры из URL; false — только локальное состояние. */
36
37
  fromPath?: boolean;
37
38
  } & FiltersButton;
38
- export declare function Table<T extends object>({ columns, searchPlaceholder, records, hideSearch, rightHeaderAddons, leftHeaderAddons, filtersButtonLabel, createButtonLabel, loading, height, tagsBuilder, promise, onRowClick, onCreateClick, onFiltersClick, refetch, language, fromPath, }: TableProps<T>): JSX.Element;
39
+ export declare function Table<T extends object>({ columns, searchPlaceholder, records, hideSearch, rightHeaderAddons, leftHeaderAddons, filtersButtonLabel, createButtonLabel, loading, height, view, tagsBuilder, promise, onRowClick, onCreateClick, onFiltersClick, refetch, language, fromPath, }: TableProps<T>): JSX.Element;
39
40
  export {};
@@ -1,137 +1,143 @@
1
- import { jsxs as P, jsx as r } from "react/jsx-runtime";
2
- import W, { useMemo as D, useCallback as X } from "react";
3
- import E from "classnames";
4
- import { Cells as Y } from "./components/cells/index.js";
5
- import { EmptyList as Z } from "./components/empty-list/index.js";
6
- import { Error as $ } from "./components/error/index.js";
7
- import { Loading as A } from "./components/loading/index.js";
8
- import { Pagination as R } from "./components/pagination/index.js";
9
- import { TableHeader as tt } from "./components/table-header/index.js";
1
+ import { jsxs as P, jsx as e } from "react/jsx-runtime";
2
+ import Y, { useMemo as E, useCallback as Z } from "react";
3
+ import N from "classnames";
4
+ import { Cells as $ } from "./components/cells/index.js";
5
+ import { EmptyList as w } from "./components/empty-list/index.js";
6
+ import { Error as A } from "./components/error/index.js";
7
+ import { Loading as R } from "./components/loading/index.js";
8
+ import { Pagination as tt } from "./components/pagination/index.js";
9
+ import { TableHeader as rt } from "./components/table-header/index.js";
10
10
  import { useTableData as et } from "./hooks/use-table-data.js";
11
- import { getTags as rt } from "./utils/get-tags.js";
12
- import { prepareRows as at } from "./utils/prepare-rows.js";
13
- import m from "./index.module.css.js";
14
- function gt({
15
- columns: o,
16
- searchPlaceholder: N = "Поиск по таблице",
17
- records: j,
18
- hideSearch: f,
19
- rightHeaderAddons: h,
20
- leftHeaderAddons: b,
21
- filtersButtonLabel: C,
22
- createButtonLabel: H,
23
- loading: S,
24
- height: k = "fill",
25
- tagsBuilder: w,
26
- promise: g,
27
- onRowClick: i,
28
- onCreateClick: d,
29
- onFiltersClick: l,
30
- refetch: B,
31
- language: s,
32
- fromPath: M = !0
11
+ import { getTags as at } from "./utils/get-tags.js";
12
+ import { prepareRows as ot } from "./utils/prepare-rows.js";
13
+ import o from "./index.module.css.js";
14
+ function ut({
15
+ columns: l,
16
+ searchPlaceholder: j = "Поиск по таблице",
17
+ records: C,
18
+ hideSearch: h,
19
+ rightHeaderAddons: b,
20
+ leftHeaderAddons: g,
21
+ filtersButtonLabel: H,
22
+ createButtonLabel: S,
23
+ loading: k,
24
+ height: B = "fill",
25
+ view: d = "default",
26
+ tagsBuilder: M,
27
+ promise: u,
28
+ onRowClick: s,
29
+ onCreateClick: n,
30
+ onFiltersClick: i,
31
+ refetch: V,
32
+ language: m,
33
+ fromPath: _ = !0
33
34
  }) {
34
35
  const {
35
- loading: V,
36
- error: u,
37
- data: v,
38
- total: _,
36
+ loading: q,
37
+ error: y,
38
+ data: T,
39
+ total: z,
39
40
  params: t,
40
- pagesCount: q,
41
- updateData: n,
42
- addParam: z,
43
- removeParam: F,
44
- resetParams: y
41
+ pagesCount: F,
42
+ updateData: c,
43
+ addParam: G,
44
+ removeParam: I,
45
+ resetParams: v
45
46
  } = et({
46
- promise: g,
47
- records: j,
48
- fromPath: M
49
- }), T = D(
50
- () => [...v || []].sort(
51
- (e, a) => (e.sortPosition || 0) - (a.sortPosition || 0)
47
+ promise: u,
48
+ records: C,
49
+ fromPath: _
50
+ }), x = E(
51
+ () => [...T || []].sort(
52
+ (r, a) => (r.sortPosition || 0) - (a.sortPosition || 0)
52
53
  ),
53
- [v]
54
- ), G = (e) => i == null ? void 0 : i(e, n), I = d ? () => d(n) : void 0, J = X(
55
- (e) => {
56
- y(e);
54
+ [T]
55
+ ), J = (r) => s == null ? void 0 : s(r, c), K = n ? () => n(c) : void 0, O = Z(
56
+ (r) => {
57
+ v(r);
57
58
  },
58
- [y]
59
- ), x = () => l ? l({
60
- submitCallback: (e) => J(e),
59
+ [v]
60
+ ), L = () => i ? i({
61
+ submitCallback: (r) => O(r),
61
62
  initialValues: t
62
- }) : null, c = (e) => {
63
- z(e);
64
- }, K = (e, a) => {
65
- F(e, a);
66
- }, O = rt({
63
+ }) : null, p = (r) => {
64
+ G(r);
65
+ }, Q = (r, a) => {
66
+ I(r, a);
67
+ }, U = at({
67
68
  params: (t == null ? void 0 : t.where) || {},
68
- onDelete: K,
69
- tagsBuilder: w,
70
- onClick: x
71
- }), L = D(
72
- () => at({ columns: o, data: T, refetch: B || n }),
69
+ onDelete: Q,
70
+ tagsBuilder: M,
71
+ onClick: L
72
+ }), D = E(
73
+ () => ot({
74
+ columns: l,
75
+ view: d,
76
+ data: x,
77
+ refetch: V || c
78
+ }),
73
79
  // eslint-disable-next-line react-hooks/exhaustive-deps
74
- [T, o]
75
- ), p = V || S;
76
- return /* @__PURE__ */ P("div", { className: E(m.table_wrapper, m[k]), children: [
77
- (!f || h || b || d || l) && /* @__PURE__ */ r(
78
- tt,
80
+ [x, l, d]
81
+ ), f = q || k;
82
+ return /* @__PURE__ */ P("div", { className: N(o.table_wrapper, o[B], o[d]), children: [
83
+ (!h || b || g || n || i) && /* @__PURE__ */ e(
84
+ rt,
79
85
  {
80
- language: s,
81
- hideSearch: f,
82
- rightHeaderAddons: h,
83
- leftHeaderAddons: b,
86
+ language: m,
87
+ hideSearch: h,
88
+ rightHeaderAddons: b,
89
+ leftHeaderAddons: g,
84
90
  searchText: (t == null ? void 0 : t.searchText) || "",
85
- addParam: c,
86
- searchPlaceholder: N,
87
- filtersButtonLabel: C,
88
- tags: O,
89
- onCreateClick: I,
90
- createButtonLabel: H,
91
- onFiltersClick: x,
92
- showFiltersButton: !!l
91
+ addParam: p,
92
+ searchPlaceholder: j,
93
+ filtersButtonLabel: H,
94
+ tags: U,
95
+ onCreateClick: K,
96
+ createButtonLabel: S,
97
+ onFiltersClick: L,
98
+ showFiltersButton: !!i
93
99
  }
94
100
  ),
95
- /* @__PURE__ */ r("div", { className: m.table, children: /* @__PURE__ */ P("table", { cellSpacing: "0", cellPadding: "0", children: [
96
- /* @__PURE__ */ r(
97
- Y,
101
+ /* @__PURE__ */ e("div", { className: o.table, children: /* @__PURE__ */ P("table", { cellSpacing: "0", cellPadding: "0", children: [
102
+ /* @__PURE__ */ e(
103
+ $,
98
104
  {
99
105
  sort: t == null ? void 0 : t.sort,
100
106
  order: t == null ? void 0 : t.order,
101
- addParam: c,
102
- columns: o
107
+ addParam: p,
108
+ columns: l
103
109
  }
104
110
  ),
105
111
  /* @__PURE__ */ P("tbody", { children: [
106
- u && /* @__PURE__ */ r($, { language: s }),
107
- !L.length && !p && !u && /* @__PURE__ */ r(Z, { language: s }),
108
- p && /* @__PURE__ */ r(A, { columnsLength: o.length }),
109
- L.map(({ row: e, cells: a }) => /* @__PURE__ */ r(
112
+ y && /* @__PURE__ */ e(A, { language: m }),
113
+ !D.length && !f && !y && /* @__PURE__ */ e(w, { language: m }),
114
+ f && /* @__PURE__ */ e(R, { columnsLength: l.length }),
115
+ D.map(({ row: r, cells: a }) => /* @__PURE__ */ e(
110
116
  "tr",
111
117
  {
112
- onClick: () => G(e),
113
- className: E({ [m.clickable]: !!i }),
114
- style: { visibility: p ? "collapse" : "visible" },
115
- children: a.map((Q, U) => W.cloneElement(Q, { key: U }))
118
+ onClick: () => J(r),
119
+ className: N({ [o.clickable]: !!s }),
120
+ style: { visibility: f ? "collapse" : "visible" },
121
+ children: a.map((W, X) => Y.cloneElement(W, { key: X }))
116
122
  },
117
- String(e.id)
123
+ String(r.id)
118
124
  ))
119
125
  ] })
120
126
  ] }) }),
121
- !!g && /* @__PURE__ */ r(
122
- R,
127
+ !!u && /* @__PURE__ */ e(
128
+ tt,
123
129
  {
124
- language: s,
130
+ language: m,
125
131
  currentPage: t ? +t.page : 1,
126
132
  recordsPerPage: t ? +t.limit : 10,
127
- pagesCount: +q,
128
- addParam: c,
129
- total: +_
133
+ pagesCount: +F,
134
+ addParam: p,
135
+ total: +z
130
136
  }
131
137
  )
132
138
  ] });
133
139
  }
134
140
  export {
135
- gt as Table
141
+ ut as Table
136
142
  };
137
143
  //# sourceMappingURL=table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sources":["../../src/table/table.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable react/no-array-index-key */\n/* eslint-disable @typescript-eslint/ban-types */\nimport React, {\n useCallback, useMemo,\n} from 'react';\nimport cn from 'classnames';\n\nimport { ApiMethodDeclaration, MakeServiceFromServiceDeclaration } from '../typings/api';\n\nimport { Cells } from './components/cells';\nimport { EmptyList } from './components/empty-list';\nimport { Error } from './components/error';\nimport { Loading } from './components/loading';\nimport { Pagination } from './components/pagination';\nimport { TableHeader } from './components/table-header';\nimport { useTableData } from './hooks/use-table-data';\nimport { getTags } from './utils/get-tags';\nimport { prepareRows } from './utils/prepare-rows';\nimport {\n FiltersMapper, OnFiltersClickProps, Query, TableColumns,\n} from './types';\n\nimport styles from './index.module.css';\n\ntype Records<T> =\n | {\n records: T[];\n promise?: never;\n }\n | {\n records?: never;\n promise: MakeServiceFromServiceDeclaration<\n ApiMethodDeclaration<any, { items: T[]; meta: any }>\n >;\n };\n\ntype FiltersButton =\n | {\n onFiltersClick: (props: OnFiltersClickProps) => void;\n filtersButtonLabel: string;\n }\n | {\n onFiltersClick?: never;\n filtersButtonLabel?: never;\n };\n\nexport type TableProps<T extends object> = Records<T> & {\n columns: TableColumns<T>;\n searchPlaceholder?: string;\n rightHeaderAddons?: React.ReactNode;\n leftHeaderAddons?: React.ReactNode;\n createButtonLabel?: string;\n hideSearch?: boolean;\n loading?: boolean;\n height?: 'fill' | 'default';\n tagsBuilder?: (props: FiltersMapper) => JSX.Element | null;\n onCreateClick?: (refech: () => void) => void;\n refetch?: () => void;\n onRowClick?: (params: T, refech: () => void) => void;\n language: 'de' | 'ru' | 'en';\n\n /** true — параметры из URL; false — только локальное состояние. */\n fromPath?: boolean;\n} & FiltersButton;\n\nexport function Table<T extends object>({\n columns,\n searchPlaceholder = 'Поиск по таблице',\n records,\n hideSearch,\n rightHeaderAddons,\n leftHeaderAddons,\n filtersButtonLabel,\n createButtonLabel,\n loading,\n height = 'fill',\n tagsBuilder,\n promise,\n onRowClick,\n onCreateClick,\n onFiltersClick,\n refetch,\n language,\n fromPath = true,\n}: TableProps<T>) {\n const {\n loading: dataLoading,\n error,\n data,\n total,\n params,\n pagesCount,\n updateData,\n\n addParam,\n removeParam,\n resetParams,\n } = useTableData({\n promise,\n records,\n fromPath,\n });\n\n const dataSorted = useMemo(\n () => [...(data || [])].sort(\n (a: any, b: any) => (a.sortPosition || 0) - (b.sortPosition || 0),\n ),\n [data],\n );\n\n const handleRowClick = (p: T) => onRowClick?.(p, updateData);\n const handleCreateClick = onCreateClick ? () => onCreateClick(updateData) : undefined;\n\n const resetParamsHandler = useCallback(\n (param: Query) => {\n resetParams(param);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },\n [resetParams],\n );\n\n const handleFiltesClick = () =>\n (onFiltersClick\n ? onFiltersClick({\n submitCallback: (values) => resetParamsHandler(values),\n initialValues: params,\n })\n : null);\n\n const addParamHandler = (param: Query) => {\n addParam(param);\n };\n\n const removeParamHandler = (paramName: string, id?: string) => {\n removeParam(paramName, id);\n };\n\n const tags = getTags({\n params: params?.where || {},\n onDelete: removeParamHandler,\n tagsBuilder,\n onClick: handleFiltesClick,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const rows = useMemo(\n () => prepareRows({ columns, data: dataSorted, refetch: refetch || updateData }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataSorted, columns],\n );\n\n const showLoader = dataLoading || loading;\n\n return (\n <div className={ cn(styles.table_wrapper, styles[height]) }>\n { (!hideSearch ||\n rightHeaderAddons ||\n leftHeaderAddons ||\n onCreateClick ||\n onFiltersClick) && (\n <TableHeader\n language={ language }\n hideSearch={ hideSearch }\n rightHeaderAddons={ rightHeaderAddons }\n leftHeaderAddons={ leftHeaderAddons }\n searchText={ params?.searchText || '' }\n addParam={ addParamHandler }\n searchPlaceholder={ searchPlaceholder }\n filtersButtonLabel={ filtersButtonLabel }\n tags={ tags }\n onCreateClick={ handleCreateClick }\n createButtonLabel={ createButtonLabel }\n onFiltersClick={ handleFiltesClick }\n showFiltersButton={ !!onFiltersClick }\n />\n ) }\n\n <div className={ styles.table }>\n <table cellSpacing=\"0\" cellPadding=\"0\">\n <Cells\n sort={ params?.sort }\n order={ params?.order }\n addParam={ addParamHandler }\n columns={ columns }\n />\n\n <tbody>\n { error && <Error language={ language } /> }\n\n { !rows.length && !showLoader && !error && (\n <EmptyList language={ language } />\n ) }\n\n { showLoader && <Loading columnsLength={ columns.length } /> }\n\n { rows.map(({ row, cells }) => (\n <tr\n key={ String((row as any).id) }\n onClick={ () => handleRowClick(row as T) }\n className={ cn({ [styles.clickable]: !!onRowClick }) }\n style={ { visibility: showLoader ? 'collapse' : 'visible' } }\n >\n { cells.map((cell, i) =>\n React.cloneElement(cell as any, { key: i })) }\n </tr>\n )) }\n </tbody>\n </table>\n </div>\n\n { !!promise && (\n <Pagination\n language={ language }\n currentPage={ params ? +params.page : 1 }\n recordsPerPage={ params ? +params.limit : 10 }\n pagesCount={ +pagesCount }\n addParam={ addParamHandler }\n total={ +total }\n />\n ) }\n </div>\n );\n}\n"],"names":["Table","columns","searchPlaceholder","records","hideSearch","rightHeaderAddons","leftHeaderAddons","filtersButtonLabel","createButtonLabel","loading","height","tagsBuilder","promise","onRowClick","onCreateClick","onFiltersClick","refetch","language","fromPath","dataLoading","error","data","total","params","pagesCount","updateData","addParam","removeParam","resetParams","useTableData","dataSorted","useMemo","a","b","handleRowClick","p","handleCreateClick","resetParamsHandler","useCallback","param","handleFiltesClick","values","addParamHandler","removeParamHandler","paramName","id","tags","getTags","rows","prepareRows","showLoader","jsxs","cn","styles","jsx","TableHeader","Cells","Error","EmptyList","Loading","row","cells","cell","i","React","Pagination"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","sources":["../../src/table/table.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable react/no-array-index-key */\n/* eslint-disable @typescript-eslint/ban-types */\nimport React, {\n useCallback, useMemo,\n} from 'react';\nimport cn from 'classnames';\n\nimport { ApiMethodDeclaration, MakeServiceFromServiceDeclaration } from '../typings/api';\n\nimport { Cells } from './components/cells';\nimport { EmptyList } from './components/empty-list';\nimport { Error } from './components/error';\nimport { Loading } from './components/loading';\nimport { Pagination } from './components/pagination';\nimport { TableHeader } from './components/table-header';\nimport { useTableData } from './hooks/use-table-data';\nimport { getTags } from './utils/get-tags';\nimport { prepareRows } from './utils/prepare-rows';\nimport {\n FiltersMapper, OnFiltersClickProps, Query, TableColumns,\n} from './types';\n\nimport styles from './index.module.css';\n\ntype Records<T> =\n | {\n records: T[];\n promise?: never;\n }\n | {\n records?: never;\n promise: MakeServiceFromServiceDeclaration<\n ApiMethodDeclaration<any, { items: T[]; meta: any }>\n >;\n };\n\ntype FiltersButton =\n | {\n onFiltersClick: (props: OnFiltersClickProps) => void;\n filtersButtonLabel: string;\n }\n | {\n onFiltersClick?: never;\n filtersButtonLabel?: never;\n };\n\nexport type TableProps<T extends object> = Records<T> & {\n columns: TableColumns<T>;\n view?: 'default' | 'compact';\n searchPlaceholder?: string;\n rightHeaderAddons?: React.ReactNode;\n leftHeaderAddons?: React.ReactNode;\n createButtonLabel?: string;\n hideSearch?: boolean;\n loading?: boolean;\n height?: 'fill' | 'default';\n tagsBuilder?: (props: FiltersMapper) => JSX.Element | null;\n onCreateClick?: (refech: () => void) => void;\n refetch?: () => void;\n onRowClick?: (params: T, refech: () => void) => void;\n language: 'de' | 'ru' | 'en';\n\n /** true — параметры из URL; false — только локальное состояние. */\n fromPath?: boolean;\n} & FiltersButton;\n\nexport function Table<T extends object>({\n columns,\n searchPlaceholder = 'Поиск по таблице',\n records,\n hideSearch,\n rightHeaderAddons,\n leftHeaderAddons,\n filtersButtonLabel,\n createButtonLabel,\n loading,\n height = 'fill',\n view = 'default',\n tagsBuilder,\n promise,\n onRowClick,\n onCreateClick,\n onFiltersClick,\n refetch,\n language,\n fromPath = true,\n}: TableProps<T>) {\n const {\n loading: dataLoading,\n error,\n data,\n total,\n params,\n pagesCount,\n updateData,\n\n addParam,\n removeParam,\n resetParams,\n } = useTableData({\n promise,\n records,\n fromPath,\n });\n\n const dataSorted = useMemo(\n () => [...(data || [])].sort(\n (a: any, b: any) => (a.sortPosition || 0) - (b.sortPosition || 0),\n ),\n [data],\n );\n\n const handleRowClick = (p: T) => onRowClick?.(p, updateData);\n const handleCreateClick = onCreateClick ? () => onCreateClick(updateData) : undefined;\n\n const resetParamsHandler = useCallback(\n (param: Query) => {\n resetParams(param);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },\n [resetParams],\n );\n\n const handleFiltesClick = () =>\n (onFiltersClick\n ? onFiltersClick({\n submitCallback: (values) => resetParamsHandler(values),\n initialValues: params,\n })\n : null);\n\n const addParamHandler = (param: Query) => {\n addParam(param);\n };\n\n const removeParamHandler = (paramName: string, id?: string) => {\n removeParam(paramName, id);\n };\n\n const tags = getTags({\n params: params?.where || {},\n onDelete: removeParamHandler,\n tagsBuilder,\n onClick: handleFiltesClick,\n });\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const rows = useMemo(\n () => prepareRows({\n columns,\n view,\n data: dataSorted,\n refetch: refetch || updateData,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataSorted, columns, view],\n );\n\n const showLoader = dataLoading || loading;\n\n return (\n <div className={ cn(styles.table_wrapper, styles[height], styles[view]) }>\n { (!hideSearch ||\n rightHeaderAddons ||\n leftHeaderAddons ||\n onCreateClick ||\n onFiltersClick) && (\n <TableHeader\n language={ language }\n hideSearch={ hideSearch }\n rightHeaderAddons={ rightHeaderAddons }\n leftHeaderAddons={ leftHeaderAddons }\n searchText={ params?.searchText || '' }\n addParam={ addParamHandler }\n searchPlaceholder={ searchPlaceholder }\n filtersButtonLabel={ filtersButtonLabel }\n tags={ tags }\n onCreateClick={ handleCreateClick }\n createButtonLabel={ createButtonLabel }\n onFiltersClick={ handleFiltesClick }\n showFiltersButton={ !!onFiltersClick }\n />\n ) }\n\n <div className={ styles.table }>\n <table cellSpacing=\"0\" cellPadding=\"0\">\n <Cells\n sort={ params?.sort }\n order={ params?.order }\n addParam={ addParamHandler }\n columns={ columns }\n />\n\n <tbody>\n { error && <Error language={ language } /> }\n\n { !rows.length && !showLoader && !error && (\n <EmptyList language={ language } />\n ) }\n\n { showLoader && <Loading columnsLength={ columns.length } /> }\n\n { rows.map(({ row, cells }) => (\n <tr\n key={ String((row as any).id) }\n onClick={ () => handleRowClick(row as T) }\n className={ cn({ [styles.clickable]: !!onRowClick }) }\n style={ { visibility: showLoader ? 'collapse' : 'visible' } }\n >\n { cells.map((cell, i) =>\n React.cloneElement(cell as any, { key: i })) }\n </tr>\n )) }\n </tbody>\n </table>\n </div>\n\n { !!promise && (\n <Pagination\n language={ language }\n currentPage={ params ? +params.page : 1 }\n recordsPerPage={ params ? +params.limit : 10 }\n pagesCount={ +pagesCount }\n addParam={ addParamHandler }\n total={ +total }\n />\n ) }\n </div>\n );\n}\n"],"names":["Table","columns","searchPlaceholder","records","hideSearch","rightHeaderAddons","leftHeaderAddons","filtersButtonLabel","createButtonLabel","loading","height","view","tagsBuilder","promise","onRowClick","onCreateClick","onFiltersClick","refetch","language","fromPath","dataLoading","error","data","total","params","pagesCount","updateData","addParam","removeParam","resetParams","useTableData","dataSorted","useMemo","a","b","handleRowClick","p","handleCreateClick","resetParamsHandler","useCallback","param","handleFiltesClick","values","addParamHandler","removeParamHandler","paramName","id","tags","getTags","rows","prepareRows","showLoader","jsxs","cn","styles","jsx","TableHeader","Cells","Error","EmptyList","Loading","row","cells","cell","i","React","Pagination"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { TableProps } from '../table';
2
2
  type Props<T extends object> = {
3
3
  columns: TableProps<T>['columns'];
4
+ view: TableProps<T>['view'];
4
5
  data: T[];
5
6
  refetch: () => void;
6
7
  };
7
- export declare function prepareRows<T extends object>({ columns, data, refetch }: Props<T>): {
8
+ export declare function prepareRows<T extends object>({ columns, view, data, refetch, }: Props<T>): {
8
9
  row: T;
9
10
  cells: JSX.Element[];
10
11
  }[];