@rufous/ui 0.2.96 → 0.2.98
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/dist/main.cjs +60 -44
- package/dist/main.js +60 -44
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -4435,7 +4435,6 @@ function DataGrid({
|
|
|
4435
4435
|
const [sortDirection, setSortDirection] = (0, import_react23.useState)(null);
|
|
4436
4436
|
const [filterText, setFilterText] = (0, import_react23.useState)("");
|
|
4437
4437
|
const [currentPage, setCurrentPage] = (0, import_react23.useState)(1);
|
|
4438
|
-
const [columnFilters, setColumnFilters] = (0, import_react23.useState)({});
|
|
4439
4438
|
const [resizingColumn, setResizingColumn] = (0, import_react23.useState)(null);
|
|
4440
4439
|
const [startX, setStartX] = (0, import_react23.useState)(0);
|
|
4441
4440
|
const [startWidth, setStartWidth] = (0, import_react23.useState)(0);
|
|
@@ -4530,46 +4529,32 @@ function DataGrid({
|
|
|
4530
4529
|
});
|
|
4531
4530
|
setActiveMenu(null);
|
|
4532
4531
|
};
|
|
4532
|
+
const getDisplayValue = (item, col) => {
|
|
4533
|
+
const field = String(col.field);
|
|
4534
|
+
const raw = item[field];
|
|
4535
|
+
let val = col.valueGetter ? col.valueGetter({ value: raw, row: item, field }) : raw;
|
|
4536
|
+
if (col.valueFormatter) {
|
|
4537
|
+
val = col.valueFormatter({ value: val, row: item, field });
|
|
4538
|
+
}
|
|
4539
|
+
return val === null || val === void 0 ? "" : String(val);
|
|
4540
|
+
};
|
|
4533
4541
|
const filteredData = (0, import_react23.useMemo)(() => {
|
|
4534
4542
|
return data.filter((item) => {
|
|
4535
|
-
const matchesGlobal = !filterText ||
|
|
4536
|
-
(
|
|
4537
|
-
|
|
4543
|
+
const matchesGlobal = !filterText || resolvedColumns.some((col) => {
|
|
4544
|
+
if (col.hidden) return false;
|
|
4545
|
+
return getDisplayValue(item, col).toLowerCase().includes(filterText.toLowerCase());
|
|
4546
|
+
});
|
|
4538
4547
|
const evalFilter = (f) => {
|
|
4539
4548
|
if (!f.value && f.operator !== "is empty" && f.operator !== "is not empty") return true;
|
|
4540
4549
|
const col = resolvedColumns.find((c) => String(c.field) === f.column || String(c.key) === f.column);
|
|
4541
|
-
const
|
|
4542
|
-
|
|
4543
|
-
const itemNum = Number(rawVal);
|
|
4544
|
-
const filterNum = Number(f.value);
|
|
4545
|
-
switch (f.operator) {
|
|
4546
|
-
case "=":
|
|
4547
|
-
return itemNum === filterNum;
|
|
4548
|
-
case "!=":
|
|
4549
|
-
return itemNum !== filterNum;
|
|
4550
|
-
case ">":
|
|
4551
|
-
return itemNum > filterNum;
|
|
4552
|
-
case ">=":
|
|
4553
|
-
return itemNum >= filterNum;
|
|
4554
|
-
case "<":
|
|
4555
|
-
return itemNum < filterNum;
|
|
4556
|
-
case "<=":
|
|
4557
|
-
return itemNum <= filterNum;
|
|
4558
|
-
case "is empty":
|
|
4559
|
-
return rawVal === "" || rawVal === "undefined" || rawVal === "null";
|
|
4560
|
-
case "is not empty":
|
|
4561
|
-
return rawVal !== "" && rawVal !== "undefined" && rawVal !== "null";
|
|
4562
|
-
default:
|
|
4563
|
-
return true;
|
|
4564
|
-
}
|
|
4565
|
-
}
|
|
4550
|
+
const field = f.column;
|
|
4551
|
+
const raw = item[field];
|
|
4566
4552
|
if (col?.type === "date") {
|
|
4567
|
-
const
|
|
4568
|
-
const
|
|
4569
|
-
|
|
4570
|
-
if (f.operator === "is empty") return
|
|
4571
|
-
if (
|
|
4572
|
-
if (isEmpty) return false;
|
|
4553
|
+
const resolvedDate = col.valueGetter ? col.valueGetter({ value: raw, row: item, field }) : raw;
|
|
4554
|
+
const isEmpty2 = resolvedDate == null || resolvedDate === "" || resolvedDate === "undefined" || resolvedDate === "null";
|
|
4555
|
+
if (f.operator === "is empty") return isEmpty2;
|
|
4556
|
+
if (f.operator === "is not empty") return !isEmpty2;
|
|
4557
|
+
if (isEmpty2) return false;
|
|
4573
4558
|
const itemTs = new Date(resolvedDate);
|
|
4574
4559
|
itemTs.setHours(0, 0, 0, 0);
|
|
4575
4560
|
const filterTs = new Date(f.value);
|
|
@@ -4592,21 +4577,47 @@ function DataGrid({
|
|
|
4592
4577
|
return true;
|
|
4593
4578
|
}
|
|
4594
4579
|
}
|
|
4580
|
+
const displayVal = col ? getDisplayValue(item, col) : raw === null || raw === void 0 ? "" : String(raw);
|
|
4581
|
+
const isEmpty = displayVal === "" || displayVal === "undefined" || displayVal === "null";
|
|
4582
|
+
if (col?.type === "number") {
|
|
4583
|
+
const itemNum = Number(displayVal);
|
|
4584
|
+
const filterNum = Number(f.value);
|
|
4585
|
+
switch (f.operator) {
|
|
4586
|
+
case "=":
|
|
4587
|
+
return itemNum === filterNum;
|
|
4588
|
+
case "!=":
|
|
4589
|
+
return itemNum !== filterNum;
|
|
4590
|
+
case ">":
|
|
4591
|
+
return itemNum > filterNum;
|
|
4592
|
+
case ">=":
|
|
4593
|
+
return itemNum >= filterNum;
|
|
4594
|
+
case "<":
|
|
4595
|
+
return itemNum < filterNum;
|
|
4596
|
+
case "<=":
|
|
4597
|
+
return itemNum <= filterNum;
|
|
4598
|
+
case "is empty":
|
|
4599
|
+
return isEmpty;
|
|
4600
|
+
case "is not empty":
|
|
4601
|
+
return !isEmpty;
|
|
4602
|
+
default:
|
|
4603
|
+
return true;
|
|
4604
|
+
}
|
|
4605
|
+
}
|
|
4595
4606
|
if (col?.type === "status") {
|
|
4596
4607
|
switch (f.operator) {
|
|
4597
4608
|
case "is":
|
|
4598
|
-
return
|
|
4609
|
+
return displayVal === f.value;
|
|
4599
4610
|
case "is not":
|
|
4600
|
-
return
|
|
4611
|
+
return displayVal !== f.value;
|
|
4601
4612
|
case "is empty":
|
|
4602
|
-
return
|
|
4613
|
+
return isEmpty;
|
|
4603
4614
|
case "is not empty":
|
|
4604
|
-
return
|
|
4615
|
+
return !isEmpty;
|
|
4605
4616
|
default:
|
|
4606
4617
|
return true;
|
|
4607
4618
|
}
|
|
4608
4619
|
}
|
|
4609
|
-
const itemVal =
|
|
4620
|
+
const itemVal = displayVal.toLowerCase();
|
|
4610
4621
|
const val = f.value.toLowerCase();
|
|
4611
4622
|
switch (f.operator) {
|
|
4612
4623
|
case "contains":
|
|
@@ -4640,7 +4651,7 @@ function DataGrid({
|
|
|
4640
4651
|
}
|
|
4641
4652
|
return matchesGlobal && matchesAdvanced;
|
|
4642
4653
|
});
|
|
4643
|
-
}, [data, filterText, advancedFilters]);
|
|
4654
|
+
}, [data, filterText, advancedFilters, resolvedColumns]);
|
|
4644
4655
|
const sortedData = (0, import_react23.useMemo)(() => {
|
|
4645
4656
|
if (!sortField || !sortDirection) return filteredData;
|
|
4646
4657
|
const col = resolvedColumns.find((c) => c.field === sortField);
|
|
@@ -4666,9 +4677,14 @@ function DataGrid({
|
|
|
4666
4677
|
const headers = exportableCols.map((c) => c.headerName).join(",");
|
|
4667
4678
|
const rows = sortedData.map(
|
|
4668
4679
|
(item) => exportableCols.map((c) => {
|
|
4669
|
-
const
|
|
4670
|
-
const
|
|
4671
|
-
|
|
4680
|
+
const field = String(c.field);
|
|
4681
|
+
const raw = item[field];
|
|
4682
|
+
let val = c.valueGetter ? c.valueGetter({ value: raw, row: item, field }) : raw;
|
|
4683
|
+
if (c.valueFormatter) {
|
|
4684
|
+
val = c.valueFormatter({ value: val, row: item, field });
|
|
4685
|
+
}
|
|
4686
|
+
const str = val === null || val === void 0 ? "" : String(val).replace(/"/g, '""');
|
|
4687
|
+
return `"${str}"`;
|
|
4672
4688
|
}).join(",")
|
|
4673
4689
|
);
|
|
4674
4690
|
const csv = [headers, ...rows].join("\n");
|
package/dist/main.js
CHANGED
|
@@ -4305,7 +4305,6 @@ function DataGrid({
|
|
|
4305
4305
|
const [sortDirection, setSortDirection] = useState9(null);
|
|
4306
4306
|
const [filterText, setFilterText] = useState9("");
|
|
4307
4307
|
const [currentPage, setCurrentPage] = useState9(1);
|
|
4308
|
-
const [columnFilters, setColumnFilters] = useState9({});
|
|
4309
4308
|
const [resizingColumn, setResizingColumn] = useState9(null);
|
|
4310
4309
|
const [startX, setStartX] = useState9(0);
|
|
4311
4310
|
const [startWidth, setStartWidth] = useState9(0);
|
|
@@ -4400,46 +4399,32 @@ function DataGrid({
|
|
|
4400
4399
|
});
|
|
4401
4400
|
setActiveMenu(null);
|
|
4402
4401
|
};
|
|
4402
|
+
const getDisplayValue = (item, col) => {
|
|
4403
|
+
const field = String(col.field);
|
|
4404
|
+
const raw = item[field];
|
|
4405
|
+
let val = col.valueGetter ? col.valueGetter({ value: raw, row: item, field }) : raw;
|
|
4406
|
+
if (col.valueFormatter) {
|
|
4407
|
+
val = col.valueFormatter({ value: val, row: item, field });
|
|
4408
|
+
}
|
|
4409
|
+
return val === null || val === void 0 ? "" : String(val);
|
|
4410
|
+
};
|
|
4403
4411
|
const filteredData = useMemo2(() => {
|
|
4404
4412
|
return data.filter((item) => {
|
|
4405
|
-
const matchesGlobal = !filterText ||
|
|
4406
|
-
(
|
|
4407
|
-
|
|
4413
|
+
const matchesGlobal = !filterText || resolvedColumns.some((col) => {
|
|
4414
|
+
if (col.hidden) return false;
|
|
4415
|
+
return getDisplayValue(item, col).toLowerCase().includes(filterText.toLowerCase());
|
|
4416
|
+
});
|
|
4408
4417
|
const evalFilter = (f) => {
|
|
4409
4418
|
if (!f.value && f.operator !== "is empty" && f.operator !== "is not empty") return true;
|
|
4410
4419
|
const col = resolvedColumns.find((c) => String(c.field) === f.column || String(c.key) === f.column);
|
|
4411
|
-
const
|
|
4412
|
-
|
|
4413
|
-
const itemNum = Number(rawVal);
|
|
4414
|
-
const filterNum = Number(f.value);
|
|
4415
|
-
switch (f.operator) {
|
|
4416
|
-
case "=":
|
|
4417
|
-
return itemNum === filterNum;
|
|
4418
|
-
case "!=":
|
|
4419
|
-
return itemNum !== filterNum;
|
|
4420
|
-
case ">":
|
|
4421
|
-
return itemNum > filterNum;
|
|
4422
|
-
case ">=":
|
|
4423
|
-
return itemNum >= filterNum;
|
|
4424
|
-
case "<":
|
|
4425
|
-
return itemNum < filterNum;
|
|
4426
|
-
case "<=":
|
|
4427
|
-
return itemNum <= filterNum;
|
|
4428
|
-
case "is empty":
|
|
4429
|
-
return rawVal === "" || rawVal === "undefined" || rawVal === "null";
|
|
4430
|
-
case "is not empty":
|
|
4431
|
-
return rawVal !== "" && rawVal !== "undefined" && rawVal !== "null";
|
|
4432
|
-
default:
|
|
4433
|
-
return true;
|
|
4434
|
-
}
|
|
4435
|
-
}
|
|
4420
|
+
const field = f.column;
|
|
4421
|
+
const raw = item[field];
|
|
4436
4422
|
if (col?.type === "date") {
|
|
4437
|
-
const
|
|
4438
|
-
const
|
|
4439
|
-
|
|
4440
|
-
if (f.operator === "is empty") return
|
|
4441
|
-
if (
|
|
4442
|
-
if (isEmpty) return false;
|
|
4423
|
+
const resolvedDate = col.valueGetter ? col.valueGetter({ value: raw, row: item, field }) : raw;
|
|
4424
|
+
const isEmpty2 = resolvedDate == null || resolvedDate === "" || resolvedDate === "undefined" || resolvedDate === "null";
|
|
4425
|
+
if (f.operator === "is empty") return isEmpty2;
|
|
4426
|
+
if (f.operator === "is not empty") return !isEmpty2;
|
|
4427
|
+
if (isEmpty2) return false;
|
|
4443
4428
|
const itemTs = new Date(resolvedDate);
|
|
4444
4429
|
itemTs.setHours(0, 0, 0, 0);
|
|
4445
4430
|
const filterTs = new Date(f.value);
|
|
@@ -4462,21 +4447,47 @@ function DataGrid({
|
|
|
4462
4447
|
return true;
|
|
4463
4448
|
}
|
|
4464
4449
|
}
|
|
4450
|
+
const displayVal = col ? getDisplayValue(item, col) : raw === null || raw === void 0 ? "" : String(raw);
|
|
4451
|
+
const isEmpty = displayVal === "" || displayVal === "undefined" || displayVal === "null";
|
|
4452
|
+
if (col?.type === "number") {
|
|
4453
|
+
const itemNum = Number(displayVal);
|
|
4454
|
+
const filterNum = Number(f.value);
|
|
4455
|
+
switch (f.operator) {
|
|
4456
|
+
case "=":
|
|
4457
|
+
return itemNum === filterNum;
|
|
4458
|
+
case "!=":
|
|
4459
|
+
return itemNum !== filterNum;
|
|
4460
|
+
case ">":
|
|
4461
|
+
return itemNum > filterNum;
|
|
4462
|
+
case ">=":
|
|
4463
|
+
return itemNum >= filterNum;
|
|
4464
|
+
case "<":
|
|
4465
|
+
return itemNum < filterNum;
|
|
4466
|
+
case "<=":
|
|
4467
|
+
return itemNum <= filterNum;
|
|
4468
|
+
case "is empty":
|
|
4469
|
+
return isEmpty;
|
|
4470
|
+
case "is not empty":
|
|
4471
|
+
return !isEmpty;
|
|
4472
|
+
default:
|
|
4473
|
+
return true;
|
|
4474
|
+
}
|
|
4475
|
+
}
|
|
4465
4476
|
if (col?.type === "status") {
|
|
4466
4477
|
switch (f.operator) {
|
|
4467
4478
|
case "is":
|
|
4468
|
-
return
|
|
4479
|
+
return displayVal === f.value;
|
|
4469
4480
|
case "is not":
|
|
4470
|
-
return
|
|
4481
|
+
return displayVal !== f.value;
|
|
4471
4482
|
case "is empty":
|
|
4472
|
-
return
|
|
4483
|
+
return isEmpty;
|
|
4473
4484
|
case "is not empty":
|
|
4474
|
-
return
|
|
4485
|
+
return !isEmpty;
|
|
4475
4486
|
default:
|
|
4476
4487
|
return true;
|
|
4477
4488
|
}
|
|
4478
4489
|
}
|
|
4479
|
-
const itemVal =
|
|
4490
|
+
const itemVal = displayVal.toLowerCase();
|
|
4480
4491
|
const val = f.value.toLowerCase();
|
|
4481
4492
|
switch (f.operator) {
|
|
4482
4493
|
case "contains":
|
|
@@ -4510,7 +4521,7 @@ function DataGrid({
|
|
|
4510
4521
|
}
|
|
4511
4522
|
return matchesGlobal && matchesAdvanced;
|
|
4512
4523
|
});
|
|
4513
|
-
}, [data, filterText, advancedFilters]);
|
|
4524
|
+
}, [data, filterText, advancedFilters, resolvedColumns]);
|
|
4514
4525
|
const sortedData = useMemo2(() => {
|
|
4515
4526
|
if (!sortField || !sortDirection) return filteredData;
|
|
4516
4527
|
const col = resolvedColumns.find((c) => c.field === sortField);
|
|
@@ -4536,9 +4547,14 @@ function DataGrid({
|
|
|
4536
4547
|
const headers = exportableCols.map((c) => c.headerName).join(",");
|
|
4537
4548
|
const rows = sortedData.map(
|
|
4538
4549
|
(item) => exportableCols.map((c) => {
|
|
4539
|
-
const
|
|
4540
|
-
const
|
|
4541
|
-
|
|
4550
|
+
const field = String(c.field);
|
|
4551
|
+
const raw = item[field];
|
|
4552
|
+
let val = c.valueGetter ? c.valueGetter({ value: raw, row: item, field }) : raw;
|
|
4553
|
+
if (c.valueFormatter) {
|
|
4554
|
+
val = c.valueFormatter({ value: val, row: item, field });
|
|
4555
|
+
}
|
|
4556
|
+
const str = val === null || val === void 0 ? "" : String(val).replace(/"/g, '""');
|
|
4557
|
+
return `"${str}"`;
|
|
4542
4558
|
}).join(",")
|
|
4543
4559
|
);
|
|
4544
4560
|
const csv = [headers, ...rows].join("\n");
|