@alphakits/ui 2.0.6 → 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 (56) 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/sidepanel/component.d.ts +1 -0
  32. package/dist/sidepanel/component.js +22 -20
  33. package/dist/sidepanel/component.js.map +1 -1
  34. package/dist/sidepanel-header/component.d.ts +1 -0
  35. package/dist/sidepanel-header/component.js +9 -8
  36. package/dist/sidepanel-header/component.js.map +1 -1
  37. package/dist/sidepanel-header/index.module.css +1 -1
  38. package/dist/table/columns.js +2 -4
  39. package/dist/table/columns.js.map +1 -1
  40. package/dist/table/components/cell/component.d.ts +1 -0
  41. package/dist/table/components/cell/component.js +42 -35
  42. package/dist/table/components/cell/component.js.map +1 -1
  43. package/dist/table/components/cell/index.module.css +1 -1
  44. package/dist/table/components/cell/index.module.css.js +12 -8
  45. package/dist/table/components/cell/index.module.css.js.map +1 -1
  46. package/dist/table/components/cells/index.module.css +1 -1
  47. package/dist/table/components/table-header/index.module.css +1 -1
  48. package/dist/table/index.module.css.js +9 -6
  49. package/dist/table/index.module.css.js.map +1 -1
  50. package/dist/table/table.d.ts +2 -1
  51. package/dist/table/table.js +107 -101
  52. package/dist/table/table.js.map +1 -1
  53. package/dist/table/utils/prepare-rows.d.ts +2 -1
  54. package/dist/table/utils/prepare-rows.js +60 -27
  55. package/dist/table/utils/prepare-rows.js.map +1 -1
  56. package/package.json +1 -1
@@ -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
  }[];
@@ -1,40 +1,73 @@
1
- import { jsx as s } from "react/jsx-runtime";
2
- import w from "@alphakits/icons/dist/PhotoM";
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import S from "@alphakits/icons/dist/PhotoM";
3
3
  import { Image as f } from "../../image/component.js";
4
- import { TableCell as v } from "../components/cell/component.js";
5
- function m(n, o, i) {
6
- return n ? typeof n == "string" ? o[n] : typeof n == "function" ? n({ row: o, refetch: i }) : null : null;
4
+ import { TableCell as A } from "../components/cell/component.js";
5
+ function p(t, i, s) {
6
+ return t ? typeof t == "string" ? i[t] : typeof t == "function" ? t({ row: i, refetch: s }) : null : null;
7
7
  }
8
- function S(n, o, i) {
9
- return n ? typeof n == "string" ? o[n] : typeof n == "function" ? n({ row: o, refetch: i }) : null : null;
8
+ function z(t, i, s) {
9
+ return t ? typeof t == "string" ? i[t] : typeof t == "function" ? t({ row: i, refetch: s }) : null : null;
10
10
  }
11
- function P({ columns: n, data: o, refetch: i }) {
12
- return o.map((r) => ({
13
- row: r,
14
- cells: n.map((t) => {
15
- var p, a, g, d, c, b, y, x, C;
16
- const e = S(((p = t.row) == null ? void 0 : p.title) || t.accessor, r, i);
17
- let u;
18
- if ((a = t.row) != null && a.image) {
19
- const l = m((g = t.row) == null ? void 0 : g.image, r, i);
20
- u = l ? /* @__PURE__ */ s(f, { bgColor: "secondary", src: l, text: e == null ? void 0 : e.toString(), view: "ellipse" }) : /* @__PURE__ */ s(f, { bgColor: "secondary", icon: /* @__PURE__ */ s(w, {}), text: e == null ? void 0 : e.toString(), view: "ellipse" });
21
- } else if ((d = t.row) != null && d.icon) {
22
- const l = m((c = t.row) == null ? void 0 : c.icon, r, i);
23
- u = /* @__PURE__ */ s(f, { icon: l || /* @__PURE__ */ s(w, {}), text: e == null ? void 0 : e.toString(), view: "ellipse" });
24
- } else (b = t.row) != null && b.customAddon && (u = m((y = t.row) == null ? void 0 : y.customAddon, r, i));
25
- return /* @__PURE__ */ s(
26
- v,
11
+ function R({
12
+ columns: t,
13
+ view: i = "default",
14
+ data: s,
15
+ refetch: u
16
+ }) {
17
+ const m = i === "compact";
18
+ return s.map((o) => ({
19
+ row: o,
20
+ cells: t.map((n) => {
21
+ var g, c, d, x, b, y, C, v, w;
22
+ const e = z(((g = n.row) == null ? void 0 : g.title) || n.accessor, o, u);
23
+ let l;
24
+ if ((c = n.row) != null && c.image) {
25
+ const a = p((d = n.row) == null ? void 0 : d.image, o, u);
26
+ l = a ? /* @__PURE__ */ r(
27
+ f,
28
+ {
29
+ bgColor: "secondary",
30
+ src: a,
31
+ text: e == null ? void 0 : e.toString(),
32
+ view: "ellipse",
33
+ size: m ? "xs" : "m"
34
+ }
35
+ ) : /* @__PURE__ */ r(
36
+ f,
37
+ {
38
+ bgColor: "secondary",
39
+ icon: /* @__PURE__ */ r(S, {}),
40
+ text: e == null ? void 0 : e.toString(),
41
+ view: "ellipse",
42
+ size: m ? "xs" : "m"
43
+ }
44
+ );
45
+ } else if ((x = n.row) != null && x.icon) {
46
+ const a = p((b = n.row) == null ? void 0 : b.icon, o, u);
47
+ l = /* @__PURE__ */ r(
48
+ f,
49
+ {
50
+ icon: a || /* @__PURE__ */ r(S, {}),
51
+ text: e == null ? void 0 : e.toString(),
52
+ view: "ellipse",
53
+ size: m ? "xs" : "m"
54
+ }
55
+ );
56
+ } else (y = n.row) != null && y.customAddon && (l = p((C = n.row) == null ? void 0 : C.customAddon, o, u));
57
+ return /* @__PURE__ */ r(
58
+ A,
27
59
  {
28
60
  title: e,
29
- align: t.align,
30
- subtitle: ((x = t.row) == null ? void 0 : x.subtitle) && S((C = t.row) == null ? void 0 : C.subtitle, r, i),
31
- addon: u
61
+ align: n.align,
62
+ compact: m,
63
+ subtitle: m ? void 0 : ((v = n.row) == null ? void 0 : v.subtitle) && z((w = n.row) == null ? void 0 : w.subtitle, o, u),
64
+ addon: l
32
65
  }
33
66
  );
34
67
  })
35
68
  }));
36
69
  }
37
70
  export {
38
- P as prepareRows
71
+ R as prepareRows
39
72
  };
40
73
  //# sourceMappingURL=prepare-rows.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-rows.js","sources":["../../../src/table/utils/prepare-rows.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport React, { ReactNode } from 'react';\nimport PhotoM from '@alphakits/icons/dist/PhotoM';\n\nimport { Image } from '../../image';\nimport { TableCell } from '../components/cell';\nimport { TableProps } from '../table';\n\ntype Props<T extends object> = {\n columns: TableProps<T>['columns'];\n data: T[];\n refetch: () => void;\n};\n\nfunction getCellNode<T extends object>(row: unknown, record: T, refetch: () => void) {\n if (!row) return null;\n\n if (typeof row === 'string') return record[row as keyof T];\n\n if (typeof row === 'function') return row({ row: record, refetch });\n\n return null;\n}\n\nfunction getCellValue<T extends object>(\n row: unknown,\n record: T,\n refetch: () => void,\n): string | ReactNode {\n if (!row) return null;\n\n if (typeof row === 'string') return record[row as keyof T];\n\n if (typeof row === 'function') return row({ row: record, refetch });\n\n return null;\n}\n\nexport function prepareRows<T extends object>({ columns, data, refetch }: Props<T>) {\n const rows = data.map((row) => ({\n row,\n cells: columns.map((col) => {\n const title = getCellValue(col.row?.title || col.accessor, row, refetch);\n\n let addon;\n\n if (col.row?.image) {\n const imageSrc = getCellNode(col.row?.image, row, refetch);\n\n addon = imageSrc ? (\n <Image bgColor=\"secondary\" src={ imageSrc } text={ title?.toString() } view=\"ellipse\" />\n ) : (\n <Image bgColor=\"secondary\" icon={ <PhotoM /> } text={ title?.toString() } view=\"ellipse\" />\n );\n } else if (col.row?.icon) {\n const iconNode = getCellNode(col.row?.icon, row, refetch);\n\n addon = (\n <Image icon={ iconNode || <PhotoM /> } text={ title?.toString() } view=\"ellipse\" />\n );\n } else if (col.row?.customAddon) {\n addon = getCellNode(col.row?.customAddon, row, refetch);\n }\n\n return (\n <TableCell\n title={ title }\n align={ col.align }\n subtitle={ col.row?.subtitle && getCellValue(col.row?.subtitle, row, refetch) }\n addon={ addon }\n />\n );\n }),\n }));\n\n return rows;\n}\n"],"names":["getCellNode","row","record","refetch","getCellValue","prepareRows","columns","data","col","title","_a","addon","_b","imageSrc","_c","jsx","Image","PhotoM","_d","iconNode","_e","_f","_g","TableCell","_h","_i"],"mappings":";;;;AAcA,SAASA,EAA8BC,GAAcC,GAAWC,GAAqB;AACjF,SAAKF,IAED,OAAOA,KAAQ,WAAiBC,EAAOD,CAAc,IAErD,OAAOA,KAAQ,aAAmBA,EAAI,EAAE,KAAKC,GAAQ,SAAAC,GAAS,IAE3D,OANU;AAOrB;AAEA,SAASC,EACLH,GACAC,GACAC,GACkB;AAClB,SAAKF,IAED,OAAOA,KAAQ,WAAiBC,EAAOD,CAAc,IAErD,OAAOA,KAAQ,aAAmBA,EAAI,EAAE,KAAKC,GAAQ,SAAAC,GAAS,IAE3D,OANU;AAOrB;AAEO,SAASE,EAA8B,EAAE,SAAAC,GAAS,MAAAC,GAAM,SAAAJ,KAAqB;AAqChF,SApCaI,EAAK,IAAI,CAACN,OAAS;AAAA,IAC5B,KAAAA;AAAA,IACA,OAAOK,EAAQ,IAAI,CAACE,MAAQ;;AACxB,YAAMC,IAAQL,IAAaM,IAAAF,EAAI,QAAJ,gBAAAE,EAAS,UAASF,EAAI,UAAUP,GAAKE,CAAO;AAEvE,UAAIQ;AAEJ,WAAIC,IAAAJ,EAAI,QAAJ,QAAAI,EAAS,OAAO;AAChB,cAAMC,IAAWb,GAAYc,IAAAN,EAAI,QAAJ,gBAAAM,EAAS,OAAOb,GAAKE,CAAO;AAEzD,QAAAQ,IAAQE,IACJ,gBAAAE,EAACC,GAAA,EAAM,SAAQ,aAAY,KAAMH,GAAW,MAAOJ,KAAA,gBAAAA,EAAO,YAAa,MAAK,UAAA,CAAU,IAEtF,gBAAAM,EAACC,GAAA,EAAM,SAAQ,aAAY,MAAO,gBAAAD,EAACE,GAAA,CAAA,CAAO,GAAK,MAAOR,KAAA,gBAAAA,EAAO,YAAa,MAAK,UAAA,CAAU;AAAA,MAEjG,YAAWS,IAAAV,EAAI,QAAJ,QAAAU,EAAS,MAAM;AACtB,cAAMC,IAAWnB,GAAYoB,IAAAZ,EAAI,QAAJ,gBAAAY,EAAS,MAAMnB,GAAKE,CAAO;AAExD,QAAAQ,IACI,gBAAAI,EAACC,GAAA,EAAM,MAAOG,KAAY,gBAAAJ,EAACE,GAAA,CAAA,CAAO,GAAK,MAAOR,KAAA,gBAAAA,EAAO,YAAa,MAAK,WAAU;AAAA,MAEzF,MAAA,EAAWY,IAAAb,EAAI,QAAJ,QAAAa,EAAS,gBAChBV,IAAQX,GAAYsB,IAAAd,EAAI,QAAJ,gBAAAc,EAAS,aAAarB,GAAKE,CAAO;AAG1D,aACI,gBAAAY;AAAA,QAACQ;AAAA,QAAA;AAAA,UACG,OAAAd;AAAA,UACA,OAAQD,EAAI;AAAA,UACZ,YAAWgB,IAAAhB,EAAI,QAAJ,gBAAAgB,EAAS,aAAYpB,GAAaqB,IAAAjB,EAAI,QAAJ,gBAAAiB,EAAS,UAAUxB,GAAKE,CAAO;AAAA,UAC5E,OAAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,IAGZ,CAAC;AAAA,EAAA,EACH;AAGN;"}
1
+ {"version":3,"file":"prepare-rows.js","sources":["../../../src/table/utils/prepare-rows.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport React, { ReactNode } from 'react';\nimport PhotoM from '@alphakits/icons/dist/PhotoM';\n\nimport { Image } from '../../image';\nimport { TableCell } from '../components/cell';\nimport { TableProps } from '../table';\n\ntype Props<T extends object> = {\n columns: TableProps<T>['columns'];\n view: TableProps<T>['view'];\n data: T[];\n refetch: () => void;\n};\n\nfunction getCellNode<T extends object>(row: unknown, record: T, refetch: () => void) {\n if (!row) return null;\n\n if (typeof row === 'string') return record[row as keyof T];\n\n if (typeof row === 'function') return row({ row: record, refetch });\n\n return null;\n}\n\nfunction getCellValue<T extends object>(\n row: unknown,\n record: T,\n refetch: () => void,\n): string | ReactNode {\n if (!row) return null;\n\n if (typeof row === 'string') return record[row as keyof T];\n\n if (typeof row === 'function') return row({ row: record, refetch });\n\n return null;\n}\n\nexport function prepareRows<T extends object>({\n columns,\n view = 'default',\n data,\n refetch,\n}: Props<T>) {\n const isCompact = view === 'compact';\n const rows = data.map((row) => ({\n row,\n cells: columns.map((col) => {\n const title = getCellValue(col.row?.title || col.accessor, row, refetch);\n\n let addon;\n\n if (col.row?.image) {\n const imageSrc = getCellNode(col.row?.image, row, refetch);\n\n addon = imageSrc ? (\n <Image\n bgColor=\"secondary\"\n src={ imageSrc }\n text={ title?.toString() }\n view=\"ellipse\"\n size={ isCompact ? 'xs' : 'm' }\n />\n ) : (\n <Image\n bgColor=\"secondary\"\n icon={ <PhotoM /> }\n text={ title?.toString() }\n view=\"ellipse\"\n size={ isCompact ? 'xs' : 'm' }\n />\n );\n } else if (col.row?.icon) {\n const iconNode = getCellNode(col.row?.icon, row, refetch);\n\n addon = (\n <Image\n icon={ iconNode || <PhotoM /> }\n text={ title?.toString() }\n view=\"ellipse\"\n size={ isCompact ? 'xs' : 'm' }\n />\n );\n } else if (col.row?.customAddon) {\n addon = getCellNode(col.row?.customAddon, row, refetch);\n }\n\n return (\n <TableCell\n title={ title }\n align={ col.align }\n compact={ isCompact }\n subtitle={\n isCompact\n ? undefined\n : (col.row?.subtitle && getCellValue(col.row?.subtitle, row, refetch))\n }\n addon={ addon }\n />\n );\n }),\n }));\n\n return rows;\n}\n"],"names":["getCellNode","row","record","refetch","getCellValue","prepareRows","columns","view","data","isCompact","col","title","_a","addon","_b","imageSrc","_c","jsx","Image","PhotoM","_d","iconNode","_e","_f","_g","TableCell","_h","_i"],"mappings":";;;;AAeA,SAASA,EAA8BC,GAAcC,GAAWC,GAAqB;AACjF,SAAKF,IAED,OAAOA,KAAQ,WAAiBC,EAAOD,CAAc,IAErD,OAAOA,KAAQ,aAAmBA,EAAI,EAAE,KAAKC,GAAQ,SAAAC,GAAS,IAE3D,OANU;AAOrB;AAEA,SAASC,EACLH,GACAC,GACAC,GACkB;AAClB,SAAKF,IAED,OAAOA,KAAQ,WAAiBC,EAAOD,CAAc,IAErD,OAAOA,KAAQ,aAAmBA,EAAI,EAAE,KAAKC,GAAQ,SAAAC,GAAS,IAE3D,OANU;AAOrB;AAEO,SAASE,EAA8B;AAAA,EAC1C,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,MAAAC;AAAA,EACA,SAAAL;AACJ,GAAa;AACT,QAAMM,IAAYF,MAAS;AA2D3B,SA1DaC,EAAK,IAAI,CAACP,OAAS;AAAA,IAC5B,KAAAA;AAAA,IACA,OAAOK,EAAQ,IAAI,CAACI,MAAQ;;AACxB,YAAMC,IAAQP,IAAaQ,IAAAF,EAAI,QAAJ,gBAAAE,EAAS,UAASF,EAAI,UAAUT,GAAKE,CAAO;AAEvE,UAAIU;AAEJ,WAAIC,IAAAJ,EAAI,QAAJ,QAAAI,EAAS,OAAO;AAChB,cAAMC,IAAWf,GAAYgB,IAAAN,EAAI,QAAJ,gBAAAM,EAAS,OAAOf,GAAKE,CAAO;AAEzD,QAAAU,IAAQE,IACJ,gBAAAE;AAAA,UAACC;AAAA,UAAA;AAAA,YACG,SAAQ;AAAA,YACR,KAAMH;AAAA,YACN,MAAOJ,KAAA,gBAAAA,EAAO;AAAA,YACd,MAAK;AAAA,YACL,MAAOF,IAAY,OAAO;AAAA,UAAA;AAAA,QAAA,IAG9B,gBAAAQ;AAAA,UAACC;AAAA,UAAA;AAAA,YACG,SAAQ;AAAA,YACR,wBAAQC,GAAA,EAAO;AAAA,YACf,MAAOR,KAAA,gBAAAA,EAAO;AAAA,YACd,MAAK;AAAA,YACL,MAAOF,IAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAGtC,YAAWW,IAAAV,EAAI,QAAJ,QAAAU,EAAS,MAAM;AACtB,cAAMC,IAAWrB,GAAYsB,IAAAZ,EAAI,QAAJ,gBAAAY,EAAS,MAAMrB,GAAKE,CAAO;AAExD,QAAAU,IACI,gBAAAI;AAAA,UAACC;AAAA,UAAA;AAAA,YACG,MAAOG,KAAY,gBAAAJ,EAACE,GAAA,CAAA,CAAO;AAAA,YAC3B,MAAOR,KAAA,gBAAAA,EAAO;AAAA,YACd,MAAK;AAAA,YACL,MAAOF,IAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAGtC,MAAA,EAAWc,IAAAb,EAAI,QAAJ,QAAAa,EAAS,gBAChBV,IAAQb,GAAYwB,IAAAd,EAAI,QAAJ,gBAAAc,EAAS,aAAavB,GAAKE,CAAO;AAG1D,aACI,gBAAAc;AAAA,QAACQ;AAAA,QAAA;AAAA,UACG,OAAAd;AAAA,UACA,OAAQD,EAAI;AAAA,UACZ,SAAUD;AAAA,UACV,UACIA,IACM,WACCiB,IAAAhB,EAAI,QAAJ,gBAAAgB,EAAS,aAAYtB,GAAauB,IAAAjB,EAAI,QAAJ,gBAAAiB,EAAS,UAAU1B,GAAKE,CAAO;AAAA,UAE5E,OAAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IAGZ,CAAC;AAAA,EAAA,EACH;AAGN;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alphakits/ui",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "files": [
5
5
  "dist"
6
6
  ],