@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.
- package/dist/badge/component.d.ts +1 -1
- package/dist/badge/component.js +19 -19
- package/dist/badge/component.js.map +1 -1
- package/dist/badge/index.module.css +1 -1
- package/dist/badge/index.module.css.js +46 -32
- package/dist/badge/index.module.css.js.map +1 -1
- package/dist/cell/base/component.d.ts +6 -0
- package/dist/cell/base/component.js +69 -37
- package/dist/cell/base/component.js.map +1 -1
- package/dist/cell/base/index.module.css +1 -1
- package/dist/cell/base/index.module.css.js +12 -8
- package/dist/cell/base/index.module.css.js.map +1 -1
- package/dist/cell/pure/component.d.ts +2 -0
- package/dist/cell/pure/component.js +16 -14
- package/dist/cell/pure/component.js.map +1 -1
- package/dist/cell/pure/index.module.css +1 -1
- package/dist/cell/pure/index.module.css.js +16 -14
- package/dist/cell/pure/index.module.css.js.map +1 -1
- package/dist/filter-tag/component.d.ts +12 -0
- package/dist/filter-tag/component.js +38 -0
- package/dist/filter-tag/component.js.map +1 -0
- package/dist/filter-tag/index.d.ts +1 -0
- package/dist/filter-tag/index.js +5 -0
- package/dist/filter-tag/index.js.map +1 -0
- package/dist/filter-tag/index.module.css +1 -0
- package/dist/filter-tag/index.module.css.js +29 -0
- package/dist/filter-tag/index.module.css.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +268 -266
- package/dist/index.js.map +1 -1
- package/dist/table/columns.js +2 -4
- package/dist/table/columns.js.map +1 -1
- package/dist/table/components/cell/component.d.ts +1 -0
- package/dist/table/components/cell/component.js +42 -35
- package/dist/table/components/cell/component.js.map +1 -1
- package/dist/table/components/cell/index.module.css +1 -1
- package/dist/table/components/cell/index.module.css.js +12 -8
- package/dist/table/components/cell/index.module.css.js.map +1 -1
- package/dist/table/components/cells/index.module.css +1 -1
- package/dist/table/components/table-header/index.module.css +1 -1
- package/dist/table/index.module.css.js +9 -6
- package/dist/table/index.module.css.js.map +1 -1
- package/dist/table/table.d.ts +2 -1
- package/dist/table/table.js +107 -101
- package/dist/table/table.js.map +1 -1
- package/dist/table/utils/prepare-rows.d.ts +2 -1
- package/dist/table/utils/prepare-rows.js +60 -27
- package/dist/table/utils/prepare-rows.js.map +1 -1
- 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/table/columns.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
-
|
|
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
|
-
|
|
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 {
|
|
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;"}
|
|
@@ -1,53 +1,60 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import
|
|
3
|
-
import { Cell as
|
|
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
|
|
6
|
-
dataTestID:
|
|
7
|
-
className:
|
|
8
|
-
children:
|
|
9
|
-
title:
|
|
10
|
-
subtitle:
|
|
11
|
-
tableProps:
|
|
12
|
-
cellProps:
|
|
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:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
align: r,
|
|
15
|
+
compact: t,
|
|
16
|
+
width: v,
|
|
17
|
+
tag: n = "td"
|
|
18
|
+
}) => /* @__PURE__ */ s(
|
|
19
|
+
n,
|
|
19
20
|
{
|
|
20
|
-
"data-test-id":
|
|
21
|
-
className:
|
|
22
|
-
[e.is_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:
|
|
25
|
-
...
|
|
26
|
-
children:
|
|
26
|
+
style: { width: v },
|
|
27
|
+
...h,
|
|
28
|
+
children: m ? /* @__PURE__ */ s(
|
|
27
29
|
"div",
|
|
28
30
|
{
|
|
29
|
-
className:
|
|
30
|
-
[e.center]:
|
|
31
|
-
[e.right]:
|
|
31
|
+
className: d(e.children, {
|
|
32
|
+
[e.center]: r === "center",
|
|
33
|
+
[e.right]: r === "right"
|
|
32
34
|
}),
|
|
33
|
-
children:
|
|
35
|
+
children: m
|
|
34
36
|
}
|
|
35
|
-
) : /* @__PURE__ */
|
|
36
|
-
|
|
37
|
+
) : /* @__PURE__ */ s(
|
|
38
|
+
T.Base,
|
|
37
39
|
{
|
|
38
|
-
title:
|
|
39
|
-
subtitle:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
...
|
|
52
|
+
...i
|
|
46
53
|
}
|
|
47
54
|
)
|
|
48
55
|
}
|
|
49
56
|
);
|
|
50
57
|
export {
|
|
51
|
-
|
|
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":";;;;
|
|
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
|
|
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
|
|
3
|
-
cell:
|
|
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:
|
|
6
|
-
|
|
6
|
+
children: n,
|
|
7
|
+
compact_content: o,
|
|
8
|
+
is_div: e
|
|
7
9
|
};
|
|
8
10
|
export {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
t as
|
|
12
|
-
|
|
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:
|
|
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:
|
|
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",
|
|
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:
|
|
4
|
+
table: t,
|
|
5
5
|
fill: a,
|
|
6
|
-
|
|
6
|
+
default: "default_BxOw",
|
|
7
|
+
compact: c,
|
|
8
|
+
clickable: e
|
|
7
9
|
};
|
|
8
10
|
export {
|
|
9
|
-
|
|
10
|
-
c as
|
|
11
|
+
e as clickable,
|
|
12
|
+
c as compact,
|
|
13
|
+
b as default,
|
|
11
14
|
a as fill,
|
|
12
|
-
|
|
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":";;;;;;;;"}
|
package/dist/table/table.d.ts
CHANGED
|
@@ -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 {};
|
package/dist/table/table.js
CHANGED
|
@@ -1,137 +1,143 @@
|
|
|
1
|
-
import { jsxs as P, jsx as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { Cells as
|
|
5
|
-
import { EmptyList as
|
|
6
|
-
import { Error as
|
|
7
|
-
import { Loading as
|
|
8
|
-
import { Pagination as
|
|
9
|
-
import { TableHeader as
|
|
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
|
|
12
|
-
import { prepareRows as
|
|
13
|
-
import
|
|
14
|
-
function
|
|
15
|
-
columns:
|
|
16
|
-
searchPlaceholder:
|
|
17
|
-
records:
|
|
18
|
-
hideSearch:
|
|
19
|
-
rightHeaderAddons:
|
|
20
|
-
leftHeaderAddons:
|
|
21
|
-
filtersButtonLabel:
|
|
22
|
-
createButtonLabel:
|
|
23
|
-
loading:
|
|
24
|
-
height:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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:
|
|
36
|
-
error:
|
|
37
|
-
data:
|
|
38
|
-
total:
|
|
36
|
+
loading: q,
|
|
37
|
+
error: y,
|
|
38
|
+
data: T,
|
|
39
|
+
total: z,
|
|
39
40
|
params: t,
|
|
40
|
-
pagesCount:
|
|
41
|
-
updateData:
|
|
42
|
-
addParam:
|
|
43
|
-
removeParam:
|
|
44
|
-
resetParams:
|
|
41
|
+
pagesCount: F,
|
|
42
|
+
updateData: c,
|
|
43
|
+
addParam: G,
|
|
44
|
+
removeParam: I,
|
|
45
|
+
resetParams: v
|
|
45
46
|
} = et({
|
|
46
|
-
promise:
|
|
47
|
-
records:
|
|
48
|
-
fromPath:
|
|
49
|
-
}),
|
|
50
|
-
() => [...
|
|
51
|
-
(
|
|
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
|
-
[
|
|
54
|
-
),
|
|
55
|
-
(
|
|
56
|
-
|
|
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
|
-
[
|
|
59
|
-
),
|
|
60
|
-
submitCallback: (
|
|
59
|
+
[v]
|
|
60
|
+
), L = () => i ? i({
|
|
61
|
+
submitCallback: (r) => O(r),
|
|
61
62
|
initialValues: t
|
|
62
|
-
}) : null,
|
|
63
|
-
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
},
|
|
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:
|
|
69
|
-
tagsBuilder:
|
|
70
|
-
onClick:
|
|
71
|
-
}),
|
|
72
|
-
() =>
|
|
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
|
-
[
|
|
75
|
-
),
|
|
76
|
-
return /* @__PURE__ */ P("div", { className:
|
|
77
|
-
(!
|
|
78
|
-
|
|
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:
|
|
81
|
-
hideSearch:
|
|
82
|
-
rightHeaderAddons:
|
|
83
|
-
leftHeaderAddons:
|
|
86
|
+
language: m,
|
|
87
|
+
hideSearch: h,
|
|
88
|
+
rightHeaderAddons: b,
|
|
89
|
+
leftHeaderAddons: g,
|
|
84
90
|
searchText: (t == null ? void 0 : t.searchText) || "",
|
|
85
|
-
addParam:
|
|
86
|
-
searchPlaceholder:
|
|
87
|
-
filtersButtonLabel:
|
|
88
|
-
tags:
|
|
89
|
-
onCreateClick:
|
|
90
|
-
createButtonLabel:
|
|
91
|
-
onFiltersClick:
|
|
92
|
-
showFiltersButton: !!
|
|
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__ */
|
|
96
|
-
/* @__PURE__ */
|
|
97
|
-
|
|
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:
|
|
102
|
-
columns:
|
|
107
|
+
addParam: p,
|
|
108
|
+
columns: l
|
|
103
109
|
}
|
|
104
110
|
),
|
|
105
111
|
/* @__PURE__ */ P("tbody", { children: [
|
|
106
|
-
|
|
107
|
-
!
|
|
108
|
-
|
|
109
|
-
|
|
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: () =>
|
|
113
|
-
className:
|
|
114
|
-
style: { visibility:
|
|
115
|
-
children: a.map((
|
|
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(
|
|
123
|
+
String(r.id)
|
|
118
124
|
))
|
|
119
125
|
] })
|
|
120
126
|
] }) }),
|
|
121
|
-
!!
|
|
122
|
-
|
|
127
|
+
!!u && /* @__PURE__ */ e(
|
|
128
|
+
tt,
|
|
123
129
|
{
|
|
124
|
-
language:
|
|
130
|
+
language: m,
|
|
125
131
|
currentPage: t ? +t.page : 1,
|
|
126
132
|
recordsPerPage: t ? +t.limit : 10,
|
|
127
|
-
pagesCount: +
|
|
128
|
-
addParam:
|
|
129
|
-
total: +
|
|
133
|
+
pagesCount: +F,
|
|
134
|
+
addParam: p,
|
|
135
|
+
total: +z
|
|
130
136
|
}
|
|
131
137
|
)
|
|
132
138
|
] });
|
|
133
139
|
}
|
|
134
140
|
export {
|
|
135
|
-
|
|
141
|
+
ut as Table
|
|
136
142
|
};
|
|
137
143
|
//# sourceMappingURL=table.js.map
|
package/dist/table/table.js.map
CHANGED
|
@@ -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
|
}[];
|