nntc-ui 0.0.6 → 0.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 (4) hide show
  1. package/index.css +12 -5
  2. package/index.d.ts +2 -1
  3. package/index.js +266 -137
  4. package/package.json +1 -1
package/index.css CHANGED
@@ -1561,9 +1561,6 @@ button[disabled] {
1561
1561
  .virtualTable_marginLeftChanging {
1562
1562
  background-color: var(--theme-table-header);
1563
1563
  }
1564
- .virtualTable_marginTopChanging.virtualTable_marginLeftChanging {
1565
- z-index: 3;
1566
- }
1567
1564
  .virtualTable_rightBorder {
1568
1565
  position: absolute;
1569
1566
  top: 0;
@@ -1676,12 +1673,22 @@ button[disabled] {
1676
1673
  display: flex;
1677
1674
  gap: 16px;
1678
1675
  align-items: center;
1679
- width: 424px;
1680
- padding: 16px 16px 0 16px;
1676
+ width: 380px;
1677
+ padding: 16px 8px 0 8px;
1681
1678
  }
1682
1679
  .numberFiltration_select {
1683
1680
  width: 120px;
1684
1681
  }
1682
+ .numberFiltration_inputsContainer {
1683
+ display: flex;
1684
+ flex: 1 1 0;
1685
+ gap: 16px;
1686
+ align-items: center;
1687
+ width: 0;
1688
+ }
1689
+ .numberFiltration_input {
1690
+ flex: 1 1 0;
1691
+ }
1685
1692
 
1686
1693
  /* src/components/view/TreeView/treeView.module.css */
1687
1694
  .treeView_search {
package/index.d.ts CHANGED
@@ -273,7 +273,8 @@ declare function VirtualTable(props: UiProps<Props$7>): react_jsx_runtime.JSX.El
273
273
 
274
274
  interface FilterBy {
275
275
  columnName: string;
276
- values: string[];
276
+ type: 'value' | 'range';
277
+ values: (string | number)[];
277
278
  }
278
279
 
279
280
  interface SortBy {
package/index.js CHANGED
@@ -1992,7 +1992,6 @@ var virtualTable_default = {
1992
1992
  selected: "virtualTable_selected",
1993
1993
  sticky: "virtualTable_sticky",
1994
1994
  marginLeftChanging: "virtualTable_marginLeftChanging",
1995
- marginTopChanging: "virtualTable_marginTopChanging",
1996
1995
  rightBorder: "virtualTable_rightBorder",
1997
1996
  bottomBorder: "virtualTable_bottomBorder",
1998
1997
  viewCell: "virtualTable_viewCell",
@@ -2077,7 +2076,9 @@ import { useState as useState12 } from "react";
2077
2076
  // src/components/view/VirtualTable/ui/NumberFiltration/numberFiltration.module.css
2078
2077
  var numberFiltration_default = {
2079
2078
  root: "numberFiltration_root",
2080
- select: "numberFiltration_select"
2079
+ select: "numberFiltration_select",
2080
+ inputsContainer: "numberFiltration_inputsContainer",
2081
+ input: "numberFiltration_input"
2081
2082
  };
2082
2083
 
2083
2084
  // src/components/view/VirtualTable/ui/NumberFiltration/NumberFiltration.tsx
@@ -2085,11 +2086,43 @@ import { Fragment as Fragment5, jsx as jsx31, jsxs as jsxs17 } from "react/jsx-r
2085
2086
  var items = [
2086
2087
  { type: "item", name: "\u041E\u0442 \u2014 \u0434\u043E", value: "range" },
2087
2088
  { type: "item", name: "\u0411\u043E\u043B\u044C\u0448\u0435", value: "more" },
2088
- { type: "item", name: "\u041C\u0435\u043D\u044C\u0448\u0435", value: "less" }
2089
+ { type: "item", name: "\u041C\u0435\u043D\u044C\u0448\u0435", value: "less" },
2090
+ { type: "item", name: "\u0420\u0430\u0432\u043D\u043E", value: "equal" }
2089
2091
  ];
2090
2092
  function NumberFiltration(props) {
2091
- const {} = props;
2092
- const [selectedItem, setSelectedItem] = useState12(items[0]);
2093
+ const { defaultValues = [-Infinity, Infinity], actionWithSelected } = props;
2094
+ const [selectedItem, setSelectedItem] = useState12(
2095
+ defaultValues[0] === -Infinity && defaultValues[1] === Infinity ? items[0] : defaultValues[0] === defaultValues[1] ? items[3] : defaultValues[0] === -Infinity ? items[2] : defaultValues[1] === Infinity ? items[1] : items[0]
2096
+ );
2097
+ const [values, setValues] = useState12(defaultValues);
2098
+ const handleSelect = (item) => {
2099
+ if (!!item) {
2100
+ const newValues = [...values];
2101
+ switch (item.value) {
2102
+ case "more":
2103
+ newValues[1] = Infinity;
2104
+ break;
2105
+ case "less":
2106
+ newValues[0] = -Infinity;
2107
+ break;
2108
+ case "equal":
2109
+ const val = newValues[0] !== -Infinity ? newValues[0] : newValues[1];
2110
+ newValues[0] = val;
2111
+ newValues[1] = val;
2112
+ break;
2113
+ default:
2114
+ break;
2115
+ }
2116
+ setValues(newValues);
2117
+ actionWithSelected(newValues);
2118
+ setSelectedItem(item);
2119
+ }
2120
+ };
2121
+ const handleChangeNumber = (type, value) => {
2122
+ setValues(
2123
+ (prev) => type === "equal" ? [value.length ? +value : -Infinity, value.length ? +value : Infinity] : type === "more" ? [value.length ? +value : -Infinity, prev[1]] : [prev[0], value.length ? +value : Infinity]
2124
+ );
2125
+ };
2093
2126
  return /* @__PURE__ */ jsxs17("div", { className: classnames20(numberFiltration_default.root), children: [
2094
2127
  /* @__PURE__ */ jsx31(
2095
2128
  Select,
@@ -2098,11 +2131,72 @@ function NumberFiltration(props) {
2098
2131
  componentSize: "small",
2099
2132
  variant: "filled",
2100
2133
  selected: selectedItem,
2101
- onValueChange: setSelectedItem,
2102
- classes: { root: numberFiltration_default.select }
2134
+ onValueChange: handleSelect,
2135
+ classes: { root: numberFiltration_default.select },
2136
+ tabIndex: -1
2103
2137
  }
2104
2138
  ),
2105
- selectedItem?.value === "range" && /* @__PURE__ */ jsx31(Fragment5, {})
2139
+ /* @__PURE__ */ jsx31("div", { className: classnames20(numberFiltration_default.inputsContainer), children: selectedItem.value === "range" ? /* @__PURE__ */ jsxs17(Fragment5, { children: [
2140
+ /* @__PURE__ */ jsx31(
2141
+ Input,
2142
+ {
2143
+ componentSize: "small",
2144
+ variant: "outlined",
2145
+ type: "number",
2146
+ classes: { root: numberFiltration_default.input },
2147
+ value: values[0] > -Infinity && values[0] < Infinity ? values[0] : "",
2148
+ onChange: (e) => {
2149
+ handleChangeNumber("more", e.target.value);
2150
+ },
2151
+ onBlur: () => actionWithSelected(values),
2152
+ onKeyUp: (e) => {
2153
+ if (e.key === "Enter") {
2154
+ e.preventDefault();
2155
+ actionWithSelected(values);
2156
+ }
2157
+ }
2158
+ }
2159
+ ),
2160
+ /* @__PURE__ */ jsx31(
2161
+ Input,
2162
+ {
2163
+ componentSize: "small",
2164
+ variant: "outlined",
2165
+ type: "number",
2166
+ classes: { root: numberFiltration_default.input },
2167
+ value: values[1] > -Infinity && values[1] < Infinity ? values[1] : "",
2168
+ onChange: (e) => {
2169
+ handleChangeNumber("less", e.target.value);
2170
+ },
2171
+ onBlur: () => actionWithSelected(values),
2172
+ onKeyUp: (e) => {
2173
+ if (e.key === "Enter") {
2174
+ e.preventDefault();
2175
+ actionWithSelected(values);
2176
+ }
2177
+ }
2178
+ }
2179
+ )
2180
+ ] }) : /* @__PURE__ */ jsx31(
2181
+ Input,
2182
+ {
2183
+ componentSize: "small",
2184
+ variant: "outlined",
2185
+ type: "number",
2186
+ classes: { root: numberFiltration_default.input },
2187
+ value: selectedItem.value === "more" ? values[0] > -Infinity && values[0] < Infinity ? values[0] : "" : values[1] > -Infinity && values[1] < Infinity ? values[1] : "",
2188
+ onChange: (e) => {
2189
+ handleChangeNumber(selectedItem.value, e.target.value);
2190
+ },
2191
+ onBlur: () => actionWithSelected(values),
2192
+ onKeyUp: (e) => {
2193
+ if (e.key === "Enter") {
2194
+ e.preventDefault();
2195
+ actionWithSelected(values);
2196
+ }
2197
+ }
2198
+ }
2199
+ ) })
2106
2200
  ] });
2107
2201
  }
2108
2202
 
@@ -2147,6 +2241,9 @@ function HeaderDropdown(props) {
2147
2241
  });
2148
2242
  return result;
2149
2243
  }, [filterBy, headerResultName]);
2244
+ const filterNumbers = useMemo6(() => {
2245
+ return filterBy.find((fb) => fb.columnName === headerResultName)?.values;
2246
+ }, [filterBy, headerResultName]);
2150
2247
  const handleSortClick = (direction) => () => {
2151
2248
  setSortBy((prev) => {
2152
2249
  if (prev.some((p) => p.columnName === headerResultName && p.direction === direction)) {
@@ -2160,6 +2257,26 @@ function HeaderDropdown(props) {
2160
2257
  }
2161
2258
  });
2162
2259
  };
2260
+ const actionWithSelectedNumbers = (values) => {
2261
+ setFilterBy((prev) => {
2262
+ if (values[0] === -Infinity && values[1] === Infinity) {
2263
+ return [...prev.filter((p) => !(p.columnName === headerResultName && p.type === "range"))];
2264
+ } else {
2265
+ const newResult = [...prev];
2266
+ const exist = newResult.find((p) => p.columnName === headerResultName && p.type === "range");
2267
+ if (exist) {
2268
+ exist.values = values;
2269
+ } else {
2270
+ newResult.push({
2271
+ columnName: headerResultName,
2272
+ type: "range",
2273
+ values
2274
+ });
2275
+ }
2276
+ return newResult;
2277
+ }
2278
+ });
2279
+ };
2163
2280
  const actionWithSelectedObjects = (selected) => {
2164
2281
  Object.entries(selected).forEach(([key, value]) => {
2165
2282
  if (!value) {
@@ -2168,11 +2285,11 @@ function HeaderDropdown(props) {
2168
2285
  });
2169
2286
  setFilterBy((prev) => {
2170
2287
  const newResult = [...prev];
2171
- const exist = newResult.find((p) => p.columnName === headerResultName);
2288
+ const exist = newResult.find((p) => p.columnName === headerResultName && p.type === "value");
2172
2289
  if (exist) {
2173
2290
  exist.values = Object.keys(selected);
2174
2291
  } else {
2175
- newResult.push({ columnName: headerResultName, values: Object.keys(selected) });
2292
+ newResult.push({ columnName: headerResultName, type: "value", values: Object.keys(selected) });
2176
2293
  }
2177
2294
  return newResult;
2178
2295
  });
@@ -2188,7 +2305,7 @@ function HeaderDropdown(props) {
2188
2305
  wrapTrigger: true,
2189
2306
  root: containerRef,
2190
2307
  description: /* @__PURE__ */ jsxs18(Fragment6, { children: [
2191
- filtrationByNumber && /* @__PURE__ */ jsx32(NumberFiltration, {}),
2308
+ filtrationByNumber && /* @__PURE__ */ jsx32(NumberFiltration, { defaultValues: filterNumbers, actionWithSelected: actionWithSelectedNumbers }),
2192
2309
  filtrationByValue && /* @__PURE__ */ jsx32("div", { className: classnames21(headerDropdown_default.checklistWrap), children: /* @__PURE__ */ jsx32(
2193
2310
  Checklist,
2194
2311
  {
@@ -2310,7 +2427,7 @@ var recursiveFilter = (items2, filterBy) => {
2310
2427
  if (filterBy.length) {
2311
2428
  const filterByItem = filterBy[filterBy.length - 1];
2312
2429
  const filtered = filterByItem.values.length ? items2.filter(
2313
- (item) => filterByItem.values.includes(item[filterByItem.columnName]?.value?.toString() ?? "") || item.isNew?.value === 1
2430
+ (item) => item[filterByItem.columnName] && (filterByItem.type === "range" ? item[filterByItem.columnName].value >= filterByItem.values[0] && item[filterByItem.columnName].value <= filterByItem.values[1] : filterByItem.values.includes(item[filterByItem.columnName].value?.toString() ?? "")) || item.isNew?.value === 1
2314
2431
  ) : items2;
2315
2432
  return recursiveFilter(filtered, filterBy.slice(0, filterBy.length - 1));
2316
2433
  }
@@ -2359,9 +2476,11 @@ function VirtualTable(props) {
2359
2476
  const memoizedData = useMemo7(() => {
2360
2477
  const newRows = [...rows];
2361
2478
  const nextFilterBy = filterBy.filter(
2362
- (i) => rows.some((r) => i.values.includes(r[i.columnName]?.value?.toString() ?? ""))
2479
+ (i) => rows.some(
2480
+ (r) => r[i.columnName] && (i.type === "range" ? r[i.columnName].value >= i.values[0] && r[i.columnName].value <= i.values[1] : i.values.includes(r[i.columnName].value?.toString() ?? ""))
2481
+ )
2363
2482
  );
2364
- const filtered = nextFilterBy.length ? recursiveFilter(newRows, nextFilterBy) : newRows;
2483
+ const filtered = nextFilterBy.length ? recursiveFilter(newRows, nextFilterBy) : filterBy.some((fb) => fb.type === "range" && fb.values.some((v) => v !== Infinity && v !== -Infinity)) ? [] : newRows;
2365
2484
  const sorted = sortBy.length ? recursiveSort(filtered, sortBy) : filtered;
2366
2485
  return sorted;
2367
2486
  }, [rows, sortBy, filterBy]);
@@ -2398,7 +2517,7 @@ function VirtualTable(props) {
2398
2517
  });
2399
2518
  const columnVirtualizer = useVirtualizer({
2400
2519
  horizontal: true,
2401
- count: rowsFromTable[0]?.getAllCells().length ?? 1,
2520
+ count: headerGroups[0]?.headers.length ?? 1,
2402
2521
  rangeExtractor: useCallback7((range) => {
2403
2522
  const stickyIndexes = [...Array(fixedColumnsCount)].map((_, index) => index);
2404
2523
  const next = /* @__PURE__ */ new Set([...stickyIndexes, ...defaultRangeExtractor(range)]);
@@ -2459,10 +2578,6 @@ function VirtualTable(props) {
2459
2578
  }, [tableContainerRef?.current?.clientHeight, rowsTotalSize]);
2460
2579
  useEffect8(() => {
2461
2580
  const scrollListener = function() {
2462
- const marginTopChangingElements = this.querySelectorAll(`.${virtualTable_default.marginTopChanging}`);
2463
- marginTopChangingElements?.forEach(
2464
- (element) => element.style.marginTop = `${this.scrollTop}px`
2465
- );
2466
2581
  const marginLeftChangingElements = this.querySelectorAll(`.${virtualTable_default.marginLeftChanging}`);
2467
2582
  marginLeftChangingElements?.forEach(
2468
2583
  (element) => element.style.marginLeft = `${this.scrollLeft}px`
@@ -2496,25 +2611,45 @@ function VirtualTable(props) {
2496
2611
  height: `${rowsTotalSize + summaryHeaderHeight}px`
2497
2612
  },
2498
2613
  children: [
2499
- /* @__PURE__ */ jsx33("div", { children: headerGroups.map((headerGroup, hgi) => {
2500
- const innerCell = (header) => {
2501
- const headerMeta = header.column.columnDef.meta;
2502
- return /* @__PURE__ */ jsx33("div", { className: classnames22(virtualTable_default.thCell), children: header.column.columnDef.id === header.column.columnDef["accessorKey"] && (headerMeta?.sortable || headerMeta?.filtrationByValue) ? /* @__PURE__ */ jsx33(
2503
- HeaderDropdown,
2504
- {
2505
- sortable: headerMeta?.sortable ?? false,
2506
- sortBy,
2507
- setSortBy,
2508
- sortAnotherName: headerMeta?.sortAnotherName,
2509
- filtrationByNumber: headerMeta?.filtrationByNumber ?? false,
2510
- filtrationByDate: headerMeta?.filtrationByDate ?? false,
2511
- filtrationByValue: headerMeta?.filtrationByValue ?? false,
2512
- filterBy,
2513
- setFilterBy,
2514
- items: rows,
2515
- headerName: header.column.columnDef.id ?? header.id,
2516
- containerRef: useTableContainerAsRootForPopup ? tableContainerRef : void 0,
2517
- children: /* @__PURE__ */ jsx33(
2614
+ /* @__PURE__ */ jsx33(
2615
+ "div",
2616
+ {
2617
+ style: {
2618
+ position: "sticky",
2619
+ top: 0,
2620
+ zIndex: 2,
2621
+ marginLeft: 1
2622
+ },
2623
+ children: headerGroups.map((headerGroup, hgi) => {
2624
+ const innerCell = (header) => {
2625
+ const headerMeta = header.column.columnDef.meta;
2626
+ return /* @__PURE__ */ jsx33("div", { className: classnames22(virtualTable_default.thCell), children: header.column.columnDef.id === header.column.columnDef["accessorKey"] && (headerMeta?.sortable || headerMeta?.filtrationByValue) ? /* @__PURE__ */ jsx33(
2627
+ HeaderDropdown,
2628
+ {
2629
+ sortable: headerMeta?.sortable ?? false,
2630
+ sortBy,
2631
+ setSortBy,
2632
+ sortAnotherName: headerMeta?.sortAnotherName,
2633
+ filtrationByNumber: headerMeta?.filtrationByNumber ?? false,
2634
+ filtrationByDate: headerMeta?.filtrationByDate ?? false,
2635
+ filtrationByValue: headerMeta?.filtrationByValue ?? false,
2636
+ filterBy,
2637
+ setFilterBy,
2638
+ items: rows,
2639
+ headerName: header.column.columnDef.id ?? header.id,
2640
+ containerRef: useTableContainerAsRootForPopup ? tableContainerRef : void 0,
2641
+ children: /* @__PURE__ */ jsx33(
2642
+ "div",
2643
+ {
2644
+ className: classnames22(
2645
+ virtualTable_default.label,
2646
+ !!headerMeta?.headerAlign ? virtualTable_default[`align${headerMeta?.headerAlign}`] : virtualTable_default.alignLeft
2647
+ ),
2648
+ children: flexRender(header.column.columnDef.header, header.getContext())
2649
+ }
2650
+ )
2651
+ }
2652
+ ) : /* @__PURE__ */ jsx33(
2518
2653
  "div",
2519
2654
  {
2520
2655
  className: classnames22(
@@ -2523,108 +2658,102 @@ function VirtualTable(props) {
2523
2658
  ),
2524
2659
  children: flexRender(header.column.columnDef.header, header.getContext())
2525
2660
  }
2526
- )
2527
- }
2528
- ) : /* @__PURE__ */ jsx33(
2529
- "div",
2530
- {
2531
- className: classnames22(
2532
- virtualTable_default.label,
2533
- !!headerMeta?.headerAlign ? virtualTable_default[`align${headerMeta?.headerAlign}`] : virtualTable_default.alignLeft
2534
- ),
2535
- children: flexRender(header.column.columnDef.header, header.getContext())
2536
- }
2537
- ) });
2538
- };
2539
- return /* @__PURE__ */ jsxs19(Fragment7, { children: [
2540
- [...Array(fixedColumnsCount)].map((_, index) => {
2541
- const header = headerGroup.headers[index];
2542
- return /* @__PURE__ */ jsx33(
2543
- "div",
2544
- {
2545
- className: classnames22(
2546
- virtualTable_default.th,
2547
- hgi === 0 ? virtualTable_default.firstThRow : void 0,
2548
- virtualTable_default.marginTopChanging,
2549
- virtualTable_default.marginLeftChanging
2550
- ),
2551
- style: {
2552
- zIndex: 3,
2553
- width: `${columnsEstimateSize(index)}px`,
2554
- height: `${headerGroupHeight[hgi]}px`,
2555
- transform: `translateX(${index > 0 ? columnsEstimateSize(index - 1) : 0}px) translateY(${headerGroupY(hgi)}px)`
2556
- },
2557
- children: innerCell(header)
2558
- },
2559
- `${headerGroup.id}-${header.id}`
2560
- );
2561
- }),
2562
- virtualColumns.map((column) => {
2563
- if (column.index > fixedColumnsCount - 1) {
2564
- const header = headerGroup.headers[column.index];
2565
- const nextHorizontalHeaders = getNextHorizontalHeaders(
2566
- headerGroup.headers,
2567
- column.index,
2568
- lastVirtualColumnIndex
2569
- );
2570
- const prevHorizontalHeaders = getPrevHorizontalHeaders(headerGroup.headers, column.index);
2571
- const nextVerticalHeaders = getNextVerticalHeaders(headerGroups, hgi, column.index);
2572
- const prevVerticalHeaders = getPrevVerticalHeaders(headerGroups, hgi, column.index);
2573
- const thWidth = !nextHorizontalHeaders.length && !prevHorizontalHeaders.length ? column.size : column.size + nextHorizontalHeaders.reduce(
2574
- (sum, current) => sum + (current.column.columnDef.meta?.width ?? 0),
2575
- 0
2576
- );
2577
- const zIndex = !nextHorizontalHeaders.length && !prevHorizontalHeaders.length ? void 0 : nextHorizontalHeaders.length + 2;
2578
- const thHeight = !prevVerticalHeaders.length ? headerGroupHeight[hgi] : headerGroupHeight[hgi] + prevVerticalHeaders.reduce(
2579
- (sum, _, index) => sum + (headerGroupHeight[hgi - index - 1] ?? 0),
2580
- 0
2581
- );
2582
- const translateY = !prevVerticalHeaders.length ? headerGroupY(hgi) : headerGroupY(hgi) - prevVerticalHeaders.reduce(
2583
- (sum, _, index) => sum + (headerGroupHeight[hgi - index - 1] ?? 0),
2584
- 0
2585
- );
2586
- return /* @__PURE__ */ jsx33(
2661
+ ) });
2662
+ };
2663
+ return /* @__PURE__ */ jsxs19(Fragment7, { children: [
2664
+ [...Array(fixedColumnsCount)].map((_, index) => {
2665
+ const header = headerGroup.headers[index];
2666
+ const nextHorizontalHeaders = getNextHorizontalHeaders(
2667
+ headerGroup.headers,
2668
+ index,
2669
+ lastVirtualColumnIndex
2670
+ );
2671
+ const nextVerticalHeaders = getNextVerticalHeaders(headerGroups, hgi, index);
2672
+ return /* @__PURE__ */ jsx33(
2673
+ "div",
2674
+ {
2675
+ className: classnames22(
2676
+ virtualTable_default.th,
2677
+ hgi === 0 ? virtualTable_default.firstThRow : void 0,
2678
+ !nextVerticalHeaders.length && index !== headerGroup.headers.length - 1 && virtualTable_default.thRightBorder,
2679
+ index === 0 && virtualTable_default.thLeftBorder,
2680
+ nextVerticalHeaders.length && !nextHorizontalHeaders.length && virtualTable_default.thHiddenColumn,
2681
+ virtualTable_default.marginLeftChanging
2682
+ ),
2683
+ style: {
2684
+ zIndex: 3,
2685
+ width: `${columnsEstimateSize(index)}px`,
2686
+ height: `${headerGroupHeight[hgi]}px`,
2687
+ transform: `translateX(${index > 0 ? columnsEstimateSize(index - 1) : 0}px) translateY(${headerGroupY(hgi)}px)`
2688
+ },
2689
+ children: innerCell(header)
2690
+ },
2691
+ `${headerGroup.id}-${header.id}`
2692
+ );
2693
+ }),
2694
+ virtualColumns.map((column) => {
2695
+ if (column.index > fixedColumnsCount - 1) {
2696
+ const header = headerGroup.headers[column.index];
2697
+ const nextHorizontalHeaders = getNextHorizontalHeaders(
2698
+ headerGroup.headers,
2699
+ column.index,
2700
+ lastVirtualColumnIndex
2701
+ );
2702
+ const prevHorizontalHeaders = getPrevHorizontalHeaders(headerGroup.headers, column.index);
2703
+ const nextVerticalHeaders = getNextVerticalHeaders(headerGroups, hgi, column.index);
2704
+ const prevVerticalHeaders = getPrevVerticalHeaders(headerGroups, hgi, column.index);
2705
+ const thWidth = !nextHorizontalHeaders.length && !prevHorizontalHeaders.length ? column.size : column.size + nextHorizontalHeaders.reduce(
2706
+ (sum, current) => sum + (current.column.columnDef.meta?.width ?? 0),
2707
+ 0
2708
+ );
2709
+ const zIndex = !nextHorizontalHeaders.length && !prevHorizontalHeaders.length ? void 0 : nextHorizontalHeaders.length + 2;
2710
+ const thHeight = !prevVerticalHeaders.length ? headerGroupHeight[hgi] : headerGroupHeight[hgi] + prevVerticalHeaders.reduce(
2711
+ (sum, _, index) => sum + (headerGroupHeight[hgi - index - 1] ?? 0),
2712
+ 0
2713
+ );
2714
+ const translateY = !prevVerticalHeaders.length ? headerGroupY(hgi) : headerGroupY(hgi) - prevVerticalHeaders.reduce(
2715
+ (sum, _, index) => sum + (headerGroupHeight[hgi - index - 1] ?? 0),
2716
+ 0
2717
+ );
2718
+ return /* @__PURE__ */ jsx33(
2719
+ "div",
2720
+ {
2721
+ className: classnames22(
2722
+ virtualTable_default.th,
2723
+ hgi === 0 && virtualTable_default.firstThRow,
2724
+ !nextVerticalHeaders.length && column.index !== headerGroup.headers.length - 1 && virtualTable_default.thRightBorder,
2725
+ column.index === 0 && virtualTable_default.thLeftBorder,
2726
+ nextVerticalHeaders.length && !nextHorizontalHeaders.length && virtualTable_default.thHiddenColumn
2727
+ ),
2728
+ style: {
2729
+ width: `${thWidth}px`,
2730
+ zIndex,
2731
+ height: `${thHeight}px`,
2732
+ transform: `translateX(${column.start + (!!fixedColumnsCount ? -2 : 0)}px) translateY(${translateY}px)`,
2733
+ borderTop: translateY === 0 ? "1px solid var(--border-color)" : void 0
2734
+ },
2735
+ children: innerCell(header)
2736
+ },
2737
+ `${headerGroup.id}-${header.id}`
2738
+ );
2739
+ }
2740
+ return null;
2741
+ }),
2742
+ !!rowButtons && /* @__PURE__ */ jsx33(
2587
2743
  "div",
2588
2744
  {
2589
- className: classnames22(
2590
- virtualTable_default.th,
2591
- hgi === 0 && virtualTable_default.firstThRow,
2592
- !nextVerticalHeaders.length && column.index !== headerGroup.headers.length - 1 && virtualTable_default.thRightBorder,
2593
- column.index === 0 && virtualTable_default.thLeftBorder,
2594
- nextVerticalHeaders.length && !nextHorizontalHeaders.length && virtualTable_default.thHiddenColumn,
2595
- virtualTable_default.marginTopChanging
2596
- ),
2745
+ className: classnames22(virtualTable_default.th, hgi === 0 ? virtualTable_default.firstThRow : void 0),
2597
2746
  style: {
2598
- width: `${thWidth}px`,
2599
- zIndex,
2600
- height: `${thHeight}px`,
2601
- transform: `translateX(${column.start + (!!fixedColumnsCount ? -2 : 0)}px) translateY(${translateY}px)`,
2602
- borderTop: translateY === 0 ? "1px solid var(--border-color)" : void 0
2603
- },
2604
- children: innerCell(header)
2605
- },
2606
- `${headerGroup.id}-${header.id}`
2607
- );
2608
- }
2609
- return null;
2610
- }),
2611
- !!rowButtons && /* @__PURE__ */ jsx33(
2612
- "div",
2613
- {
2614
- className: classnames22(
2615
- virtualTable_default.th,
2616
- hgi === 0 ? virtualTable_default.firstThRow : void 0,
2617
- virtualTable_default.marginTopChanging
2618
- ),
2619
- style: {
2620
- width: `${rowActionWidth}px`,
2621
- height: `${headerGroupHeight[hgi]}px`,
2622
- transform: `translateX(${columnsTotalSize + (!!fixedColumnsCount ? -2 : 0)}px) translateY(${headerGroupY(hgi)}px)`
2623
- }
2624
- }
2625
- )
2626
- ] }, headerGroup.id);
2627
- }) }),
2747
+ width: `${rowActionWidth}px`,
2748
+ height: `${headerGroupHeight[hgi]}px`,
2749
+ transform: `translateX(${columnsTotalSize + (!!fixedColumnsCount ? -2 : 0)}px) translateY(${headerGroupY(hgi)}px)`
2750
+ }
2751
+ }
2752
+ )
2753
+ ] }, headerGroup.id);
2754
+ })
2755
+ }
2756
+ ),
2628
2757
  virtualRows.map((virtualRow) => {
2629
2758
  const row = rowsFromTable[virtualRow.index];
2630
2759
  return /* @__PURE__ */ jsxs19(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nntc-ui",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "React UI-kit for NNTC",
5
5
  "type": "module",
6
6
  "exports": {