nntc-ui 0.0.52 → 0.0.54

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 (3) hide show
  1. package/index.d.ts +3 -1
  2. package/index.js +77 -66
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -304,7 +304,9 @@ type Borders = 'all' | 'horizontal' | 'vertical' | 'none';
304
304
  interface Props$7 {
305
305
  rows: TableRow[];
306
306
  columns: TableColumn[];
307
- additionalColumnsViews?: (id: string, value: string | number | undefined) => {
307
+ additionalColumnsViews?: (id: string, value: string | number | undefined, payload: {
308
+ [key: string]: string;
309
+ } | undefined) => {
308
310
  edit: ((onChange: (e: ChangeEvent) => void, onBlur: () => void) => JSX.Element | null) | null;
309
311
  view: JSX.Element | null;
310
312
  };
package/index.js CHANGED
@@ -1566,9 +1566,9 @@ var WrapForLabel = (props) => {
1566
1566
  // src/components/common/MultiSelect/MultiSelect.tsx
1567
1567
  import classnames12 from "classnames";
1568
1568
  import {
1569
- useCallback as useCallback7,
1569
+ useCallback as useCallback8,
1570
1570
  useLayoutEffect as useLayoutEffect2,
1571
- useMemo as useMemo4,
1571
+ useMemo as useMemo5,
1572
1572
  useRef as useRef7,
1573
1573
  useState as useState8
1574
1574
  } from "react";
@@ -1649,11 +1649,11 @@ var multiSelect_default = {
1649
1649
 
1650
1650
  // src/components/common/MultiSelect/ui/SelectPopover/SelectPopover.tsx
1651
1651
  import classNames4 from "classnames";
1652
- import { useCallback as useCallback6, useMemo as useMemo3 } from "react";
1652
+ import { useCallback as useCallback7, useMemo as useMemo4 } from "react";
1653
1653
 
1654
1654
  // src/components/common/Checklist/Checklist.tsx
1655
1655
  import classnames11 from "classnames";
1656
- import { useState as useState7 } from "react";
1656
+ import { useCallback as useCallback6, useMemo as useMemo3, useState as useState7 } from "react";
1657
1657
 
1658
1658
  // src/components/common/Checklist/checklist.module.css
1659
1659
  var root13 = "checklist_root";
@@ -1680,30 +1680,47 @@ function Checklist(props) {
1680
1680
  const { items: items2, selected: selected5, disableSearch, isDisabled, actionWithSelected, onChangeItem, classes } = props;
1681
1681
  const { t } = useTranslation();
1682
1682
  const [filterSubstring, setFilterSubstring] = useState7("");
1683
- const [selectedItems, setSelectedItems] = useState7(selected5);
1684
- const filteredItems = filterItems(items2, filterSubstring, selectedItems);
1685
- const handleClick = (item3) => {
1686
- const value = !selected5[item3.value];
1687
- if (onChangeItem) {
1688
- onChangeItem?.(item3);
1689
- }
1690
- const newSelected = { ...selected5, [item3.value]: value };
1691
- setSelectedItems(newSelected);
1692
- actionWithSelected(newSelected);
1693
- };
1694
- const onSelectAll = () => {
1695
- let newSelected = { ...selected5 };
1683
+ const filteredItems = useMemo3(() => {
1684
+ return filterItems(items2, filterSubstring, selected5);
1685
+ }, [items2, filterSubstring, selected5]);
1686
+ const selectedItemsList = useMemo3(() => {
1687
+ return items2.filter((item3) => !!selected5[item3.value]);
1688
+ }, [items2, selected5]);
1689
+ const handleClick = useCallback6(
1690
+ (item3) => {
1691
+ const value = !selected5[item3.value];
1692
+ if (onChangeItem) {
1693
+ onChangeItem(item3);
1694
+ }
1695
+ const newSelected = { ...selected5, [item3.value]: value };
1696
+ actionWithSelected(newSelected);
1697
+ },
1698
+ [selected5, onChangeItem, actionWithSelected]
1699
+ );
1700
+ const onSelectAll = useCallback6(() => {
1701
+ const newSelected = { ...selected5 };
1696
1702
  filteredItems.forEach((item3) => {
1697
- newSelected = { ...newSelected, [item3.value]: true };
1703
+ newSelected[item3.value] = true;
1698
1704
  });
1699
- setSelectedItems(newSelected);
1700
1705
  actionWithSelected(newSelected);
1701
- };
1702
- const onUnSelectAll = () => {
1703
- const newSelected = {};
1704
- setSelectedItems(newSelected);
1706
+ }, [selected5, filteredItems, actionWithSelected]);
1707
+ const onUnSelectAll = useCallback6(() => {
1708
+ const newSelected = { ...selected5 };
1709
+ selectedItemsList.forEach((item3) => {
1710
+ delete newSelected[item3.value];
1711
+ });
1705
1712
  actionWithSelected(newSelected);
1706
- };
1713
+ }, [selected5, selectedItemsList, actionWithSelected]);
1714
+ const handleFilterChange = useCallback6((e) => {
1715
+ setFilterSubstring(e.target.value);
1716
+ }, []);
1717
+ const handleCheckboxChange = useCallback6(
1718
+ (item3) => (e) => {
1719
+ e.stopPropagation();
1720
+ handleClick(item3);
1721
+ },
1722
+ [handleClick]
1723
+ );
1707
1724
  return /* @__PURE__ */ jsxs11("div", { className: classnames11(root13, classes?.root), children: [
1708
1725
  !disableSearch && /* @__PURE__ */ jsx19(
1709
1726
  SearchInput,
@@ -1713,11 +1730,11 @@ function Checklist(props) {
1713
1730
  value: filterSubstring,
1714
1731
  fullWidth: true,
1715
1732
  classes: classes?.searchInput,
1716
- onChange: (e) => setFilterSubstring(e.target.value)
1733
+ onChange: handleFilterChange
1717
1734
  }
1718
1735
  ),
1719
1736
  /* @__PURE__ */ jsxs11("div", { className: classnames11(scrolled, "styledScroll", classes?.scrolled), children: [
1720
- items2.some((item3) => !!selectedItems[item3.value]) && /* @__PURE__ */ jsxs11(Fragment3, { children: [
1737
+ selectedItemsList.length > 0 && /* @__PURE__ */ jsxs11(Fragment3, { children: [
1721
1738
  /* @__PURE__ */ jsxs11("div", { className: classnames11(actionWrap, classes?.actionWrap), children: [
1722
1739
  /* @__PURE__ */ jsx19(Typography, { className: classnames11(classes?.typography), children: t("\u0412\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435") }),
1723
1740
  /* @__PURE__ */ jsx19(
@@ -1732,15 +1749,12 @@ function Checklist(props) {
1732
1749
  }
1733
1750
  )
1734
1751
  ] }),
1735
- /* @__PURE__ */ jsx19("div", { children: items2.filter((item3) => !!selectedItems[item3.value]).map((item3) => /* @__PURE__ */ jsx19(
1752
+ /* @__PURE__ */ jsx19("div", { children: selectedItemsList.map((item3) => /* @__PURE__ */ jsx19(
1736
1753
  Checkbox,
1737
1754
  {
1738
1755
  label: item3.name,
1739
- defaultChecked: !!selected5[item3.value],
1740
- onClick: (e) => {
1741
- e.stopPropagation();
1742
- handleClick(item3);
1743
- },
1756
+ checked: !!selected5[item3.value],
1757
+ onChange: handleCheckboxChange(item3),
1744
1758
  disabled: isDisabled,
1745
1759
  classes: classes?.checkbox
1746
1760
  },
@@ -1762,11 +1776,8 @@ function Checklist(props) {
1762
1776
  Checkbox,
1763
1777
  {
1764
1778
  label: item3.name,
1765
- defaultChecked: !!selected5[item3.value],
1766
- onClick: (e) => {
1767
- e.stopPropagation();
1768
- handleClick(item3);
1769
- },
1779
+ checked: !!selected5[item3.value],
1780
+ onChange: handleCheckboxChange(item3),
1770
1781
  disabled: isDisabled,
1771
1782
  classes: classes?.checkbox
1772
1783
  },
@@ -1780,21 +1791,21 @@ function Checklist(props) {
1780
1791
  import { jsx as jsx20 } from "react/jsx-runtime";
1781
1792
  function SelectPopover2(props) {
1782
1793
  const { items: items2, selected: selected5, onSelectedChange, classes, enableSearch = false, disabled: disabled2 } = props;
1783
- const checklistItems = useMemo3(
1794
+ const checklistItems = useMemo4(
1784
1795
  () => items2.map((item3) => ({
1785
1796
  name: item3.name,
1786
1797
  value: item3.value
1787
1798
  })),
1788
1799
  [items2]
1789
1800
  );
1790
- const selectedItems = useMemo3(() => {
1801
+ const selectedItems = useMemo4(() => {
1791
1802
  const result = {};
1792
1803
  selected5?.forEach((value) => {
1793
1804
  result[value] = true;
1794
1805
  });
1795
1806
  return result;
1796
1807
  }, [selected5]);
1797
- const handleActionWithSelected = useCallback6(
1808
+ const handleActionWithSelected = useCallback7(
1798
1809
  (newSelected) => {
1799
1810
  const values = Object.entries(newSelected).reduce((acc, [value, isSelected]) => {
1800
1811
  if (isSelected) {
@@ -1881,8 +1892,8 @@ function MultiSelect(props) {
1881
1892
  resizeObserver.disconnect();
1882
1893
  };
1883
1894
  }, []);
1884
- const activeItems = useMemo4(() => items2.filter((i) => selected5?.includes(i.value)), [selected5, items2]);
1885
- const inputClickHandler = useCallback7(
1895
+ const activeItems = useMemo5(() => items2.filter((i) => selected5?.includes(i.value)), [selected5, items2]);
1896
+ const inputClickHandler = useCallback8(
1886
1897
  (e) => {
1887
1898
  e.preventDefault();
1888
1899
  if (!disabled2) {
@@ -1891,13 +1902,13 @@ function MultiSelect(props) {
1891
1902
  },
1892
1903
  [disabled2]
1893
1904
  );
1894
- const handleSelectedChange = useCallback7(
1905
+ const handleSelectedChange = useCallback8(
1895
1906
  (newValues) => {
1896
1907
  onValueChange?.(newValues);
1897
1908
  },
1898
1909
  [onValueChange]
1899
1910
  );
1900
- const title2 = useMemo4(() => {
1911
+ const title2 = useMemo5(() => {
1901
1912
  if (!activeItems.length)
1902
1913
  return "";
1903
1914
  return getTitle(titleType, activeItems, t);
@@ -2190,7 +2201,7 @@ import {
2190
2201
  useInteractions as useInteractions2,
2191
2202
  useRole as useRole2
2192
2203
  } from "@floating-ui/react";
2193
- import { useMemo as useMemo5, useState as useState9 } from "react";
2204
+ import { useMemo as useMemo6, useState as useState9 } from "react";
2194
2205
  function useTooltip(props = {}) {
2195
2206
  const {
2196
2207
  initialOpen = false,
@@ -2231,7 +2242,7 @@ function useTooltip(props = {}) {
2231
2242
  const dismiss = useDismiss2(context);
2232
2243
  const role = useRole2(context, { role: "tooltip" });
2233
2244
  const interactions = useInteractions2([hover, focus, dismiss, role]);
2234
- return useMemo5(
2245
+ return useMemo6(
2235
2246
  () => ({
2236
2247
  open,
2237
2248
  setOpen,
@@ -2521,7 +2532,7 @@ import { flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-tabl
2521
2532
  import { defaultRangeExtractor, useVirtualizer } from "@tanstack/react-virtual";
2522
2533
  import classnames22 from "classnames";
2523
2534
  import dayjs4 from "dayjs";
2524
- import { Fragment as Fragment7, useCallback as useCallback8, useEffect as useEffect8, useMemo as useMemo7, useRef as useRef11, useState as useState15 } from "react";
2535
+ import { Fragment as Fragment7, useCallback as useCallback9, useEffect as useEffect8, useMemo as useMemo8, useRef as useRef11, useState as useState15 } from "react";
2525
2536
 
2526
2537
  // src/utils/toFirstLetterUpperCase.ts
2527
2538
  var toFirstLetterUpperCase = (name) => {
@@ -2713,7 +2724,7 @@ var DefaultColumn = {
2713
2724
  useEffect6(() => {
2714
2725
  setValue(initialValue);
2715
2726
  }, [initialValue]);
2716
- const additionalViewResult = tableMeta?.additionalColumnsViews?.(id, initialValue);
2727
+ const additionalViewResult = tableMeta?.additionalColumnsViews?.(id, initialValue, original[id]?.payload);
2717
2728
  if (isEdit && meta?.editable) {
2718
2729
  const onBlur = () => {
2719
2730
  tableMeta?.updateData(index, id, value, original);
@@ -2752,7 +2763,7 @@ var DefaultColumn = {
2752
2763
 
2753
2764
  // src/components/view/VirtualTable/ui/HeaderDropdown/HeaderDropdown.tsx
2754
2765
  import classnames21 from "classnames";
2755
- import { useMemo as useMemo6 } from "react";
2766
+ import { useMemo as useMemo7 } from "react";
2756
2767
 
2757
2768
  // src/components/view/VirtualTable/ui/HeaderDropdown/headerDropdown.module.css
2758
2769
  var root18 = "headerDropdown_root";
@@ -2971,7 +2982,7 @@ function HeaderDropdown(props) {
2971
2982
  rows
2972
2983
  } = props;
2973
2984
  const headerResultName = sortAnotherName ?? headerName;
2974
- const filterItems2 = useMemo6(() => {
2985
+ const filterItems2 = useMemo7(() => {
2975
2986
  const checklistItems = items2.map(
2976
2987
  (i) => ({
2977
2988
  name: i[headerResultName] ? valueFormat ? valueFormat(i[headerResultName].value?.toString() || "") : toFixed !== void 0 && !Number.isNaN(parseFloat(i[headerResultName].value)) ? parseFloat(Number(i[headerResultName].value).toFixed(toFixed)).toString() : i[headerResultName].value?.toString() || "< \u043D\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F >" : "< \u043D\u0435\u0442 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F >",
@@ -2995,7 +3006,7 @@ function HeaderDropdown(props) {
2995
3006
  ];
2996
3007
  return uniqueChecklistItems;
2997
3008
  }, [items2, headerResultName]);
2998
- const uniqueRows = useMemo6(
3009
+ const uniqueRows = useMemo7(
2999
3010
  () => Array.from(
3000
3011
  new Set(
3001
3012
  rows.filter((i) => !!i?.[headerResultName]).map((i) => i[headerResultName].payload?.id ?? i[headerResultName].value)
@@ -3003,17 +3014,17 @@ function HeaderDropdown(props) {
3003
3014
  ),
3004
3015
  [rows, headerResultName]
3005
3016
  );
3006
- const filterSelectedItems = useMemo6(() => {
3017
+ const filterSelectedItems = useMemo7(() => {
3007
3018
  const result = {};
3008
3019
  filterBy.find((fb) => fb.columnName === headerResultName)?.values.forEach((v) => {
3009
3020
  result[v] = true;
3010
3021
  });
3011
3022
  return result;
3012
3023
  }, [filterBy, headerResultName]);
3013
- const filterNumbers = useMemo6(() => {
3024
+ const filterNumbers = useMemo7(() => {
3014
3025
  return filterBy.find((fb) => fb.columnName === headerResultName && fb.type === "numberRange")?.values;
3015
3026
  }, [filterBy, headerResultName]);
3016
- const filterDates = useMemo6(() => {
3027
+ const filterDates = useMemo7(() => {
3017
3028
  return filterBy.find((fb) => fb.columnName === headerResultName && fb.type === "dateRange")?.values;
3018
3029
  }, [filterBy, headerResultName]);
3019
3030
  const handleSortClick = (direction) => () => {
@@ -3284,8 +3295,8 @@ function VirtualTable(props) {
3284
3295
  const [filterBy, setFilterBy] = useState15(globalFilters ?? []);
3285
3296
  const [sortBy, setSortBy] = useState15([...globalSorts ?? [], { columnName: "isNew", direction: "desc" }]);
3286
3297
  const tableContainerRef = useRef11(null);
3287
- const memoizedColumns = useMemo7(() => getColumns(columns), [columns]);
3288
- const memoizedData = useMemo7(() => {
3298
+ const memoizedColumns = useMemo8(() => getColumns(columns), [columns]);
3299
+ const memoizedData = useMemo8(() => {
3289
3300
  const newRows = [...rows];
3290
3301
  const nextFilterBy = filterBy.filter((filterByItem) => {
3291
3302
  const startDate = filterByItem.type === "dateRange" ? dayjs4(filterByItem.values[0]) : null;
@@ -3306,7 +3317,7 @@ function VirtualTable(props) {
3306
3317
  );
3307
3318
  return sorted;
3308
3319
  }, [rows, sortBy, filterBy]);
3309
- const columnsEstimateSize = useMemo7(
3320
+ const columnsEstimateSize = useMemo8(
3310
3321
  () => cellWidth ?? ((index) => memoizedColumns[index]?.meta?.width ?? 200),
3311
3322
  [cellWidth, memoizedColumns]
3312
3323
  );
@@ -3340,7 +3351,7 @@ function VirtualTable(props) {
3340
3351
  const columnVirtualizer = useVirtualizer({
3341
3352
  horizontal: true,
3342
3353
  count: headerGroups[0]?.headers.length ?? 1,
3343
- rangeExtractor: useCallback8((range) => {
3354
+ rangeExtractor: useCallback9((range) => {
3344
3355
  const stickyIndexes = [...Array(fixedColumnsCount)].map((_, index) => index);
3345
3356
  const next = /* @__PURE__ */ new Set([...stickyIndexes, ...defaultRangeExtractor(range)]);
3346
3357
  return [...next].sort((a, b) => a - b);
@@ -3349,11 +3360,11 @@ function VirtualTable(props) {
3349
3360
  estimateSize: columnsEstimateSize,
3350
3361
  overscan: 5
3351
3362
  });
3352
- const fixedColumnsWidth = useMemo7(
3363
+ const fixedColumnsWidth = useMemo8(
3353
3364
  () => [...Array(fixedColumnsCount)].reduce((sum, _, index) => sum + columnsEstimateSize(index), 0),
3354
3365
  [fixedColumnsCount, columnsEstimateSize]
3355
3366
  );
3356
- const headerGroupHeight = useMemo7(() => {
3367
+ const headerGroupHeight = useMemo8(() => {
3357
3368
  const delta = headerGroups.length - headerRowHeight.length;
3358
3369
  const result = [...headerRowHeight];
3359
3370
  if (delta > 0) {
@@ -3363,14 +3374,14 @@ function VirtualTable(props) {
3363
3374
  }
3364
3375
  return result;
3365
3376
  }, [headerRowHeight, headerGroups]);
3366
- const summaryHeaderHeight = useMemo7(
3377
+ const summaryHeaderHeight = useMemo8(
3367
3378
  () => headerGroupHeight.reduce(
3368
3379
  (sum, current, currentIndex) => currentIndex < headerGroups.length ? sum + current : sum,
3369
3380
  0
3370
3381
  ),
3371
3382
  [headerGroupHeight, headerGroups]
3372
3383
  );
3373
- const headerGroupY = useCallback8(
3384
+ const headerGroupY = useCallback9(
3374
3385
  (headerIndex) => headerGroupHeight.reduce((sum, current, currentIndex) => currentIndex < headerIndex ? sum + current : sum, 0),
3375
3386
  [headerGroupHeight, headerGroups]
3376
3387
  );
@@ -3690,7 +3701,7 @@ function VirtualTable(props) {
3690
3701
  }
3691
3702
 
3692
3703
  // src/components/view/TreeView/TreeView.tsx
3693
- import { memo as memo2, useCallback as useCallback9, useMemo as useMemo8, useState as useState17 } from "react";
3704
+ import { memo as memo2, useCallback as useCallback10, useMemo as useMemo9, useState as useState17 } from "react";
3694
3705
 
3695
3706
  // src/components/view/TreeView/treeView.module.css
3696
3707
  var search = "treeView_search";
@@ -3783,8 +3794,8 @@ var getFilteredTree = (tree, search2) => {
3783
3794
  import { Fragment as Fragment9, jsx as jsx36, jsxs as jsxs21 } from "react/jsx-runtime";
3784
3795
  var TreeView_default = memo2(function TreeView({ data, selected: selected5, startIcons, onSelect, withSearch = false }) {
3785
3796
  const [searchValue, setSearchValue] = useState17("");
3786
- const onChangeSearchValue = useCallback9((e) => setSearchValue(e.target.value), []);
3787
- const selectedValues = useMemo8(
3797
+ const onChangeSearchValue = useCallback10((e) => setSearchValue(e.target.value), []);
3798
+ const selectedValues = useMemo9(
3788
3799
  () => selected5.reduce(
3789
3800
  (acc, cur) => {
3790
3801
  acc[cur] = true;
@@ -3794,7 +3805,7 @@ var TreeView_default = memo2(function TreeView({ data, selected: selected5, star
3794
3805
  ),
3795
3806
  [selected5]
3796
3807
  );
3797
- const filteredData = useMemo8(() => {
3808
+ const filteredData = useMemo9(() => {
3798
3809
  return getFilteredTree(data, searchValue);
3799
3810
  }, [data, searchValue]);
3800
3811
  return /* @__PURE__ */ jsxs21(Fragment9, { children: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nntc-ui",
3
- "version": "0.0.52",
3
+ "version": "0.0.54",
4
4
  "author": "NNTC",
5
5
  "description": "React UI-kit for NNTC",
6
6
  "type": "module",