nntc-ui 0.0.84 → 0.0.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.css +13 -0
- package/index.d.ts +3 -1
- package/index.js +107 -13
- package/package.json +1 -1
package/index.css
CHANGED
|
@@ -1900,10 +1900,20 @@
|
|
|
1900
1900
|
border-bottom: 1px solid var(--border-color);
|
|
1901
1901
|
}
|
|
1902
1902
|
.virtualTable_td {
|
|
1903
|
+
position: relative;
|
|
1903
1904
|
display: flex;
|
|
1904
1905
|
align-items: center;
|
|
1905
1906
|
padding: 0;
|
|
1906
1907
|
}
|
|
1908
|
+
.virtualTable_rowspanContent {
|
|
1909
|
+
position: absolute;
|
|
1910
|
+
top: 0;
|
|
1911
|
+
left: 0;
|
|
1912
|
+
z-index: 3;
|
|
1913
|
+
display: flex;
|
|
1914
|
+
align-items: center;
|
|
1915
|
+
width: 100%;
|
|
1916
|
+
}
|
|
1907
1917
|
.virtualTable_root.virtualTable_bordersAll .virtualTable_td:nth-child(2),
|
|
1908
1918
|
.virtualTable_root.virtualTable_root.virtualTable_bordersVertical .virtualTable_td:nth-child(2) {
|
|
1909
1919
|
border-left: 1px solid var(--border-color);
|
|
@@ -2058,6 +2068,9 @@
|
|
|
2058
2068
|
font-size: calc(var(--text-body2-size) - 4px);
|
|
2059
2069
|
line-height: calc(var(--text-body2-height) - 4px);
|
|
2060
2070
|
}
|
|
2071
|
+
.virtualTable_input {
|
|
2072
|
+
border-radius: 0 !important;
|
|
2073
|
+
}
|
|
2061
2074
|
|
|
2062
2075
|
/* src/components/view/VirtualTable/ui/HeaderDropdown/headerDropdown.module.css */
|
|
2063
2076
|
.headerDropdown_root {
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { ButtonHTMLAttributes, ReactNode, DetailedHTMLProps, InputHTMLAttributes, PropsWithChildren, JSX, MutableRefObject, ReactElement, CSSProperties, HTMLProps, ElementType } from 'react';
|
|
2
|
+
import { ButtonHTMLAttributes, ReactNode, DetailedHTMLProps, InputHTMLAttributes, PropsWithChildren, HTMLInputTypeAttribute, JSX, MutableRefObject, ReactElement, CSSProperties, HTMLProps, ElementType } from 'react';
|
|
3
3
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
4
|
import { Placement } from '@floating-ui/react';
|
|
5
5
|
|
|
@@ -280,6 +280,7 @@ interface TableCell {
|
|
|
280
280
|
};
|
|
281
281
|
tooltip?: string;
|
|
282
282
|
fill?: 'error' | 'success';
|
|
283
|
+
rowspan?: number;
|
|
283
284
|
}
|
|
284
285
|
|
|
285
286
|
interface TableRow {
|
|
@@ -333,6 +334,7 @@ interface TableColumn {
|
|
|
333
334
|
}) => void;
|
|
334
335
|
verticalAlign?: VerticalAlign;
|
|
335
336
|
toFixed?: number;
|
|
337
|
+
inputType?: HTMLInputTypeAttribute;
|
|
336
338
|
}
|
|
337
339
|
|
|
338
340
|
interface VirtualTableRef {
|
package/index.js
CHANGED
|
@@ -1962,7 +1962,7 @@ var Input = forwardRef6(
|
|
|
1962
1962
|
{
|
|
1963
1963
|
ref: mergeRefs5([inputRef, ref]),
|
|
1964
1964
|
id: inputId,
|
|
1965
|
-
className: fileInput,
|
|
1965
|
+
className: classnames8(fileInput, classes?.fileInput),
|
|
1966
1966
|
type: "file",
|
|
1967
1967
|
onChange: handleFileChange,
|
|
1968
1968
|
...inputProps
|
|
@@ -3175,6 +3175,7 @@ __export(virtualTable_exports, {
|
|
|
3175
3175
|
error: () => error2,
|
|
3176
3176
|
evenRow: () => evenRow,
|
|
3177
3177
|
firstThRow: () => firstThRow,
|
|
3178
|
+
input: () => input8,
|
|
3178
3179
|
label: () => label7,
|
|
3179
3180
|
marginLeftChanging: () => marginLeftChanging,
|
|
3180
3181
|
medium: () => medium12,
|
|
@@ -3182,6 +3183,7 @@ __export(virtualTable_exports, {
|
|
|
3182
3183
|
rightBorder: () => rightBorder,
|
|
3183
3184
|
root: () => root17,
|
|
3184
3185
|
rowButtonTrigger: () => rowButtonTrigger,
|
|
3186
|
+
rowspanContent: () => rowspanContent,
|
|
3185
3187
|
selected: () => selected3,
|
|
3186
3188
|
showInModal: () => showInModal,
|
|
3187
3189
|
small: () => small12,
|
|
@@ -3220,6 +3222,7 @@ var alignRight = "virtualTable_alignRight";
|
|
|
3220
3222
|
var alignCenter = "virtualTable_alignCenter";
|
|
3221
3223
|
var tr = "virtualTable_tr";
|
|
3222
3224
|
var td = "virtualTable_td";
|
|
3225
|
+
var rowspanContent = "virtualTable_rowspanContent";
|
|
3223
3226
|
var evenRow = "virtualTable_evenRow";
|
|
3224
3227
|
var selected3 = "virtualTable_selected";
|
|
3225
3228
|
var sticky = "virtualTable_sticky";
|
|
@@ -3240,6 +3243,7 @@ var verticalAlignFlexEnd = "virtualTable_verticalAlignFlexEnd";
|
|
|
3240
3243
|
var rowButtonTrigger = "virtualTable_rowButtonTrigger";
|
|
3241
3244
|
var medium12 = "virtualTable_medium";
|
|
3242
3245
|
var small12 = "virtualTable_small";
|
|
3246
|
+
var input8 = "virtualTable_input";
|
|
3243
3247
|
var virtualTable_default = {
|
|
3244
3248
|
root: root17,
|
|
3245
3249
|
tableContainer,
|
|
@@ -3259,6 +3263,7 @@ var virtualTable_default = {
|
|
|
3259
3263
|
alignCenter,
|
|
3260
3264
|
tr,
|
|
3261
3265
|
td,
|
|
3266
|
+
rowspanContent,
|
|
3262
3267
|
evenRow,
|
|
3263
3268
|
selected: selected3,
|
|
3264
3269
|
sticky,
|
|
@@ -3278,7 +3283,8 @@ var virtualTable_default = {
|
|
|
3278
3283
|
verticalAlignFlexEnd,
|
|
3279
3284
|
rowButtonTrigger,
|
|
3280
3285
|
medium: medium12,
|
|
3281
|
-
small: small12
|
|
3286
|
+
small: small12,
|
|
3287
|
+
input: input8
|
|
3282
3288
|
};
|
|
3283
3289
|
|
|
3284
3290
|
// src/components/view/VirtualTable/ui/DefaultColumn/DefaultColumn.tsx
|
|
@@ -3316,7 +3322,20 @@ var DefaultColumn = {
|
|
|
3316
3322
|
{
|
|
3317
3323
|
label: original[id]?.tooltip ?? "",
|
|
3318
3324
|
alertType: original[id]?.fill === "error" ? "error" : original[id]?.fill === "success" ? "success" : "default",
|
|
3319
|
-
children: additionalViewResult?.edit !== null && additionalViewResult?.edit !== void 0 ? additionalViewResult.edit(onChange, onBlur) : /* @__PURE__ */ jsx31(Fragment6, { children: /* @__PURE__ */ jsx31(
|
|
3325
|
+
children: additionalViewResult?.edit !== null && additionalViewResult?.edit !== void 0 ? additionalViewResult.edit(onChange, onBlur) : /* @__PURE__ */ jsx31(Fragment6, { children: /* @__PURE__ */ jsx31(
|
|
3326
|
+
Input,
|
|
3327
|
+
{
|
|
3328
|
+
classes: { input: input8 },
|
|
3329
|
+
componentSize: "small",
|
|
3330
|
+
variant: "outlined",
|
|
3331
|
+
onChange: (e) => onChange(e.target.value),
|
|
3332
|
+
onBlur,
|
|
3333
|
+
value: value ?? "",
|
|
3334
|
+
type: meta.inputType,
|
|
3335
|
+
fullWidth: true,
|
|
3336
|
+
autoFocus: true
|
|
3337
|
+
}
|
|
3338
|
+
) })
|
|
3320
3339
|
}
|
|
3321
3340
|
);
|
|
3322
3341
|
}
|
|
@@ -3453,7 +3472,7 @@ import { useCallback as useCallback11, useState as useState15 } from "react";
|
|
|
3453
3472
|
var root20 = "numberFiltration_root";
|
|
3454
3473
|
var select = "numberFiltration_select";
|
|
3455
3474
|
var inputsContainer = "numberFiltration_inputsContainer";
|
|
3456
|
-
var
|
|
3475
|
+
var input9 = "numberFiltration_input";
|
|
3457
3476
|
|
|
3458
3477
|
// src/components/view/VirtualTable/ui/NumberFiltration/NumberFiltration.tsx
|
|
3459
3478
|
import { Fragment as Fragment7, jsx as jsx33, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
@@ -3521,7 +3540,7 @@ function NumberFiltration(props) {
|
|
|
3521
3540
|
componentSize: "small",
|
|
3522
3541
|
variant: "outlined",
|
|
3523
3542
|
type: "number",
|
|
3524
|
-
classes: { root:
|
|
3543
|
+
classes: { root: input9 },
|
|
3525
3544
|
value: values[0] > -Infinity && values[0] < Infinity ? values[0] : "",
|
|
3526
3545
|
onChange: (e) => {
|
|
3527
3546
|
handleChangeNumber("more", e.target.value);
|
|
@@ -3541,7 +3560,7 @@ function NumberFiltration(props) {
|
|
|
3541
3560
|
componentSize: "small",
|
|
3542
3561
|
variant: "outlined",
|
|
3543
3562
|
type: "number",
|
|
3544
|
-
classes: { root:
|
|
3563
|
+
classes: { root: input9 },
|
|
3545
3564
|
value: values[1] > -Infinity && values[1] < Infinity ? values[1] : "",
|
|
3546
3565
|
onChange: (e) => {
|
|
3547
3566
|
handleChangeNumber("less", e.target.value);
|
|
@@ -3561,7 +3580,7 @@ function NumberFiltration(props) {
|
|
|
3561
3580
|
componentSize: "small",
|
|
3562
3581
|
variant: "outlined",
|
|
3563
3582
|
type: "number",
|
|
3564
|
-
classes: { root:
|
|
3583
|
+
classes: { root: input9 },
|
|
3565
3584
|
value: selectedItem.value === "more" ? values[0] > -Infinity && values[0] < Infinity ? values[0] : "" : values[1] > -Infinity && values[1] < Infinity ? values[1] : "",
|
|
3566
3585
|
onChange: (e) => {
|
|
3567
3586
|
handleChangeNumber(selectedItem.value, e.target.value);
|
|
@@ -3817,7 +3836,8 @@ var createMeta = (column) => {
|
|
|
3817
3836
|
onClick: column.onClick,
|
|
3818
3837
|
label: column.label,
|
|
3819
3838
|
verticalAlign: column.verticalAlign,
|
|
3820
|
-
toFixed: column.toFixed
|
|
3839
|
+
toFixed: column.toFixed,
|
|
3840
|
+
inputType: column.inputType
|
|
3821
3841
|
};
|
|
3822
3842
|
}
|
|
3823
3843
|
};
|
|
@@ -4107,6 +4127,65 @@ var VirtualTable = forwardRef10((props, ref) => {
|
|
|
4107
4127
|
const virtualRows = rowVirtualizer.getVirtualItems();
|
|
4108
4128
|
const virtualColumns = columnVirtualizer.getVirtualItems();
|
|
4109
4129
|
const lastVirtualColumnIndex = virtualColumns[virtualColumns.length - 1]?.index;
|
|
4130
|
+
const virtualRowsSizeByIndex = useMemo9(
|
|
4131
|
+
() => new Map(virtualRows.map((item3) => [item3.index, item3.size])),
|
|
4132
|
+
[virtualRows]
|
|
4133
|
+
);
|
|
4134
|
+
const getRowSizeByIndex = useCallback12(
|
|
4135
|
+
(index) => virtualRowsSizeByIndex.get(index) ?? bodyRowHeight,
|
|
4136
|
+
[bodyRowHeight, virtualRowsSizeByIndex]
|
|
4137
|
+
);
|
|
4138
|
+
const getRowspanHeight = useCallback12(
|
|
4139
|
+
(rowIndex, rowspan) => {
|
|
4140
|
+
const clampedRowspan = Math.max(1, Math.floor(rowspan));
|
|
4141
|
+
const lastRowIndex = Math.min(rowsFromTable.length - 1, rowIndex + clampedRowspan - 1);
|
|
4142
|
+
const rowsInRange = lastRowIndex - rowIndex + 1;
|
|
4143
|
+
let result = 0;
|
|
4144
|
+
for (let index = rowIndex; index <= lastRowIndex; index += 1) {
|
|
4145
|
+
result += getRowSizeByIndex(index);
|
|
4146
|
+
}
|
|
4147
|
+
const bordersCompensation = borders === "all" || borders === "horizontal" ? Math.max(0, rowsInRange - 1) : 0;
|
|
4148
|
+
return Math.max(0, result - bordersCompensation);
|
|
4149
|
+
},
|
|
4150
|
+
[borders, getRowSizeByIndex, rowsFromTable.length]
|
|
4151
|
+
);
|
|
4152
|
+
const isCellCoveredByRowspan = useCallback12(
|
|
4153
|
+
(rowIndex, columnId) => {
|
|
4154
|
+
for (let index = rowIndex - 1; index >= 0; index -= 1) {
|
|
4155
|
+
const upperCell = rowsFromTable[index]?.original?.[columnId];
|
|
4156
|
+
const upperRowspan = Math.max(1, upperCell?.rowspan ?? 1);
|
|
4157
|
+
if (index + upperRowspan - 1 >= rowIndex) {
|
|
4158
|
+
return true;
|
|
4159
|
+
}
|
|
4160
|
+
}
|
|
4161
|
+
return false;
|
|
4162
|
+
},
|
|
4163
|
+
[rowsFromTable]
|
|
4164
|
+
);
|
|
4165
|
+
const getRowBackgroundColor = useCallback12((row, rowIndex) => {
|
|
4166
|
+
if (row?.isNew?.value === 1) {
|
|
4167
|
+
return "var(--theme-table-selected-row)";
|
|
4168
|
+
}
|
|
4169
|
+
return rowIndex % 2 !== 0 ? "var(--theme-table-even-row)" : "var(--theme-table-background)";
|
|
4170
|
+
}, []);
|
|
4171
|
+
const rowZIndexByIndex = useMemo9(() => {
|
|
4172
|
+
const rowsCount = rowsFromTable.length;
|
|
4173
|
+
const result = /* @__PURE__ */ new Map();
|
|
4174
|
+
rowsFromTable.forEach((row, rowIndex) => {
|
|
4175
|
+
const maxRowspan = row.getAllCells().reduce(
|
|
4176
|
+
(maxSpan, cell2) => Math.max(maxSpan, Math.max(1, row.original?.[cell2.column.id]?.rowspan ?? 1)),
|
|
4177
|
+
1
|
|
4178
|
+
);
|
|
4179
|
+
const spanWeight = maxRowspan - 1;
|
|
4180
|
+
const zIndex = spanWeight * (rowsCount + 1) + (rowsCount - rowIndex + 1);
|
|
4181
|
+
result.set(rowIndex, zIndex);
|
|
4182
|
+
});
|
|
4183
|
+
return result;
|
|
4184
|
+
}, [rowsFromTable]);
|
|
4185
|
+
const headerBaseZIndex = useMemo9(
|
|
4186
|
+
() => rowsFromTable.length * rowsFromTable.length + rowsFromTable.length + 10,
|
|
4187
|
+
[rowsFromTable.length]
|
|
4188
|
+
);
|
|
4110
4189
|
const renderHeaderNode = (header2) => {
|
|
4111
4190
|
const metaLabel = header2.column.columnDef.meta?.label;
|
|
4112
4191
|
if (typeof metaLabel === "string") {
|
|
@@ -4155,7 +4234,7 @@ var VirtualTable = forwardRef10((props, ref) => {
|
|
|
4155
4234
|
style: {
|
|
4156
4235
|
position: "sticky",
|
|
4157
4236
|
top: 0,
|
|
4158
|
-
zIndex:
|
|
4237
|
+
zIndex: headerBaseZIndex
|
|
4159
4238
|
},
|
|
4160
4239
|
children: headerGroups.map((headerGroup, hgi) => {
|
|
4161
4240
|
const innerCell = (header2) => {
|
|
@@ -4222,7 +4301,7 @@ var VirtualTable = forwardRef10((props, ref) => {
|
|
|
4222
4301
|
marginLeftChanging
|
|
4223
4302
|
),
|
|
4224
4303
|
style: {
|
|
4225
|
-
zIndex:
|
|
4304
|
+
zIndex: headerBaseZIndex + 1,
|
|
4226
4305
|
width: `${columnsEstimateSize(index)}px`,
|
|
4227
4306
|
height: `${headerGroupHeight[hgi]}px`,
|
|
4228
4307
|
transform: `translateX(${Array.from({ length: index }, (_, i) => columnsEstimateSize(i)).reduce(
|
|
@@ -4250,7 +4329,7 @@ var VirtualTable = forwardRef10((props, ref) => {
|
|
|
4250
4329
|
(sum, current) => sum + (current.column.columnDef.meta?.width ?? 0),
|
|
4251
4330
|
0
|
|
4252
4331
|
);
|
|
4253
|
-
const zIndex = !nextHorizontalHeaders.length && !prevHorizontalHeaders.length ? void 0 : nextHorizontalHeaders.length + 2;
|
|
4332
|
+
const zIndex = !nextHorizontalHeaders.length && !prevHorizontalHeaders.length ? void 0 : headerBaseZIndex + nextHorizontalHeaders.length + 2;
|
|
4254
4333
|
const thHeight = !prevVerticalHeaders.length ? headerGroupHeight[hgi] : headerGroupHeight[hgi] + prevVerticalHeaders.reduce(
|
|
4255
4334
|
(sum, _, index) => sum + (headerGroupHeight[hgi - index - 1] ?? 0),
|
|
4256
4335
|
0
|
|
@@ -4311,6 +4390,7 @@ var VirtualTable = forwardRef10((props, ref) => {
|
|
|
4311
4390
|
row.original?.isNew?.value === 1 && selected3
|
|
4312
4391
|
),
|
|
4313
4392
|
style: {
|
|
4393
|
+
zIndex: rowZIndexByIndex.get(virtualRow.index) ?? 1,
|
|
4314
4394
|
...!dynamicRowHeight && {
|
|
4315
4395
|
height: virtualRow.size
|
|
4316
4396
|
},
|
|
@@ -4321,6 +4401,10 @@ var VirtualTable = forwardRef10((props, ref) => {
|
|
|
4321
4401
|
virtualColumns.map((virtualCol) => {
|
|
4322
4402
|
const cell2 = row.getAllCells()[virtualCol.index];
|
|
4323
4403
|
const isSticky = cell2.column.getIsPinned() === "left";
|
|
4404
|
+
const currentCell = row.original?.[cell2.column.id];
|
|
4405
|
+
const rowspan = Math.max(1, currentCell?.rowspan ?? 1);
|
|
4406
|
+
const isCoveredByRowspan = isCellCoveredByRowspan(virtualRow.index, cell2.column.id);
|
|
4407
|
+
const hasRowspan = rowspan > 1 && !isCoveredByRowspan;
|
|
4324
4408
|
return /* @__PURE__ */ jsx35(
|
|
4325
4409
|
"div",
|
|
4326
4410
|
{
|
|
@@ -4333,12 +4417,22 @@ var VirtualTable = forwardRef10((props, ref) => {
|
|
|
4333
4417
|
// чтобы появился левый бордер
|
|
4334
4418
|
},
|
|
4335
4419
|
width: `${virtualCol.size}px`,
|
|
4336
|
-
...!dynamicRowHeight && {
|
|
4420
|
+
...!dynamicRowHeight && !hasRowspan && {
|
|
4337
4421
|
overflow: "hidden"
|
|
4338
4422
|
}
|
|
4339
4423
|
},
|
|
4340
4424
|
"data-index": virtualRow.index,
|
|
4341
|
-
children:
|
|
4425
|
+
children: !isCoveredByRowspan && (hasRowspan ? /* @__PURE__ */ jsx35(
|
|
4426
|
+
"div",
|
|
4427
|
+
{
|
|
4428
|
+
className: rowspanContent,
|
|
4429
|
+
style: {
|
|
4430
|
+
height: `${getRowspanHeight(virtualRow.index, rowspan)}px`,
|
|
4431
|
+
backgroundColor: getRowBackgroundColor(row.original, virtualRow.index)
|
|
4432
|
+
},
|
|
4433
|
+
children: flexRender(cell2.column.columnDef.cell, cell2.getContext())
|
|
4434
|
+
}
|
|
4435
|
+
) : flexRender(cell2.column.columnDef.cell, cell2.getContext()))
|
|
4342
4436
|
},
|
|
4343
4437
|
`cell-${virtualRow.key}-${virtualCol.key}`
|
|
4344
4438
|
);
|