@alphakits/ui 2.0.11 → 2.0.12

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 (48) hide show
  1. package/dist/checkbox/index.module.css +1 -1
  2. package/dist/checkbox/index.module.css.js +7 -7
  3. package/dist/checkbox-lists/index.module.css +1 -1
  4. package/dist/checkbox-lists/index.module.css.js +8 -6
  5. package/dist/checkbox-lists/index.module.css.js.map +1 -1
  6. package/dist/form/templates/base-form/index.js +24 -21
  7. package/dist/form/templates/base-form/index.js.map +1 -1
  8. package/dist/form/templates/filters-form/index.js +24 -21
  9. package/dist/form/templates/filters-form/index.js.map +1 -1
  10. package/dist/form/templates/rest-form/index.js +27 -24
  11. package/dist/form/templates/rest-form/index.js.map +1 -1
  12. package/dist/header-search/component.d.ts +0 -1
  13. package/dist/header-search/component.js +18 -20
  14. package/dist/header-search/component.js.map +1 -1
  15. package/dist/header-search/index.module.css +1 -1
  16. package/dist/header-search/index.module.css.js +4 -6
  17. package/dist/header-search/index.module.css.js.map +1 -1
  18. package/dist/table/columns.js +4 -3
  19. package/dist/table/columns.js.map +1 -1
  20. package/dist/table/components/cell/component.d.ts +0 -1
  21. package/dist/table/components/cell/component.js +21 -22
  22. package/dist/table/components/cell/component.js.map +1 -1
  23. package/dist/table/components/cell/index.module.css +1 -1
  24. package/dist/table/components/cell/index.module.css.js +12 -14
  25. package/dist/table/components/cell/index.module.css.js.map +1 -1
  26. package/dist/table/components/cells/index.d.ts +1 -2
  27. package/dist/table/components/cells/index.js +35 -29
  28. package/dist/table/components/cells/index.js.map +1 -1
  29. package/dist/table/components/cells/index.module.css +1 -1
  30. package/dist/table/components/cells/index.module.css.js +12 -12
  31. package/dist/table/components/pagination/index.d.ts +0 -1
  32. package/dist/table/components/pagination/index.js +79 -97
  33. package/dist/table/components/pagination/index.js.map +1 -1
  34. package/dist/table/components/pagination/index.module.css +1 -1
  35. package/dist/table/components/pagination/index.module.css.js +18 -20
  36. package/dist/table/components/pagination/index.module.css.js.map +1 -1
  37. package/dist/table/components/table-header/index.d.ts +0 -1
  38. package/dist/table/components/table-header/index.js +26 -28
  39. package/dist/table/components/table-header/index.js.map +1 -1
  40. package/dist/table/index.module.css +1 -1
  41. package/dist/table/index.module.css.js +12 -12
  42. package/dist/table/table.d.ts +1 -3
  43. package/dist/table/table.js +86 -91
  44. package/dist/table/table.js.map +1 -1
  45. package/dist/table/utils/prepare-rows.d.ts +1 -2
  46. package/dist/table/utils/prepare-rows.js +6 -8
  47. package/dist/table/utils/prepare-rows.js.map +1 -1
  48. package/package.json +1 -1
@@ -1,15 +1,15 @@
1
- import { jsxs as r, jsx as n, Fragment as $ } from "react/jsx-runtime";
2
- import { useState as f, useEffect as p, useRef as A, useCallback as b } from "react";
3
- import B from "@alphakits/icons/dist/ControllerS";
4
- import E from "@alphakits/icons/dist/PlusS";
5
- import { useDebounce as H } from "rooks";
6
- import I from "classnames";
1
+ import { jsxs as r, jsx as n, Fragment as R } from "react/jsx-runtime";
2
+ import { useState as f, useEffect as p, useRef as $, useCallback as b } from "react";
3
+ import A from "@alphakits/icons/dist/ControllerS";
4
+ import B from "@alphakits/icons/dist/PlusS";
5
+ import { useDebounce as E } from "rooks";
6
+ import H from "classnames";
7
7
  import { Button as g } from "../../../button/component.js";
8
- import { Flex as P } from "../../../flex/component.js";
9
- import { HeaderSearch as _ } from "../../../header-search/component.js";
10
- import { translate as q } from "../../languages/index.js";
8
+ import { Flex as I } from "../../../flex/component.js";
9
+ import { HeaderSearch as P } from "../../../header-search/component.js";
10
+ import { translate as _ } from "../../languages/index.js";
11
11
  import t from "./index.module.css.js";
12
- const Z = ({
12
+ const Y = ({
13
13
  tags: m,
14
14
  searchPlaceholder: v = "Type something..",
15
15
  searchText: o,
@@ -23,38 +23,36 @@ const Z = ({
23
23
  createButtonLabel: h,
24
24
  showFiltersButton: j,
25
25
  filtersButtonLabel: D,
26
- language: k,
27
- v2: w
26
+ language: k
28
27
  }) => {
29
- const [z, d] = f(o != null ? o : ""), [c, u] = f(o != null ? o : "");
28
+ const [w, d] = f(o != null ? o : ""), [c, u] = f(o != null ? o : "");
30
29
  p(() => {
31
30
  const e = `${o != null ? o : ""}`;
32
31
  l.current = e.trim(), d(e), u(e);
33
32
  }, [o]);
34
- const F = H((e) => u(e), 500), l = A("");
33
+ const z = E((e) => u(e), 500), l = $("");
35
34
  p(() => {
36
35
  const e = `${c || ""}`.trim();
37
36
  l.current !== e && (y({ searchText: e, page: 1 }), l.current = e);
38
37
  }, [c]);
39
38
  const i = b((e) => {
40
- d(e), F(e);
41
- }, []), R = b(() => {
39
+ d(e), z(e);
40
+ }, []), F = b(() => {
42
41
  i("");
43
42
  }, [i]);
44
- return /* @__PURE__ */ r("div", { className: I(t.table_header, { [t.compact]: S }), children: [
43
+ return /* @__PURE__ */ r("div", { className: H(t.table_header, { [t.compact]: S }), children: [
45
44
  /* @__PURE__ */ r("div", { className: t.actions, children: [
46
- /* @__PURE__ */ r(P, { justify: "start", gap: "md", children: [
45
+ /* @__PURE__ */ r(I, { justify: "start", gap: "md", children: [
47
46
  !C && /* @__PURE__ */ n(
48
- _,
47
+ P,
49
48
  {
50
- value: z,
49
+ value: w,
51
50
  onChange: i,
52
- onClear: R,
53
- placeholder: v,
54
- v2: w
51
+ onClear: F,
52
+ placeholder: v
55
53
  }
56
54
  ),
57
- s && /* @__PURE__ */ n($, { children: s })
55
+ s && /* @__PURE__ */ n(R, { children: s })
58
56
  ] }),
59
57
  /* @__PURE__ */ r("div", { className: t.buttons, children: [
60
58
  V,
@@ -64,15 +62,15 @@ const Z = ({
64
62
  dataTestId: "createbtn",
65
63
  onClick: a,
66
64
  view: "primary",
67
- leftAddons: /* @__PURE__ */ n(E, {}),
65
+ leftAddons: /* @__PURE__ */ n(B, {}),
68
66
  size: "xs",
69
- children: h || q(k)("create")
67
+ children: h || _(k)("create")
70
68
  }
71
69
  ),
72
70
  j && /* @__PURE__ */ n(
73
71
  g,
74
72
  {
75
- leftAddons: /* @__PURE__ */ n(B, {}),
73
+ leftAddons: /* @__PURE__ */ n(A, {}),
76
74
  onClick: N,
77
75
  view: "outlined",
78
76
  size: "xs",
@@ -85,6 +83,6 @@ const Z = ({
85
83
  ] });
86
84
  };
87
85
  export {
88
- Z as TableHeader
86
+ Y as TableHeader
89
87
  };
90
88
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/table/components/table-header/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport ControllerS from '@alphakits/icons/dist/ControllerS';\nimport PlusS from '@alphakits/icons/dist/PlusS';\nimport { useDebounce } from 'rooks';\nimport cn from 'classnames';\n\nimport { Button } from '../../../button';\nimport { Flex } from '../../../flex';\nimport { HeaderSearch } from '../../../header-search';\nimport { translate } from '../../languages';\nimport { Query } from '../../types';\n\nimport styles from './index.module.css';\n\ntype Props = {\n tags: JSX.Element[];\n searchPlaceholder: string;\n searchText?: string;\n addParam: (val: Query) => void;\n onCreateClick?: () => void;\n onFiltersClick?: () => void;\n language: 'en' | 'de' | 'ru';\n showFiltersButton: boolean;\n filtersButtonLabel?: string;\n createButtonLabel?: string;\n rightHeaderAddons?: React.ReactNode;\n leftHeaderAddons?: React.ReactNode;\n hideSearch?: boolean;\n compact?: boolean;\n v2?: boolean;\n};\n\nexport const TableHeader: React.FC<Props> = ({\n tags,\n searchPlaceholder = 'Type something..',\n searchText,\n hideSearch,\n compact = false,\n rightHeaderAddons,\n leftHeaderAddons,\n addParam,\n onCreateClick,\n onFiltersClick,\n createButtonLabel,\n showFiltersButton,\n filtersButtonLabel,\n language,\n v2,\n}) => {\n // локальное состояние поля ввода\n const [value, setValue] = useState<string>(searchText ?? '');\n const [debouncedValue, setDebouncedValue] = useState<string>(searchText ?? '');\n\n // если проп searchText меняется извне — синхронизируем локальные стейты\n useEffect(() => {\n const v = `${searchText ?? ''}`;\n\n lastSentRef.current = v.trim();\n setValue(v);\n setDebouncedValue(v);\n }, [searchText]);\n\n // дебаунсим только установку debouncedValue\n const setValueDebounced = useDebounce((v: string) => setDebouncedValue(v), 500);\n\n // не отправляем одинаковые значения повторно\n const lastSentRef = useRef<string>('');\n\n useEffect(() => {\n const next = `${debouncedValue || ''}`.trim();\n\n if (lastSentRef.current === next) return;\n\n addParam({ searchText: next, page: 1 });\n lastSentRef.current = next;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedValue]);\n\n const handleChangeValue = useCallback((v: string) => {\n setValue(v);\n setValueDebounced(v);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleClear = useCallback(() => {\n // достаточно обнулить значение — эффект сам отправит пустую строку\n handleChangeValue('');\n }, [handleChangeValue]);\n\n return (\n <div className={cn(styles.table_header, { [styles.compact]: compact })}>\n <div className={styles.actions}>\n <Flex justify='start' gap='md'>\n {!hideSearch && (\n <HeaderSearch\n value={value}\n onChange={handleChangeValue}\n onClear={handleClear}\n placeholder={searchPlaceholder}\n v2={v2}\n />\n )}\n\n {leftHeaderAddons && (\n <>{leftHeaderAddons}</>\n )}\n </Flex>\n\n <div className={styles.buttons}>\n {rightHeaderAddons}\n\n {!!onCreateClick && (\n <Button\n dataTestId='createbtn'\n onClick={onCreateClick}\n view='primary'\n leftAddons={<PlusS />}\n size='xs'\n >\n {createButtonLabel || translate(language)('create')}\n </Button>\n )}\n\n {showFiltersButton && (\n <Button\n leftAddons={<ControllerS />}\n onClick={onFiltersClick}\n view='outlined'\n size='xs'\n >\n {filtersButtonLabel}\n </Button>\n )}\n </div>\n </div>\n\n {!!tags.length && <div className={styles.tags}>{tags}</div>}\n </div>\n );\n};\n"],"names":["TableHeader","tags","searchPlaceholder","searchText","hideSearch","compact","rightHeaderAddons","leftHeaderAddons","addParam","onCreateClick","onFiltersClick","createButtonLabel","showFiltersButton","filtersButtonLabel","language","v2","value","setValue","useState","debouncedValue","setDebouncedValue","useEffect","v","lastSentRef","setValueDebounced","useDebounce","useRef","next","handleChangeValue","useCallback","handleClear","jsxs","cn","styles","Flex","jsx","HeaderSearch","Button","PlusS","translate","ControllerS"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/table/components/table-header/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport ControllerS from '@alphakits/icons/dist/ControllerS';\nimport PlusS from '@alphakits/icons/dist/PlusS';\nimport { useDebounce } from 'rooks';\nimport cn from 'classnames';\n\nimport { Button } from '../../../button';\nimport { Flex } from '../../../flex';\nimport { HeaderSearch } from '../../../header-search';\nimport { translate } from '../../languages';\nimport { Query } from '../../types';\n\nimport styles from './index.module.css';\n\ntype Props = {\n tags: JSX.Element[];\n searchPlaceholder: string;\n searchText?: string;\n addParam: (val: Query) => void;\n onCreateClick?: () => void;\n onFiltersClick?: () => void;\n language: 'en' | 'de' | 'ru';\n showFiltersButton: boolean;\n filtersButtonLabel?: string;\n createButtonLabel?: string;\n rightHeaderAddons?: React.ReactNode;\n leftHeaderAddons?: React.ReactNode;\n hideSearch?: boolean;\n compact?: boolean;\n};\n\nexport const TableHeader: React.FC<Props> = ({\n tags,\n searchPlaceholder = 'Type something..',\n searchText,\n hideSearch,\n compact = false,\n rightHeaderAddons,\n leftHeaderAddons,\n addParam,\n onCreateClick,\n onFiltersClick,\n createButtonLabel,\n showFiltersButton,\n filtersButtonLabel,\n language,\n}) => {\n // локальное состояние поля ввода\n const [value, setValue] = useState<string>(searchText ?? '');\n const [debouncedValue, setDebouncedValue] = useState<string>(searchText ?? '');\n\n // если проп searchText меняется извне — синхронизируем локальные стейты\n useEffect(() => {\n const v = `${searchText ?? ''}`;\n\n lastSentRef.current = v.trim();\n setValue(v);\n setDebouncedValue(v);\n }, [searchText]);\n\n // дебаунсим только установку debouncedValue\n const setValueDebounced = useDebounce((v: string) => setDebouncedValue(v), 500);\n\n // не отправляем одинаковые значения повторно\n const lastSentRef = useRef<string>('');\n\n useEffect(() => {\n const next = `${debouncedValue || ''}`.trim();\n\n if (lastSentRef.current === next) return;\n\n addParam({ searchText: next, page: 1 });\n lastSentRef.current = next;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedValue]);\n\n const handleChangeValue = useCallback((v: string) => {\n setValue(v);\n setValueDebounced(v);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleClear = useCallback(() => {\n // достаточно обнулить значение — эффект сам отправит пустую строку\n handleChangeValue('');\n }, [handleChangeValue]);\n\n return (\n <div className={cn(styles.table_header, { [styles.compact]: compact })}>\n <div className={styles.actions}>\n <Flex justify='start' gap='md'>\n {!hideSearch && (\n <HeaderSearch\n value={value}\n onChange={handleChangeValue}\n onClear={handleClear}\n placeholder={searchPlaceholder}\n />\n )}\n\n {leftHeaderAddons && (\n <>{leftHeaderAddons}</>\n )}\n </Flex>\n\n <div className={styles.buttons}>\n {rightHeaderAddons}\n\n {!!onCreateClick && (\n <Button\n dataTestId='createbtn'\n onClick={onCreateClick}\n view='primary'\n leftAddons={<PlusS />}\n size='xs'\n >\n {createButtonLabel || translate(language)('create')}\n </Button>\n )}\n\n {showFiltersButton && (\n <Button\n leftAddons={<ControllerS />}\n onClick={onFiltersClick}\n view='outlined'\n size='xs'\n >\n {filtersButtonLabel}\n </Button>\n )}\n </div>\n </div>\n\n {!!tags.length && <div className={styles.tags}>{tags}</div>}\n </div>\n );\n};\n"],"names":["TableHeader","tags","searchPlaceholder","searchText","hideSearch","compact","rightHeaderAddons","leftHeaderAddons","addParam","onCreateClick","onFiltersClick","createButtonLabel","showFiltersButton","filtersButtonLabel","language","value","setValue","useState","debouncedValue","setDebouncedValue","useEffect","v","lastSentRef","setValueDebounced","useDebounce","useRef","next","handleChangeValue","useCallback","handleClear","jsxs","cn","styles","Flex","jsx","HeaderSearch","Button","PlusS","translate","ControllerS"],"mappings":";;;;;;;;;;;AAgCO,MAAMA,IAA+B,CAAC;AAAA,EACzC,MAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,mBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,UAAAC;AACJ,MAAM;AAEF,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAiBd,KAAA,OAAAA,IAAc,EAAE,GACrD,CAACe,GAAgBC,CAAiB,IAAIF,EAAiBd,KAAA,OAAAA,IAAc,EAAE;AAG7E,EAAAiB,EAAU,MAAM;AACZ,UAAMC,IAAI,GAAGlB,KAAA,OAAAA,IAAc,EAAE;AAE7B,IAAAmB,EAAY,UAAUD,EAAE,KAAA,GACxBL,EAASK,CAAC,GACVF,EAAkBE,CAAC;AAAA,EACvB,GAAG,CAAClB,CAAU,CAAC;AAGf,QAAMoB,IAAoBC,EAAY,CAACH,MAAcF,EAAkBE,CAAC,GAAG,GAAG,GAGxEC,IAAcG,EAAe,EAAE;AAErC,EAAAL,EAAU,MAAM;AACZ,UAAMM,IAAO,GAAGR,KAAkB,EAAE,GAAG,KAAA;AAEvC,IAAII,EAAY,YAAYI,MAE5BlB,EAAS,EAAE,YAAYkB,GAAM,MAAM,GAAG,GACtCJ,EAAY,UAAUI;AAAA,EAE1B,GAAG,CAACR,CAAc,CAAC;AAEnB,QAAMS,IAAoBC,EAAY,CAACP,MAAc;AACjD,IAAAL,EAASK,CAAC,GACVE,EAAkBF,CAAC;AAAA,EAEvB,GAAG,CAAA,CAAE,GAECQ,IAAcD,EAAY,MAAM;AAElC,IAAAD,EAAkB,EAAE;AAAA,EACxB,GAAG,CAACA,CAAiB,CAAC;AAEtB,SACI,gBAAAG,EAAC,OAAA,EAAI,WAAWC,EAAGC,EAAO,cAAc,EAAE,CAACA,EAAO,OAAO,GAAG3B,EAAA,CAAS,GACjE,UAAA;AAAA,IAAA,gBAAAyB,EAAC,OAAA,EAAI,WAAWE,EAAO,SACnB,UAAA;AAAA,MAAA,gBAAAF,EAACG,GAAA,EAAK,SAAQ,SAAQ,KAAI,MACrB,UAAA;AAAA,QAAA,CAAC7B,KACE,gBAAA8B;AAAA,UAACC;AAAA,UAAA;AAAA,YACG,OAAApB;AAAA,YACA,UAAUY;AAAA,YACV,SAASE;AAAA,YACT,aAAa3B;AAAA,UAAA;AAAA,QAAA;AAAA,QAIpBK,4BACM,UAAAA,EAAA,CAAiB;AAAA,MAAA,GAE5B;AAAA,MAEA,gBAAAuB,EAAC,OAAA,EAAI,WAAWE,EAAO,SAClB,UAAA;AAAA,QAAA1B;AAAA,QAEA,CAAC,CAACG,KACC,gBAAAyB;AAAA,UAACE;AAAA,UAAA;AAAA,YACG,YAAW;AAAA,YACX,SAAS3B;AAAA,YACT,MAAK;AAAA,YACL,8BAAa4B,GAAA,EAAM;AAAA,YACnB,MAAK;AAAA,YAEJ,UAAA1B,KAAqB2B,EAAUxB,CAAQ,EAAE,QAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,QAIzDF,KACG,gBAAAsB;AAAA,UAACE;AAAA,UAAA;AAAA,YACG,8BAAaG,GAAA,EAAY;AAAA,YACzB,SAAS7B;AAAA,YACT,MAAK;AAAA,YACL,MAAK;AAAA,YAEJ,UAAAG;AAAA,UAAA;AAAA,QAAA;AAAA,MACL,EAAA,CAER;AAAA,IAAA,GACJ;AAAA,IAEC,CAAC,CAACZ,EAAK,4BAAW,OAAA,EAAI,WAAW+B,EAAO,MAAO,UAAA/B,EAAA,CAAK;AAAA,EAAA,GACzD;AAER;"}
@@ -1 +1 @@
1
- :root{--text-primary-color: var(--color-text-primary);--text-secondary-color: var(--color-text-secondary);--text-tertiary-color: var(--color-text-tertiary);--border-radius: 4px;--focus-color: var(--color-border-link);--font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, sans-serif;--disabled-cursor: not-allowed;--arrow-transform: rotate(180deg)}.table_wrapper_SeB5{width:100%;box-sizing:border-box;position:relative}.table_wrapper_SeB5 .table_9sbd{position:relative;box-sizing:border-box}:is(.table_wrapper_SeB5 .table_9sbd) table{width:100%}.fill_Q-ic{height:-webkit-fill-available;flex-grow:1;display:flex;flex-direction:column}.fill_Q-ic .table_9sbd{flex-grow:1;overflow:hidden}:is(.fill_Q-ic .table_9sbd):hover{overflow:auto}.clickable_k4S8{cursor:pointer}.clickable_k4S8:hover td{background-color:var(--color-bg-special-big-objects)}.v2_roBT .table_9sbd{border:1px solid var(--color-border-secondary);border-radius:12px 12px 0 0;background:var(--color-bg-primary);box-shadow:var(--shadow-xs);overflow:hidden}.v2_roBT .table_9sbd table{border-collapse:collapse;background:var(--color-bg-primary)}.v2_roBT .table_9sbd tbody tr td{transition:background-color .15s ease}.v2_roBT .clickable_k4S8:hover td{background-color:color-mix(in srgb,var(--color-bg-secondary) 92%,var(--color-bg-primary))}
1
+ :root{--text-primary-color: var(--color-text-primary);--text-secondary-color: var(--color-text-secondary);--text-tertiary-color: var(--color-text-tertiary);--border-radius: 4px;--focus-color: var(--color-border-link);--font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, sans-serif;--disabled-cursor: not-allowed;--arrow-transform: rotate(180deg)}.table_wrapper_SeB5{width:100%;box-sizing:border-box;position:relative}.table_9sbd{position:relative;box-sizing:border-box;border:1px solid var(--color-border-secondary);border-radius:12px 12px 0 0;background:var(--color-bg-primary);box-shadow:var(--shadow-xs);overflow:hidden}.table_9sbd table{width:100%;border-collapse:collapse;background:var(--color-bg-primary);table-layout:fixed}.table_9sbd tbody tr td{transition:background-color .15s ease}.table_9sbd.no_footer_julO{border-radius:12px}.fill_Q-ic{height:-webkit-fill-available;flex-grow:1;display:flex;flex-direction:column}.fill_Q-ic .table_9sbd{flex-grow:1;overflow:hidden}.fill_Q-ic .table_9sbd:hover{overflow:auto}.clickable_k4S8{cursor:pointer}.clickable_k4S8:hover td{background-color:color-mix(in srgb,var(--color-bg-secondary) 92%,var(--color-bg-primary))}
@@ -1,20 +1,20 @@
1
1
  import './index.module.css';
2
- const l = "table_wrapper_SeB5", t = "table_9sbd", c = "fill_Q-ic", a = "compact_kbrU", e = "clickable_k4S8", o = "v2_roBT", b = {
3
- table_wrapper: l,
4
- table: t,
2
+ const t = "table_wrapper_SeB5", l = "table_9sbd", e = "no_footer_julO", c = "fill_Q-ic", o = "compact_kbrU", a = "clickable_k4S8", _ = {
3
+ table_wrapper: t,
4
+ table: l,
5
+ no_footer: e,
5
6
  fill: c,
6
7
  default: "default_BxOw",
7
- compact: a,
8
- clickable: e,
9
- v2: o
8
+ compact: o,
9
+ clickable: a
10
10
  };
11
11
  export {
12
- e as clickable,
13
- a as compact,
14
- b as default,
12
+ a as clickable,
13
+ o as compact,
14
+ _ as default,
15
15
  c as fill,
16
- t as table,
17
- l as table_wrapper,
18
- o as v2
16
+ e as no_footer,
17
+ l as table,
18
+ t as table_wrapper
19
19
  };
20
20
  //# sourceMappingURL=index.module.css.js.map
@@ -35,8 +35,6 @@ export type TableProps<T extends object> = Records<T> & {
35
35
  language: 'de' | 'ru' | 'en';
36
36
  /** true — параметры из URL; false — только локальное состояние. */
37
37
  fromPath?: boolean;
38
- /** Новый визуал таблицы (поиск в обводке, контейнер таблицы с тенью, обновлённый футер). */
39
- v2?: boolean;
40
38
  } & FiltersButton;
41
- 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, v2, }: 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;
42
40
  export {};
@@ -1,145 +1,140 @@
1
- import { jsxs as h, jsx as r } from "react/jsx-runtime";
2
- import $, { useMemo as j, useCallback as v } from "react";
3
- import C from "classnames";
1
+ import { jsxs as P, jsx as a } from "react/jsx-runtime";
2
+ import Z, { useMemo as j, useCallback as $ } from "react";
3
+ import h from "classnames";
4
4
  import { Cells as A } from "./components/cells/index.js";
5
5
  import { EmptyList as R } from "./components/empty-list/index.js";
6
6
  import { Error as w } from "./components/error/index.js";
7
7
  import { Loading as tt } from "./components/loading/index.js";
8
- import { Pagination as at } from "./components/pagination/index.js";
9
- import { TableHeader as rt } from "./components/table-header/index.js";
8
+ import { Pagination as rt } from "./components/pagination/index.js";
9
+ import { TableHeader as at } from "./components/table-header/index.js";
10
10
  import { useTableData as et } from "./hooks/use-table-data.js";
11
11
  import { getTags as ot } from "./utils/get-tags.js";
12
- import { prepareRows as lt } from "./utils/prepare-rows.js";
13
- import o from "./index.module.css.js";
12
+ import { prepareRows as st } from "./utils/prepare-rows.js";
13
+ import e from "./index.module.css.js";
14
14
  function yt({
15
- columns: m,
16
- searchPlaceholder: H = "Поиск по таблице",
17
- records: S,
15
+ columns: l,
16
+ searchPlaceholder: C = "Поиск по таблице",
17
+ records: H,
18
18
  hideSearch: b,
19
19
  rightHeaderAddons: g,
20
20
  leftHeaderAddons: u,
21
- filtersButtonLabel: k,
22
- createButtonLabel: B,
23
- loading: M,
24
- height: V = "fill",
25
- view: l = "default",
26
- tagsBuilder: _,
21
+ filtersButtonLabel: S,
22
+ createButtonLabel: _,
23
+ loading: k,
24
+ height: B = "fill",
25
+ view: o = "default",
26
+ tagsBuilder: F,
27
27
  promise: y,
28
- onRowClick: i,
28
+ onRowClick: m,
29
29
  onCreateClick: n,
30
- onFiltersClick: c,
31
- refetch: q,
32
- language: d,
33
- fromPath: z = !0,
34
- v2: e = !1
30
+ onFiltersClick: i,
31
+ refetch: M,
32
+ language: c,
33
+ fromPath: V = !0
35
34
  }) {
36
35
  const {
37
- loading: F,
36
+ loading: q,
38
37
  error: T,
39
38
  data: x,
40
- total: G,
39
+ total: z,
41
40
  params: t,
42
- pagesCount: I,
43
- updateData: p,
44
- addParam: J,
45
- removeParam: K,
41
+ pagesCount: G,
42
+ updateData: d,
43
+ addParam: I,
44
+ removeParam: J,
46
45
  resetParams: L
47
46
  } = et({
48
47
  promise: y,
49
- records: S,
50
- fromPath: z
51
- }), D = j(
48
+ records: H,
49
+ fromPath: V
50
+ }), v = j(
52
51
  () => [...x || []].sort(
53
- (a, s) => (a.sortPosition || 0) - (s.sortPosition || 0)
52
+ (r, s) => (r.sortPosition || 0) - (s.sortPosition || 0)
54
53
  ),
55
54
  [x]
56
- ), O = (a) => i == null ? void 0 : i(a, p), Q = n ? () => n(p) : void 0, U = v(
57
- (a) => {
58
- L(a);
55
+ ), K = (r) => m == null ? void 0 : m(r, d), O = n ? () => n(d) : void 0, Q = $(
56
+ (r) => {
57
+ L(r);
59
58
  },
60
59
  [L]
61
- ), E = () => c ? c({
62
- submitCallback: (a) => U(a),
60
+ ), D = () => i ? i({
61
+ submitCallback: (r) => Q(r),
63
62
  initialValues: t
64
- }) : null, f = (a) => {
65
- J(a);
66
- }, W = (a, s) => {
67
- K(a, s);
68
- }, X = ot({
63
+ }) : null, p = (r) => {
64
+ I(r);
65
+ }, U = (r, s) => {
66
+ J(r, s);
67
+ }, W = ot({
69
68
  params: (t == null ? void 0 : t.where) || {},
70
- onDelete: W,
71
- tagsBuilder: _,
72
- onClick: E
73
- }), N = j(
74
- () => lt({
75
- columns: m,
76
- view: l,
77
- v2: e,
78
- data: D,
79
- refetch: q || p
69
+ onDelete: U,
70
+ tagsBuilder: F,
71
+ onClick: D
72
+ }), E = j(
73
+ () => st({
74
+ columns: l,
75
+ view: o,
76
+ data: v,
77
+ refetch: M || d
80
78
  }),
81
79
  // eslint-disable-next-line react-hooks/exhaustive-deps
82
- [D, m, l, e]
83
- ), P = F || M;
84
- return /* @__PURE__ */ h("div", { className: C(o.table_wrapper, o[V], o[l], { [o.v2]: e }), children: [
85
- (!b || g || u || n || c) && /* @__PURE__ */ r(
86
- rt,
80
+ [v, l, o]
81
+ ), f = q || k, N = !!y;
82
+ return /* @__PURE__ */ P("div", { className: h(e.table_wrapper, e[B], e[o]), children: [
83
+ (!b || g || u || n || i) && /* @__PURE__ */ a(
84
+ at,
87
85
  {
88
- language: d,
86
+ language: c,
89
87
  hideSearch: b,
90
88
  rightHeaderAddons: g,
91
89
  leftHeaderAddons: u,
92
90
  searchText: (t == null ? void 0 : t.searchText) || "",
93
- addParam: f,
94
- searchPlaceholder: H,
95
- filtersButtonLabel: k,
96
- tags: X,
97
- onCreateClick: Q,
98
- createButtonLabel: B,
99
- onFiltersClick: E,
100
- showFiltersButton: !!c,
101
- compact: l === "compact",
102
- v2: e
91
+ addParam: p,
92
+ searchPlaceholder: C,
93
+ filtersButtonLabel: S,
94
+ tags: W,
95
+ onCreateClick: O,
96
+ createButtonLabel: _,
97
+ onFiltersClick: D,
98
+ showFiltersButton: !!i,
99
+ compact: o === "compact"
103
100
  }
104
101
  ),
105
- /* @__PURE__ */ r("div", { className: o.table, children: /* @__PURE__ */ h("table", { cellSpacing: "0", cellPadding: "0", children: [
106
- /* @__PURE__ */ r(
102
+ /* @__PURE__ */ a("div", { className: h(e.table, { [e.no_footer]: !N }), children: /* @__PURE__ */ P("table", { cellSpacing: "0", cellPadding: "0", children: [
103
+ /* @__PURE__ */ a(
107
104
  A,
108
105
  {
109
106
  sort: t == null ? void 0 : t.sort,
110
107
  order: t == null ? void 0 : t.order,
111
- addParam: f,
112
- columns: m,
113
- compact: l === "compact",
114
- v2: e
108
+ addParam: p,
109
+ columns: l,
110
+ compact: o === "compact"
115
111
  }
116
112
  ),
117
- /* @__PURE__ */ h("tbody", { children: [
118
- T && /* @__PURE__ */ r(w, { language: d }),
119
- !N.length && !P && !T && /* @__PURE__ */ r(R, { language: d }),
120
- P && /* @__PURE__ */ r(tt, { columnsLength: m.length }),
121
- N.map(({ row: a, cells: s }) => /* @__PURE__ */ r(
113
+ /* @__PURE__ */ P("tbody", { children: [
114
+ T && /* @__PURE__ */ a(w, { language: c }),
115
+ !E.length && !f && !T && /* @__PURE__ */ a(R, { language: c }),
116
+ f && /* @__PURE__ */ a(tt, { columnsLength: l.length }),
117
+ E.map(({ row: r, cells: s }) => /* @__PURE__ */ a(
122
118
  "tr",
123
119
  {
124
- onClick: () => O(a),
125
- className: C({ [o.clickable]: !!i }),
126
- style: { visibility: P ? "collapse" : "visible" },
127
- children: s.map((Y, Z) => $.cloneElement(Y, { key: Z }))
120
+ onClick: () => K(r),
121
+ className: h({ [e.clickable]: !!m }),
122
+ style: { visibility: f ? "collapse" : "visible" },
123
+ children: s.map((X, Y) => Z.cloneElement(X, { key: Y }))
128
124
  },
129
- String(a.id)
125
+ String(r.id)
130
126
  ))
131
127
  ] })
132
128
  ] }) }),
133
- !!y && /* @__PURE__ */ r(
134
- at,
129
+ N && /* @__PURE__ */ a(
130
+ rt,
135
131
  {
136
- language: d,
132
+ language: c,
137
133
  currentPage: t ? +t.page : 1,
138
134
  recordsPerPage: t ? +t.limit : 10,
139
- pagesCount: +I,
140
- addParam: f,
141
- total: +G,
142
- v2: e
135
+ pagesCount: +G,
136
+ addParam: p,
137
+ total: +z
143
138
  }
144
139
  )
145
140
  ] });
@@ -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 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\n /** Новый визуал таблицы (поиск в обводке, контейнер таблицы с тенью, обновлённый футер). */\n v2?: 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 v2 = false,\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 v2,\n data: dataSorted,\n refetch: refetch || updateData,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dataSorted, columns, view, v2],\n );\n\n const showLoader = dataLoading || loading;\n\n return (\n <div className={ cn(styles.table_wrapper, styles[height], styles[view], { [styles.v2]: v2 }) }>\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 compact={ view === 'compact' }\n v2={ v2 }\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 compact={ view === 'compact' }\n v2={ v2 }\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 v2={ v2 }\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","v2","dataLoading","error","data","total","params","pagesCount","updateData","addParam","removeParam","resetParams","useTableData","dataSorted","useMemo","b","handleRowClick","p","handleCreateClick","resetParamsHandler","useCallback","param","handleFiltesClick","values","addParamHandler","removeParamHandler","paramName","id","tags","getTags","rows","prepareRows","showLoader","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 const hasFooter = !!promise;\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 compact={ view === 'compact' }\n />\n ) }\n\n <div className={ cn(styles.table, { [styles.no_footer]: !hasFooter }) }>\n <table cellSpacing=\"0\" cellPadding=\"0\">\n <Cells\n sort={ params?.sort }\n order={ params?.order }\n addParam={ addParamHandler }\n columns={ columns }\n compact={ view === 'compact' }\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 { hasFooter && (\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","hasFooter","jsxs","cn","styles","jsx","TableHeader","Cells","Error","EmptyList","Loading","row","cells","cell","i","React","Pagination"],"mappings":"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"}
@@ -2,11 +2,10 @@ import { TableProps } from '../table';
2
2
  type Props<T extends object> = {
3
3
  columns: TableProps<T>['columns'];
4
4
  view: TableProps<T>['view'];
5
- v2?: boolean;
6
5
  data: T[];
7
6
  refetch: () => void;
8
7
  };
9
- export declare function prepareRows<T extends object>({ columns, view, v2, data, refetch, }: Props<T>): {
8
+ export declare function prepareRows<T extends object>({ columns, view, data, refetch, }: Props<T>): {
10
9
  row: T;
11
10
  cells: JSX.Element[];
12
11
  }[];
@@ -1,22 +1,21 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import S from "@alphakits/icons/dist/PhotoM";
3
3
  import { Image as f } from "../../image/component.js";
4
- import { TableCell as N } from "../components/cell/component.js";
4
+ import { TableCell as A } from "../components/cell/component.js";
5
5
  function p(t, i, s) {
6
6
  return t ? typeof t == "string" ? i[t] : typeof t == "function" ? t({ row: i, refetch: s }) : null : null;
7
7
  }
8
8
  function z(t, i, s) {
9
9
  return t ? typeof t == "string" ? i[t] : typeof t == "function" ? t({ row: i, refetch: s }) : null : null;
10
10
  }
11
- function T({
11
+ function R({
12
12
  columns: t,
13
13
  view: i = "default",
14
- v2: s,
15
- data: A,
14
+ data: s,
16
15
  refetch: u
17
16
  }) {
18
17
  const m = i === "compact";
19
- return A.map((o) => ({
18
+ return s.map((o) => ({
20
19
  row: o,
21
20
  cells: t.map((n) => {
22
21
  var g, c, d, x, b, y, C, v, w;
@@ -56,12 +55,11 @@ function T({
56
55
  );
57
56
  } else (y = n.row) != null && y.customAddon && (l = p((C = n.row) == null ? void 0 : C.customAddon, o, u));
58
57
  return /* @__PURE__ */ r(
59
- N,
58
+ A,
60
59
  {
61
60
  title: e,
62
61
  align: n.align,
63
62
  compact: m,
64
- v2: s,
65
63
  subtitle: m ? void 0 : ((v = n.row) == null ? void 0 : v.subtitle) && z((w = n.row) == null ? void 0 : w.subtitle, o, u),
66
64
  addon: l
67
65
  }
@@ -70,6 +68,6 @@ function T({
70
68
  }));
71
69
  }
72
70
  export {
73
- T as prepareRows
71
+ R as prepareRows
74
72
  };
75
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 view: TableProps<T>['view'];\n v2?: boolean;\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 v2,\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 v2={ v2 }\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","v2","data","isCompact","col","title","_a","addon","_b","imageSrc","_c","jsx","Image","PhotoM","_d","iconNode","_e","_f","_g","TableCell","_h","_i"],"mappings":";;;;AAgBA,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,IAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAN;AACJ,GAAa;AACT,QAAMO,IAAYH,MAAS;AA4D3B,SA3DaE,EAAK,IAAI,CAACR,OAAS;AAAA,IAC5B,KAAAA;AAAA,IACA,OAAOK,EAAQ,IAAI,CAACK,MAAQ;;AACxB,YAAMC,IAAQR,IAAaS,IAAAF,EAAI,QAAJ,gBAAAE,EAAS,UAASF,EAAI,UAAUV,GAAKE,CAAO;AAEvE,UAAIW;AAEJ,WAAIC,IAAAJ,EAAI,QAAJ,QAAAI,EAAS,OAAO;AAChB,cAAMC,IAAWhB,GAAYiB,IAAAN,EAAI,QAAJ,gBAAAM,EAAS,OAAOhB,GAAKE,CAAO;AAEzD,QAAAW,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,IAAWtB,GAAYuB,IAAAZ,EAAI,QAAJ,gBAAAY,EAAS,MAAMtB,GAAKE,CAAO;AAExD,QAAAW,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,IAAQd,GAAYyB,IAAAd,EAAI,QAAJ,gBAAAc,EAAS,aAAaxB,GAAKE,CAAO;AAG1D,aACI,gBAAAe;AAAA,QAACQ;AAAA,QAAA;AAAA,UACG,OAAAd;AAAA,UACA,OAAQD,EAAI;AAAA,UACZ,SAAUD;AAAA,UACV,IAAAF;AAAA,UACA,UACIE,IACM,WACCiB,IAAAhB,EAAI,QAAJ,gBAAAgB,EAAS,aAAYvB,GAAawB,IAAAjB,EAAI,QAAJ,gBAAAiB,EAAS,UAAU3B,GAAKE,CAAO;AAAA,UAE5E,OAAAW;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.11",
3
+ "version": "2.0.12",
4
4
  "files": [
5
5
  "dist"
6
6
  ],