pixelize-design-library 2.3.1-beta.9 → 2.3.3
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/.cursor/TASK-SETUP.md +43 -0
- package/.cursor/agents/be-impl.md +37 -0
- package/.cursor/agents/fe-impl.md +39 -0
- package/.cursor/agents/task-plan.md +56 -0
- package/.cursor/agents/test-create.md +31 -0
- package/.cursor/agents/test-exec.md +26 -0
- package/.cursor/hooks/task-hint.env +1 -0
- package/.cursor/hooks/task-skill-nudge.sh +71 -0
- package/.cursor/hooks/task-slash-guard.sh +31 -0
- package/.cursor/hooks.json +13 -0
- package/.cursor/modules/account-management/MODULE.md +16 -0
- package/.cursor/modules/buttons/MODULE.md +13 -0
- package/.cursor/modules/cards/MODULE.md +13 -0
- package/.cursor/modules/charts/MODULE.md +13 -0
- package/.cursor/modules/common/MODULE.md +13 -0
- package/.cursor/modules/contact-auth/MODULE.md +13 -0
- package/.cursor/modules/data-display/MODULE.md +18 -0
- package/.cursor/modules/feedback/MODULE.md +14 -0
- package/.cursor/modules/form/MODULE.md +13 -0
- package/.cursor/modules/inputs-basic/MODULE.md +13 -0
- package/.cursor/modules/inputs-date-file/MODULE.md +19 -0
- package/.cursor/modules/inputs-select/MODULE.md +15 -0
- package/.cursor/modules/inputs-toggle/MODULE.md +13 -0
- package/.cursor/modules/kanban/MODULE.md +14 -0
- package/.cursor/modules/layout-navigation/MODULE.md +14 -0
- package/.cursor/modules/overlays/MODULE.md +13 -0
- package/.cursor/modules/playground/MODULE.md +15 -0
- package/.cursor/modules/table/MODULE.md +15 -0
- package/.cursor/modules/theme/MODULE.md +15 -0
- package/.cursor/modules/types-exports/MODULE.md +17 -0
- package/.cursor/modules/utility-ui/MODULE.md +15 -0
- package/.cursor/modules/utils-hooks/MODULE.md +13 -0
- package/.cursor/pixelize-task-statusline.sh +64 -0
- package/.cursor/plans/blocked/.gitkeep +0 -0
- package/.cursor/plans/current.md +35 -0
- package/.cursor/plans/done/.gitkeep +0 -0
- package/.cursor/rules +31 -0
- package/.cursor/skills/task/SKILL.md +167 -0
- package/CLAUDE.md +122 -0
- package/dist/Components/Card/PaymentCard/PaymentCard.d.ts +1 -1
- package/dist/Components/Card/PaymentCard/PaymentCard.js +3 -3
- package/dist/Components/Card/PaymentCard/PaymentCardProps.d.ts +1 -0
- package/dist/Components/CopyButton/CopyButton.d.ts +22 -0
- package/dist/Components/CopyButton/CopyButton.js +126 -0
- package/dist/Components/CustomModulesTable/CustomModulesTable.d.ts +4 -0
- package/dist/Components/CustomModulesTable/CustomModulesTable.js +182 -0
- package/dist/Components/CustomModulesTable/CustomModulesTable.test.d.ts +1 -0
- package/dist/Components/CustomModulesTable/CustomModulesTable.test.js +84 -0
- package/dist/Components/CustomModulesTable/CustomModulesTableProps.d.ts +54 -0
- package/dist/Components/CustomModulesTable/CustomModulesTableProps.js +2 -0
- package/dist/Components/CustomModulesTable/DeleteModuleModal.d.ts +4 -0
- package/dist/Components/CustomModulesTable/DeleteModuleModal.js +33 -0
- package/dist/Components/CustomModulesTable/EditModuleModal.d.ts +4 -0
- package/dist/Components/CustomModulesTable/EditModuleModal.js +63 -0
- package/dist/Components/Dropdown/DropDown.js +110 -28
- package/dist/Components/Dropdown/Dropdown.test.d.ts +1 -0
- package/dist/Components/Dropdown/Dropdown.test.js +102 -0
- package/dist/Components/Dropdown/DropdownProps.d.ts +4 -1
- package/dist/Components/EmptyState/EmptyState.d.ts +4 -0
- package/dist/Components/EmptyState/EmptyState.js +65 -0
- package/dist/Components/EmptyState/EmptyStateProps.d.ts +28 -0
- package/dist/Components/EmptyState/EmptyStateProps.js +2 -0
- package/dist/Components/FieldSelectModal/FieldSelectModal.d.ts +26 -0
- package/dist/Components/FieldSelectModal/FieldSelectModal.js +107 -0
- package/dist/Components/FilePreview/FilePreview.d.ts +6 -0
- package/dist/Components/FilePreview/FilePreview.js +190 -0
- package/dist/Components/FilePreview/FilePreviewProps.d.ts +26 -0
- package/dist/Components/FilePreview/FilePreviewProps.js +2 -0
- package/dist/Components/LazyWrapper/LazyWrapper.d.ts +10 -0
- package/dist/Components/LazyWrapper/LazyWrapper.js +50 -0
- package/dist/Components/MoreItems/MoreItems.d.ts +4 -0
- package/dist/Components/MoreItems/MoreItems.js +35 -0
- package/dist/Components/MoreItems/MoreItemsProps.d.ts +29 -0
- package/dist/Components/MoreItems/MoreItemsProps.js +2 -0
- package/dist/Components/OrgSwitcher/OrgSwitcher.d.ts +4 -0
- package/dist/Components/OrgSwitcher/OrgSwitcher.js +121 -0
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.d.ts +41 -0
- package/dist/Components/OrgSwitcher/OrgSwitcherProps.js +25 -0
- package/dist/Components/OrganizationDetails/CreateOrgModal.d.ts +4 -0
- package/dist/Components/OrganizationDetails/CreateOrgModal.js +122 -0
- package/dist/Components/OrganizationDetails/DeleteOrgModal.d.ts +4 -0
- package/dist/Components/OrganizationDetails/DeleteOrgModal.js +29 -0
- package/dist/Components/OrganizationDetails/OrganizationDetails.d.ts +4 -0
- package/dist/Components/OrganizationDetails/OrganizationDetails.js +264 -0
- package/dist/Components/OrganizationDetails/OrganizationDetails.test.d.ts +1 -0
- package/dist/Components/OrganizationDetails/OrganizationDetails.test.js +122 -0
- package/dist/Components/OrganizationDetails/OrganizationDetailsProps.d.ts +88 -0
- package/dist/Components/OrganizationDetails/OrganizationDetailsProps.js +2 -0
- package/dist/Components/PdfViewer/PdfViewer.d.ts +15 -0
- package/dist/Components/PdfViewer/PdfViewer.js +29 -0
- package/dist/Components/RolesPermission/DeleteRoleModal.d.ts +4 -0
- package/dist/Components/RolesPermission/DeleteRoleModal.js +29 -0
- package/dist/Components/RolesPermission/RolesPermission.d.ts +4 -0
- package/dist/Components/RolesPermission/RolesPermission.js +243 -0
- package/dist/Components/RolesPermission/RolesPermission.test.d.ts +1 -0
- package/dist/Components/RolesPermission/RolesPermission.test.js +150 -0
- package/dist/Components/RolesPermission/RolesPermissionProps.d.ts +117 -0
- package/dist/Components/RolesPermission/RolesPermissionProps.js +2 -0
- package/dist/Components/ScrollToTop/ScrollToTop.d.ts +19 -0
- package/dist/Components/ScrollToTop/ScrollToTop.js +104 -0
- package/dist/Components/SearchSelect/SearchSelect.dropdownPosition.test.d.ts +1 -0
- package/dist/Components/SearchSelect/SearchSelect.dropdownPosition.test.js +195 -0
- package/dist/Components/SearchSelect/SearchSelect.insideSelect.test.d.ts +1 -0
- package/dist/Components/SearchSelect/SearchSelect.insideSelect.test.js +274 -0
- package/dist/Components/SearchSelect/SearchSelect.js +133 -39
- package/dist/Components/SearchSelect/SearchSelectProps.d.ts +2 -0
- package/dist/Components/SideBar/components/OtherApps.test.js +3 -2
- package/dist/Components/SignInActivityTable/SignInActivityTable.d.ts +4 -0
- package/dist/Components/SignInActivityTable/SignInActivityTable.js +95 -0
- package/dist/Components/SignInActivityTable/SignInActivityTable.test.d.ts +1 -0
- package/dist/Components/SignInActivityTable/SignInActivityTable.test.js +63 -0
- package/dist/Components/SignInActivityTable/SignInActivityTableProps.d.ts +21 -0
- package/dist/Components/SignInActivityTable/SignInActivityTableProps.js +2 -0
- package/dist/Components/StageProgress/StageItem.d.ts +4 -0
- package/dist/Components/StageProgress/StageItem.js +137 -0
- package/dist/Components/StageProgress/StageProgress.d.ts +4 -0
- package/dist/Components/StageProgress/StageProgress.js +59 -0
- package/dist/Components/StageProgress/StageProgressProps.d.ts +85 -0
- package/dist/Components/StageProgress/StageProgressProps.js +27 -0
- package/dist/Components/StageProgress/StepperStage.d.ts +4 -0
- package/dist/Components/StageProgress/StepperStage.js +78 -0
- package/dist/Components/Table/Table.js +66 -45
- package/dist/Components/Table/TableProps.d.ts +4 -2
- package/dist/Components/Table/components/Pagination.js +1 -1
- package/dist/Components/Table/components/TableBody.js +15 -12
- package/dist/Components/Table/components/TableBody.virtualize.test.js +13 -3
- package/dist/Components/Table/components/TableHeader.d.ts +1 -1
- package/dist/Components/Table/components/TableHeader.js +9 -9
- package/dist/Components/Table/hooks/useTable.d.ts +1 -0
- package/dist/Components/Table/hooks/useTable.js +21 -8
- package/dist/Components/Table/settings/ManageColumns.test.js +1 -0
- package/dist/Components/Tag/Tag.d.ts +3 -11
- package/dist/Components/Tag/Tag.js +10 -2
- package/dist/Components/Tag/Tag.styles.d.ts +2 -2
- package/dist/Components/Tag/Tag.styles.js +58 -33
- package/dist/Components/Tag/Tag.test.d.ts +1 -0
- package/dist/Components/Tag/Tag.test.js +68 -0
- package/dist/Components/Tag/TagProps.d.ts +13 -0
- package/dist/Components/Tag/TagProps.js +2 -0
- package/dist/Components/UpgradeButton/UpgradeButton.d.ts +4 -0
- package/dist/Components/UpgradeButton/UpgradeButton.js +73 -0
- package/dist/Components/UpgradeButton/UpgradeButtonProps.d.ts +43 -0
- package/dist/Components/UpgradeButton/UpgradeButtonProps.js +2 -0
- package/dist/Components/UserDetails/AddUserModal.d.ts +4 -0
- package/dist/Components/UserDetails/AddUserModal.js +218 -0
- package/dist/Components/UserDetails/ChangeRoleModal.d.ts +4 -0
- package/dist/Components/UserDetails/ChangeRoleModal.js +150 -0
- package/dist/Components/UserDetails/DeactivateConfirmModal.d.ts +4 -0
- package/dist/Components/UserDetails/DeactivateConfirmModal.js +34 -0
- package/dist/Components/UserDetails/UserDetails.d.ts +4 -0
- package/dist/Components/UserDetails/UserDetails.js +263 -0
- package/dist/Components/UserDetails/UserDetails.test.d.ts +1 -0
- package/dist/Components/UserDetails/UserDetails.test.js +129 -0
- package/dist/Components/UserDetails/UserDetailsProps.d.ts +151 -0
- package/dist/Components/UserDetails/UserDetailsProps.js +2 -0
- package/dist/Theme/componentStyles.d.ts +1 -1
- package/dist/Theme/index.d.ts +4 -4
- package/dist/Theme/index.js +4 -4
- package/dist/index.d.ts +23 -1
- package/dist/index.js +37 -2
- package/package.json +2 -2
- package/.claude/settings.local.json +0 -44
- package/coverage/clover.xml +0 -638
- package/coverage/coverage-final.json +0 -20
- package/coverage/lcov-report/Table/CompactSelect.tsx.html +0 -379
- package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +0 -514
- package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +0 -373
- package/coverage/lcov-report/Table/Components/Pagination.tsx.html +0 -574
- package/coverage/lcov-report/Table/Components/TableActions.tsx.html +0 -574
- package/coverage/lcov-report/Table/Components/TableBody.tsx.html +0 -1027
- package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +0 -397
- package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +0 -1060
- package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +0 -361
- package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +0 -337
- package/coverage/lcov-report/Table/Components/index.html +0 -266
- package/coverage/lcov-report/Table/Components/useDebounce.ts.html +0 -178
- package/coverage/lcov-report/Table/Components/useTable.ts.html +0 -778
- package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +0 -1810
- package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +0 -178
- package/coverage/lcov-report/Table/Table.tsx.html +0 -1567
- package/coverage/lcov-report/Table/TableProps.tsx.html +0 -658
- package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +0 -619
- package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +0 -229
- package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +0 -532
- package/coverage/lcov-report/Table/TableSettings/index.html +0 -146
- package/coverage/lcov-report/Table/TableToDo.tsx.html +0 -973
- package/coverage/lcov-report/Table/TextOperationControls.tsx.html +0 -271
- package/coverage/lcov-report/Table/filterTypes.ts.html +0 -97
- package/coverage/lcov-report/Table/index.html +0 -176
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -146
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -210
- package/coverage/lcov.info +0 -1836
- package/dist/Assets/defaultLogo.tsx +0 -31
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var react_1 = __importDefault(require("react"));
|
|
18
|
+
var react_2 = require("@chakra-ui/react");
|
|
19
|
+
var StageItem_1 = __importDefault(require("./StageItem"));
|
|
20
|
+
var StepperStage_1 = __importDefault(require("./StepperStage"));
|
|
21
|
+
var scrollSx = {
|
|
22
|
+
"&::-webkit-scrollbar": { height: "4px" },
|
|
23
|
+
"&::-webkit-scrollbar-thumb": {
|
|
24
|
+
borderRadius: "10px",
|
|
25
|
+
backgroundColor: "rgba(0,0,0,0.25)",
|
|
26
|
+
},
|
|
27
|
+
"&::-webkit-scrollbar-track": { background: "transparent" },
|
|
28
|
+
};
|
|
29
|
+
// Gap between items per variant (chevron interlocks via negative margin).
|
|
30
|
+
var gapFor = {
|
|
31
|
+
chevron: "0",
|
|
32
|
+
bar: "4px",
|
|
33
|
+
pills: "8px",
|
|
34
|
+
stepper: "0",
|
|
35
|
+
};
|
|
36
|
+
var StageProgress = function (_a) {
|
|
37
|
+
var stages = _a.stages, _b = _a.variant, variant = _b === void 0 ? "chevron" : _b, value = _a.value, onChange = _a.onChange, _c = _a.size, size = _c === void 0 ? "md" : _c, _d = _a.colorScheme, colorScheme = _d === void 0 ? "primary" : _d, _e = _a.markCompleted, markCompleted = _e === void 0 ? true : _e, _f = _a.showCheck, showCheck = _f === void 0 ? false : _f, _g = _a.isReadOnly, isReadOnly = _g === void 0 ? false : _g, _h = _a.isLoading, isLoading = _h === void 0 ? false : _h, minStageWidth = _a.minStageWidth, _j = _a.scrollActiveIntoView, scrollActiveIntoView = _j === void 0 ? true : _j, _k = _a.tooltipThreshold, tooltipThreshold = _k === void 0 ? 20 : _k;
|
|
38
|
+
if (isLoading) {
|
|
39
|
+
var skeletonH_1 = size === "sm" ? "28px" : size === "lg" ? "44px" : "36px";
|
|
40
|
+
return (react_1.default.createElement(react_2.Flex, { gap: "6px", width: "100%", overflowX: "hidden", p: "0.1rem" }, Array.from({ length: 6 }).map(function (_, i) { return (react_1.default.createElement(react_2.Skeleton, { key: i, height: skeletonH_1, minWidth: minStageWidth || "160px", borderRadius: "6px", flexShrink: 0 })); })));
|
|
41
|
+
}
|
|
42
|
+
var activeIndex = stages.findIndex(function (st) { return st.id === value; });
|
|
43
|
+
var stateFor = function (index) {
|
|
44
|
+
if (index === activeIndex)
|
|
45
|
+
return "active";
|
|
46
|
+
if (markCompleted && activeIndex > -1 && index < activeIndex)
|
|
47
|
+
return "completed";
|
|
48
|
+
return "upcoming";
|
|
49
|
+
};
|
|
50
|
+
var total = stages.length;
|
|
51
|
+
return (react_1.default.createElement(react_2.Box, { display: "flex", alignItems: variant === "stepper" ? "flex-start" : "stretch", gap: gapFor[variant], overflowX: "hidden", p: "0.1rem", sx: __assign({ "&:hover": { overflowX: "auto" } }, scrollSx) }, stages.map(function (stage, index) {
|
|
52
|
+
var state = stateFor(index);
|
|
53
|
+
if (variant === "stepper") {
|
|
54
|
+
return (react_1.default.createElement(StepperStage_1.default, { key: stage.id, label: stage.label, number: index + 1, state: state, size: size, colorScheme: colorScheme, isReadOnly: isReadOnly, disabled: stage.disabled, showCheck: showCheck, isFirst: index === 0, isLast: index === total - 1, leftDone: activeIndex > -1 && index <= activeIndex, rightDone: activeIndex > -1 && index < activeIndex, scrollIntoViewWhenActive: scrollActiveIntoView, onClick: function () { return onChange === null || onChange === void 0 ? void 0 : onChange(stage.id, stage, index); } }));
|
|
55
|
+
}
|
|
56
|
+
return (react_1.default.createElement(StageItem_1.default, { key: stage.id, label: stage.label, index: index, total: total, state: state, variant: variant, size: size, colorScheme: colorScheme, isReadOnly: isReadOnly, disabled: stage.disabled, showCheck: showCheck, minWidth: minStageWidth, scrollIntoViewWhenActive: scrollActiveIntoView, tooltipThreshold: tooltipThreshold, onClick: function () { return onChange === null || onChange === void 0 ? void 0 : onChange(stage.id, stage, index); } }));
|
|
57
|
+
})));
|
|
58
|
+
};
|
|
59
|
+
exports.default = StageProgress;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { CustomThemeProps } from "../../Theme/themeProps";
|
|
2
|
+
export type StageSize = "sm" | "md" | "lg";
|
|
3
|
+
export type StageColorScheme = "primary" | "secondary" | "tertiary" | "success" | "error" | "warning" | "info";
|
|
4
|
+
export type StageState = "completed" | "active" | "upcoming";
|
|
5
|
+
/** Visual style of the tracker. */
|
|
6
|
+
export type StageVariant = "chevron" | "bar" | "pills" | "stepper";
|
|
7
|
+
export interface Stage {
|
|
8
|
+
id: string | number;
|
|
9
|
+
label: string;
|
|
10
|
+
/** Disable selecting this stage individually. */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface StageProgressProps {
|
|
14
|
+
/** Ordered list of pipeline stages. */
|
|
15
|
+
stages: Stage[];
|
|
16
|
+
/** Visual style. Default "chevron". */
|
|
17
|
+
variant?: StageVariant;
|
|
18
|
+
/** id of the currently active stage. */
|
|
19
|
+
value?: string | number;
|
|
20
|
+
/** Fired when a stage is clicked (ignored when isReadOnly). */
|
|
21
|
+
onChange?: (id: string | number, stage: Stage, index: number) => void;
|
|
22
|
+
size?: StageSize;
|
|
23
|
+
colorScheme?: StageColorScheme;
|
|
24
|
+
/** Render stages before the active one in a distinct "done" style. Default true. */
|
|
25
|
+
markCompleted?: boolean;
|
|
26
|
+
/** Show a check icon on completed stages. Default false. */
|
|
27
|
+
showCheck?: boolean;
|
|
28
|
+
/** Render as a non-interactive indicator. */
|
|
29
|
+
isReadOnly?: boolean;
|
|
30
|
+
/** Show the loading skeleton row instead of stages. */
|
|
31
|
+
isLoading?: boolean;
|
|
32
|
+
/** Min width of each chevron. */
|
|
33
|
+
minStageWidth?: string;
|
|
34
|
+
/** Auto-scroll the active stage into view. Default true. */
|
|
35
|
+
scrollActiveIntoView?: boolean;
|
|
36
|
+
/** Label length beyond which a tooltip is shown. Default 20. */
|
|
37
|
+
tooltipThreshold?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface StageItemProps {
|
|
40
|
+
label: string;
|
|
41
|
+
index: number;
|
|
42
|
+
total: number;
|
|
43
|
+
state: StageState;
|
|
44
|
+
/** "chevron" | "bar" | "pills" (stepper has its own renderer). */
|
|
45
|
+
variant?: Exclude<StageVariant, "stepper">;
|
|
46
|
+
size?: StageSize;
|
|
47
|
+
colorScheme?: StageColorScheme;
|
|
48
|
+
onClick?: () => void;
|
|
49
|
+
isReadOnly?: boolean;
|
|
50
|
+
disabled?: boolean;
|
|
51
|
+
showCheck?: boolean;
|
|
52
|
+
minWidth?: string;
|
|
53
|
+
scrollIntoViewWhenActive?: boolean;
|
|
54
|
+
tooltipThreshold?: number;
|
|
55
|
+
}
|
|
56
|
+
export interface StepperStageProps {
|
|
57
|
+
label: string;
|
|
58
|
+
/** 1-based step number shown inside the circle. */
|
|
59
|
+
number: number;
|
|
60
|
+
state: StageState;
|
|
61
|
+
size?: StageSize;
|
|
62
|
+
colorScheme?: StageColorScheme;
|
|
63
|
+
onClick?: () => void;
|
|
64
|
+
isReadOnly?: boolean;
|
|
65
|
+
disabled?: boolean;
|
|
66
|
+
showCheck?: boolean;
|
|
67
|
+
isFirst: boolean;
|
|
68
|
+
isLast: boolean;
|
|
69
|
+
/** Connector entering this node is part of a completed segment. */
|
|
70
|
+
leftDone: boolean;
|
|
71
|
+
/** Connector leaving this node is part of a completed segment. */
|
|
72
|
+
rightDone: boolean;
|
|
73
|
+
scrollIntoViewWhenActive?: boolean;
|
|
74
|
+
}
|
|
75
|
+
export interface StagePalette {
|
|
76
|
+
soft: string;
|
|
77
|
+
softText: string;
|
|
78
|
+
strong: string;
|
|
79
|
+
onStrong: string;
|
|
80
|
+
hover: string;
|
|
81
|
+
muted: string;
|
|
82
|
+
mutedText: string;
|
|
83
|
+
}
|
|
84
|
+
/** Resolve a chevron palette for a given color scheme from the theme. */
|
|
85
|
+
export declare const resolveStagePalette: (theme: CustomThemeProps, colorScheme?: StageColorScheme) => StagePalette;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveStagePalette = void 0;
|
|
4
|
+
var SEMANTIC = ["success", "error", "warning", "info"];
|
|
5
|
+
/** Resolve a chevron palette for a given color scheme from the theme. */
|
|
6
|
+
var resolveStagePalette = function (theme, colorScheme) {
|
|
7
|
+
var _a;
|
|
8
|
+
if (colorScheme === void 0) { colorScheme = "primary"; }
|
|
9
|
+
var colors = theme.colors;
|
|
10
|
+
var scale = SEMANTIC.includes(colorScheme)
|
|
11
|
+
? theme.colors.semantic[colorScheme]
|
|
12
|
+
: colors[colorScheme];
|
|
13
|
+
var gray = (_a = colors.gray) !== null && _a !== void 0 ? _a : {};
|
|
14
|
+
var get = function (s, k, fb) {
|
|
15
|
+
return (s && s[k]) || fb;
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
soft: get(scale, 100, "#E6F0FF"),
|
|
19
|
+
softText: get(scale, 700, "#1D4ED8"),
|
|
20
|
+
strong: get(scale, 500, "#3B82F6"),
|
|
21
|
+
onStrong: theme.colors.white || "#FFFFFF",
|
|
22
|
+
hover: get(scale, 600, "#2563EB"),
|
|
23
|
+
muted: get(gray, 100, "#F1F5F9"),
|
|
24
|
+
mutedText: get(gray, 500, "#64748B"),
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
exports.resolveStagePalette = resolveStagePalette;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
var react_1 = __importStar(require("react"));
|
|
37
|
+
var react_2 = require("@chakra-ui/react");
|
|
38
|
+
var lucide_react_1 = require("lucide-react");
|
|
39
|
+
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
40
|
+
var StageProgressProps_1 = require("./StageProgressProps");
|
|
41
|
+
var sizeMap = {
|
|
42
|
+
sm: { circle: "24px", font: "0.7rem", label: "0.7rem", icon: 12, minW: "84px" },
|
|
43
|
+
md: { circle: "30px", font: "0.8rem", label: "0.8rem", icon: 14, minW: "104px" },
|
|
44
|
+
lg: { circle: "38px", font: "0.95rem", label: "0.9rem", icon: 16, minW: "124px" },
|
|
45
|
+
};
|
|
46
|
+
var StepperStage = function (_a) {
|
|
47
|
+
var label = _a.label, number = _a.number, state = _a.state, _b = _a.size, size = _b === void 0 ? "md" : _b, _c = _a.colorScheme, colorScheme = _c === void 0 ? "primary" : _c, onClick = _a.onClick, _d = _a.isReadOnly, isReadOnly = _d === void 0 ? false : _d, _e = _a.disabled, disabled = _e === void 0 ? false : _e, _f = _a.showCheck, showCheck = _f === void 0 ? true : _f, isFirst = _a.isFirst, isLast = _a.isLast, leftDone = _a.leftDone, rightDone = _a.rightDone, _g = _a.scrollIntoViewWhenActive, scrollIntoViewWhenActive = _g === void 0 ? true : _g;
|
|
48
|
+
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
49
|
+
var palette = (0, StageProgressProps_1.resolveStagePalette)(theme, colorScheme);
|
|
50
|
+
var ref = (0, react_1.useRef)(null);
|
|
51
|
+
var s = sizeMap[size];
|
|
52
|
+
var interactive = !isReadOnly && !disabled;
|
|
53
|
+
(0, react_1.useEffect)(function () {
|
|
54
|
+
if (state === "active" && scrollIntoViewWhenActive && ref.current) {
|
|
55
|
+
ref.current.scrollIntoView({
|
|
56
|
+
behavior: "smooth",
|
|
57
|
+
inline: "center",
|
|
58
|
+
block: "nearest",
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}, [state, scrollIntoViewWhenActive]);
|
|
62
|
+
var filled = state === "active" || state === "completed";
|
|
63
|
+
var circleBg = filled ? palette.strong : theme.colors.white;
|
|
64
|
+
var circleColor = filled ? palette.onStrong : palette.mutedText;
|
|
65
|
+
var circleBorder = filled ? palette.strong : palette.muted;
|
|
66
|
+
var line = function (done, hidden) { return (react_1.default.createElement(react_2.Box, { flex: "1", height: "2px", bg: done ? palette.strong : palette.muted, visibility: hidden ? "hidden" : "visible", transition: "background 0.18s ease" })); };
|
|
67
|
+
return (react_1.default.createElement(react_2.Flex, { ref: ref, direction: "column", align: "center", flex: "1", minWidth: s.minW, flexShrink: 0, role: "group", cursor: interactive ? "pointer" : "default", opacity: disabled ? 0.55 : 1, onClick: interactive ? onClick : undefined },
|
|
68
|
+
react_1.default.createElement(react_2.Flex, { align: "center", width: "100%" },
|
|
69
|
+
line(leftDone, isFirst),
|
|
70
|
+
react_1.default.createElement(react_2.Flex, { align: "center", justify: "center", boxSize: s.circle, borderRadius: "full", flexShrink: 0, bg: circleBg, color: circleColor, border: "2px solid", borderColor: circleBorder, fontSize: s.font, fontWeight: 600, transition: "all 0.18s ease", "aria-current": state === "active" ? "step" : undefined, sx: state === "active"
|
|
71
|
+
? { boxShadow: "0 0 0 4px ".concat(palette.soft) }
|
|
72
|
+
: undefined, _groupHover: interactive
|
|
73
|
+
? { borderColor: palette.strong, color: filled ? palette.onStrong : palette.strong }
|
|
74
|
+
: undefined }, showCheck && state === "completed" ? react_1.default.createElement(lucide_react_1.Check, { size: s.icon }) : number),
|
|
75
|
+
line(rightDone, isLast)),
|
|
76
|
+
react_1.default.createElement(react_2.Text, { mt: 2, px: 1, fontSize: s.label, fontWeight: state === "active" ? 600 : 500, color: state === "upcoming" ? palette.mutedText : palette.softText, textAlign: "center", noOfLines: 2, _groupHover: interactive ? { color: palette.strong } : undefined }, label)));
|
|
77
|
+
};
|
|
78
|
+
exports.default = StepperStage;
|
|
@@ -78,30 +78,30 @@ var Button_1 = __importDefault(require("../Button/Button"));
|
|
|
78
78
|
var lucide_react_1 = require("lucide-react");
|
|
79
79
|
var MotionBox = (0, framer_motion_1.motion)(react_2.Box);
|
|
80
80
|
function Table(_a) {
|
|
81
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12
|
|
82
|
-
var data = _a.data, columns = _a.columns, onSelection = _a.onSelection, isLoading = _a.isLoading,
|
|
81
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12;
|
|
82
|
+
var data = _a.data, columns = _a.columns, onSelection = _a.onSelection, isLoading = _a.isLoading, _13 = _a.isCheckbox, isCheckbox = _13 === void 0 ? false : _13, headerBgColor = _a.headerBgColor, freezedBgColor = _a.freezedBgColor, headerTextColor = _a.headerTextColor, freezedTextColor = _a.freezedTextColor, tableBorderColor = _a.tableBorderColor, _14 = _a.noBorders, noBorders = _14 === void 0 ? false : _14, _15 = _a.isPagination, isPagination = _15 === void 0 ? true : _15, onRowClick = _a.onRowClick, selections = _a.selections, _16 = _a.isActionFreeze, isActionFreeze = _16 === void 0 ? true : _16, _17 = _a.preferences, preferences = _17 === void 0 ? {
|
|
83
83
|
url: "",
|
|
84
84
|
token: "",
|
|
85
85
|
key: "",
|
|
86
86
|
name: "",
|
|
87
87
|
page: "",
|
|
88
88
|
orgId: "",
|
|
89
|
-
} :
|
|
89
|
+
} : _17, _18 = _a.paginationMode, paginationMode = _18 === void 0 ? "client" : _18, _19 = _a.infiniteScroll, infiniteScroll = _19 === void 0 ? false : _19, hasMore = _a.hasMore, _20 = _a.isLoadingMore, isLoadingMore = _20 === void 0 ? false : _20, _21 = _a.groupLoadMore, groupLoadMore = _21 === void 0 ? false : _21, _22 = _a.loadMoreText, loadMoreText = _22 === void 0 ? "Load more" : _22, _23 = _a.loadMorePosition, loadMorePosition = _23 === void 0 ? "top" : _23, loadMoreChunkSize = _a.loadMoreChunkSize, _24 = _a.noOfRowsPerPage, noOfRowsPerPage = _24 === void 0 ? 50 : _24, _25 = _a.totalRecords, totalRecords = _25 === void 0 ? 0 : _25, onPagination = _a.onPagination, _26 = _a.isTableSettings, isTableSettings = _26 === void 0 ? false : _26, headerActions = _a.headerActions, onGlobalSearch = _a.onGlobalSearch, onNoOfRowsPerPageChange = _a.onNoOfRowsPerPageChange, paginationSelectOptions = _a.paginationSelectOptions, tableMaxHeight = _a.tableMaxHeight, minVisibleRows = _a.minVisibleRows, maxVisibleRows = _a.maxVisibleRows, autoFitViewport = _a.autoFitViewport, tableSettings = _a.tableSettings, filterSidebar = _a.filterSidebar, loadingSkeletonRows = _a.loadingSkeletonRows, defaultVisibleColumns = _a.defaultVisibleColumns, _27 = _a.density, density = _27 === void 0 ? "normal" : _27, stripe = _a.stripe, groupColors = _a.groupColors, onAddItem = _a.onAddItem, emptyState = _a.emptyState;
|
|
90
90
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
91
|
-
var
|
|
91
|
+
var _28 = (0, react_1.useState)({}), columnsSearch = _28[0], setColumnsSearch = _28[1];
|
|
92
92
|
var tableContainerRef = (0, react_1.useRef)(null);
|
|
93
|
-
var
|
|
93
|
+
var _29 = (0, react_2.useDisclosure)(), isFilterModalOpen = _29.isOpen, onFilterModalOpen = _29.onOpen, onFilterModalClose = _29.onClose;
|
|
94
94
|
var filterMode = (_b = filterSidebar === null || filterSidebar === void 0 ? void 0 : filterSidebar.filterMode) !== null && _b !== void 0 ? _b : "sidebar";
|
|
95
|
-
var
|
|
95
|
+
var _30 = (0, react_1.useState)(500), viewportAvailableH = _30[0], setViewportAvailableH = _30[1];
|
|
96
96
|
var isServerPagination = paginationMode === "server";
|
|
97
|
-
var
|
|
97
|
+
var _31 = (0, usePreferences_1.useGetPreferences)({
|
|
98
98
|
baseUrl: preferences.url,
|
|
99
99
|
page: preferences.page,
|
|
100
100
|
key: preferences.key,
|
|
101
101
|
name: preferences.name,
|
|
102
102
|
authToken: preferences.token,
|
|
103
103
|
orgId: preferences.orgId,
|
|
104
|
-
}), tablePreferencesData =
|
|
104
|
+
}), tablePreferencesData = _31.preferences, loading = _31.loading;
|
|
105
105
|
var savePreferences = (0, usePreferences_1.useSavePreferences)({
|
|
106
106
|
baseUrl: preferences.url,
|
|
107
107
|
page: preferences.page,
|
|
@@ -119,7 +119,7 @@ function Table(_a) {
|
|
|
119
119
|
}
|
|
120
120
|
return {};
|
|
121
121
|
}, [tablePreferencesData]);
|
|
122
|
-
var
|
|
122
|
+
var _32 = (0, useTable_1.default)({
|
|
123
123
|
tableBorderColor: tableBorderColor,
|
|
124
124
|
data: data,
|
|
125
125
|
isPagination: isPagination,
|
|
@@ -133,17 +133,17 @@ function Table(_a) {
|
|
|
133
133
|
isServerPagination: isServerPagination,
|
|
134
134
|
onNoOfRowsPerPageChange: onNoOfRowsPerPageChange,
|
|
135
135
|
defaultVisibleColumns: defaultVisibleColumns,
|
|
136
|
-
}), tableData =
|
|
136
|
+
}), tableData = _32.tableData, isContent = _32.isContent, isLink = _32.isLink, headerRefs = _32.headerRefs, columnWidths = _32.columnWidths, handleSort = _32.handleSort, handleCheckbox = _32.handleCheckbox, filteredData = _32.filteredData, startRow = _32.startRow, endRow = _32.endRow, selection = _32.selection, columnsSort = _32.columnsSort, currentPage = _32.currentPage, pages = _32.pages, rowsPerPage = _32.rowsPerPage, handlePageSizeChange = _32.handlePageSizeChange, setCurrentPage = _32.setCurrentPage, columnsList = _32.columnsList, handleColumnPreferences = _32.handleColumnPreferences, isSelecting = _32.isSelecting, selectAllRowsRef = _32.selectAllRowsRef;
|
|
137
137
|
// Density + grouping are managed here so the Table Settings tabs can change +
|
|
138
138
|
// persist them (seeded from the prop / saved preferences when they load).
|
|
139
|
-
var
|
|
139
|
+
var _33 = (0, react_1.useState)(density), densityState = _33[0], setDensityState = _33[1];
|
|
140
140
|
// Grouping is chosen by the user in Table Settings > Group and persisted to
|
|
141
141
|
// preferences (`json.groupBy`); there is no `groupBy` prop.
|
|
142
|
-
var
|
|
142
|
+
var _34 = (0, react_1.useState)(undefined), groupByState = _34[0], setGroupByState = _34[1];
|
|
143
143
|
// Grouped "Load more" accumulates pages here so loading more ADDS rows to the
|
|
144
144
|
// groups (server pagination replaces `data` each fetch). Reset on fresh loads
|
|
145
145
|
// (search / filter / sort / page-size). Only used in grouped + groupLoadMore mode.
|
|
146
|
-
var
|
|
146
|
+
var _35 = (0, react_1.useState)([]), accumulatedRows = _35[0], setAccumulatedRows = _35[1];
|
|
147
147
|
var pendingLoadMoreRef = (0, react_1.useRef)(false);
|
|
148
148
|
// Pages loaded so far (1 = the initial page). The next page is derived from this
|
|
149
149
|
// counter — NOT from the deduped row count — so overlapping rows across pages
|
|
@@ -152,15 +152,6 @@ function Table(_a) {
|
|
|
152
152
|
(0, react_1.useEffect)(function () {
|
|
153
153
|
if (!groupLoadMore)
|
|
154
154
|
return;
|
|
155
|
-
// eslint-disable-next-line no-console
|
|
156
|
-
console.log("[Table][loadMore] data change", {
|
|
157
|
-
incoming: tableData.length,
|
|
158
|
-
incomingIds: tableData.slice(0, 50).map(function (r) { return r.id; }),
|
|
159
|
-
accumulated: accumulatedRows.length,
|
|
160
|
-
newRows: tableData.filter(function (r) { return !new Set(accumulatedRows.map(function (a) { return a.id; })).has(r.id); }).length,
|
|
161
|
-
pending: pendingLoadMoreRef.current,
|
|
162
|
-
loadedPages: loadedPagesRef.current,
|
|
163
|
-
});
|
|
164
155
|
setAccumulatedRows(function (prev) {
|
|
165
156
|
if (prev.length === 0) {
|
|
166
157
|
loadedPagesRef.current = 1;
|
|
@@ -188,6 +179,19 @@ function Table(_a) {
|
|
|
188
179
|
});
|
|
189
180
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
190
181
|
}, [tableData, groupLoadMore]);
|
|
182
|
+
// Page-size change restarts the accumulation (the page boundaries change), so the
|
|
183
|
+
// next "Load more" requests page 2 of the NEW size, not a stale page index.
|
|
184
|
+
var rowsPerPageMountedRef = (0, react_1.useRef)(false);
|
|
185
|
+
(0, react_1.useEffect)(function () {
|
|
186
|
+
if (!rowsPerPageMountedRef.current) {
|
|
187
|
+
rowsPerPageMountedRef.current = true;
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
pendingLoadMoreRef.current = false;
|
|
191
|
+
loadedPagesRef.current = 1;
|
|
192
|
+
setAccumulatedRows(tableData); // current page at the new size (not empty)
|
|
193
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
194
|
+
}, [rowsPerPage]);
|
|
191
195
|
(0, react_1.useEffect)(function () {
|
|
192
196
|
if (tablePreferences === null || tablePreferences === void 0 ? void 0 : tablePreferences.density)
|
|
193
197
|
setDensityState(tablePreferences.density);
|
|
@@ -226,7 +230,10 @@ function Table(_a) {
|
|
|
226
230
|
: isServerPagination
|
|
227
231
|
? loadMoreBase.length < totalRecords
|
|
228
232
|
: false;
|
|
229
|
-
var
|
|
233
|
+
var groupLoadMoreActive = isGrouped && groupLoadMore;
|
|
234
|
+
// Keep the button while a load is in flight (so a transient empty `data` during
|
|
235
|
+
// fetching doesn't make it flicker); hide it once loading settles with no more.
|
|
236
|
+
var canGroupLoadMore = groupLoadMoreActive && (hasMoreEffective || isLoadingMore);
|
|
230
237
|
var groupPalette = (0, react_1.useMemo)(function () { return (0, table_1.buildTablePalette)(theme); }, [theme]);
|
|
231
238
|
var groupedSource = (0, react_1.useMemo)(function () {
|
|
232
239
|
if (!isGrouped)
|
|
@@ -239,6 +246,18 @@ function Table(_a) {
|
|
|
239
246
|
return undefined;
|
|
240
247
|
return (0, table_1.groupRows)(groupedSource, groupByState).map(function (g) { return (__assign(__assign({}, g), { color: (0, table_1.pickTableColor)(g.value, groupPalette, groupColors === null || groupColors === void 0 ? void 0 : groupColors[g.value]) })); });
|
|
241
248
|
}, [isGrouped, groupedSource, groupByState, groupPalette, groupColors]);
|
|
249
|
+
// "Select all" + header checkbox operate on the rows actually rendered: the
|
|
250
|
+
// accumulated grouped source when grouped, otherwise the table data.
|
|
251
|
+
var selectAllRows = isGrouped ? groupedSource : tableData;
|
|
252
|
+
selectAllRowsRef.current = isGrouped ? groupedSource : null;
|
|
253
|
+
var headerChecked = (0, react_1.useMemo)(function () {
|
|
254
|
+
if (selection.length === 0)
|
|
255
|
+
return false;
|
|
256
|
+
if (selectAllRows.length === 0)
|
|
257
|
+
return false;
|
|
258
|
+
var sel = new Set(selection);
|
|
259
|
+
return selectAllRows.every(function (r) { return sel.has(r.id); }) ? true : "indeterminate";
|
|
260
|
+
}, [selection, selectAllRows]);
|
|
242
261
|
var onPaginationRef = (0, react_1.useRef)(onPagination);
|
|
243
262
|
onPaginationRef.current = onPagination;
|
|
244
263
|
var prevPageRef = (0, react_1.useRef)(currentPage);
|
|
@@ -271,23 +290,29 @@ function Table(_a) {
|
|
|
271
290
|
var _a;
|
|
272
291
|
if (isLoadingMore || isTableLoading || !hasMoreEffective)
|
|
273
292
|
return;
|
|
274
|
-
|
|
293
|
+
// Must request the SAME page size the data was loaded with — a page-count model
|
|
294
|
+
// breaks if pages have different sizes (e.g. page size 100 but a 20-row chunk
|
|
295
|
+
// re-requests already-loaded records). `loadMoreChunkSize` is only a last-resort
|
|
296
|
+
// fallback and is otherwise ignored.
|
|
297
|
+
var chunk = rowsPerPage || loadMoreChunkSize || 20;
|
|
275
298
|
// Advance by page COUNT (not by deduped row count) so overlapping/pinned rows
|
|
276
299
|
// across pages don't keep us stuck on the same page.
|
|
277
300
|
var nextPage = loadedPagesRef.current + 1;
|
|
278
301
|
loadedPagesRef.current = nextPage;
|
|
279
302
|
var lastRecord = loadMoreBase.length > 0 ? loadMoreBase[loadMoreBase.length - 1] : undefined;
|
|
280
303
|
pendingLoadMoreRef.current = true;
|
|
281
|
-
// eslint-disable-next-line no-console
|
|
282
|
-
console.log("[Table][loadMore] click → request page", nextPage, {
|
|
283
|
-
chunk: chunk,
|
|
284
|
-
accumulated: loadMoreBase.length,
|
|
285
|
-
totalRecords: totalRecords,
|
|
286
|
-
hasMore: hasMoreEffective,
|
|
287
|
-
});
|
|
288
304
|
(_a = onPaginationRef.current) === null || _a === void 0 ? void 0 : _a.call(onPaginationRef, nextPage, chunk, lastRecord, "next");
|
|
289
305
|
};
|
|
290
|
-
|
|
306
|
+
// While more can load → live count; once everything's loaded → "Showing all
|
|
307
|
+
// records" (the running total isn't shown because de-duped/server totals can
|
|
308
|
+
// disagree, e.g. "250 of 250" would be misleading).
|
|
309
|
+
var groupLoadMoreCaption = !groupLoadMoreActive || isTableLoading || loadMoreBase.length === 0
|
|
310
|
+
? undefined
|
|
311
|
+
: canGroupLoadMore
|
|
312
|
+
? totalRecords > 0
|
|
313
|
+
? "Showing ".concat(loadMoreBase.length, " of ").concat(totalRecords)
|
|
314
|
+
: "Showing ".concat(loadMoreBase.length)
|
|
315
|
+
: "Showing all records";
|
|
291
316
|
var tablePaginationText = (0, react_1.useMemo)(function () { return isServerPagination
|
|
292
317
|
? "".concat(startRow + 1, " - ").concat(Math.min(startRow + rowsPerPage, totalRecords), " of ").concat(totalRecords)
|
|
293
318
|
: "".concat(startRow + 1, " - ").concat(endRow > tableData.length ? tableData.length : endRow, " of ").concat(tableData.length); }, [startRow, rowsPerPage, totalRecords, endRow, tableData.length]);
|
|
@@ -406,9 +431,9 @@ function Table(_a) {
|
|
|
406
431
|
react_1.default.createElement(HeaderActions_1.default, { actions: headerActions, selections: selection }))),
|
|
407
432
|
react_1.default.createElement(ActiveFilters_1.default, { columns: columnsList, columnsSearch: columnsSearch, setColumnsSearch: setColumnsSearch }),
|
|
408
433
|
react_1.default.createElement(react_2.Box, { ml: "auto", display: "flex", alignItems: "center", gap: 2 },
|
|
409
|
-
|
|
434
|
+
groupLoadMoreActive && loadMorePosition === "top" && (groupLoadMoreCaption || canGroupLoadMore) && (react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 2, flex: "0 0 auto" },
|
|
410
435
|
groupLoadMoreCaption && (react_1.default.createElement(react_2.Box, { fontSize: "0.75rem", color: (_x = (_w = theme.colors) === null || _w === void 0 ? void 0 : _w.text) === null || _x === void 0 ? void 0 : _x[500], whiteSpace: "nowrap" }, groupLoadMoreCaption)),
|
|
411
|
-
react_1.default.createElement(Button_1.default, { size: "xs", variant: "outline", colorScheme: "gray", isLoading: isLoadingMore, loadingText: loadMoreText, onClick: handleGroupLoadMore, label: loadMoreText }))),
|
|
436
|
+
canGroupLoadMore && (react_1.default.createElement(Button_1.default, { size: "xs", variant: "outline", colorScheme: "gray", isLoading: isLoadingMore, loadingText: loadMoreText, onClick: handleGroupLoadMore, label: loadMoreText })))),
|
|
412
437
|
(isPagination || isServerPagination) && !isGrouped && !canInfinite && !isCompactHeader && (react_1.default.createElement(react_2.Box, { flex: "0 0 auto" },
|
|
413
438
|
react_1.default.createElement(Pagination_1.default, { columns: columns, currentPage: currentPage, setCurrentPage: setCurrentPage, rowsPerPage: rowsPerPage, pages: pages, paginationText: tablePaginationText, handlePageSizeChange: handlePageSizeChange, dataLength: tableData.length, isServerPagination: isServerPagination, paginationSelectOptions: paginationSelectOptions, isVisiblity: true }))),
|
|
414
439
|
(isPagination || isServerPagination) && !isGrouped && !canInfinite && isCompactHeader && tableData.length > 0 && (react_1.default.createElement(react_2.Popover, { placement: "bottom-end" },
|
|
@@ -461,17 +486,13 @@ function Table(_a) {
|
|
|
461
486
|
},
|
|
462
487
|
} },
|
|
463
488
|
react_1.default.createElement(react_3.Thead, { position: "sticky", top: 0, zIndex: 4, bg: (_2 = (_1 = (_0 = theme.colors.table) === null || _0 === void 0 ? void 0 : _0.hover) === null || _1 === void 0 ? void 0 : _1[200]) !== null && _2 !== void 0 ? _2 : (_3 = theme.colors.secondary) === null || _3 === void 0 ? void 0 : _3[50] },
|
|
464
|
-
react_1.default.createElement(TableHeader_1.default, { columns: columnsList, isCheckbox: isCheckbox, headerBgColor: headerBgColor !== null && headerBgColor !== void 0 ? headerBgColor : theme.colors.backgroundColor.muted,
|
|
465
|
-
? true
|
|
466
|
-
: selection.length === 0
|
|
467
|
-
? false
|
|
468
|
-
: "indeterminate", isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze, setColumnsSearch: setColumnsSearch, columnsSearch: columnsSearch, isSelecting: isSelecting })),
|
|
489
|
+
react_1.default.createElement(TableHeader_1.default, { columns: columnsList, isCheckbox: isCheckbox, headerBgColor: headerBgColor !== null && headerBgColor !== void 0 ? headerBgColor : theme.colors.backgroundColor.muted, freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_4 = theme.colors) === null || _4 === void 0 ? void 0 : _4.gray[600], handleSort: handleSort, headerRefs: headerRefs, columnWidths: columnWidths, columnsSort: columnsSort, noBorders: noBorders, handleCheckbox: handleCheckbox, isLoading: isTableLoading, checked: headerChecked, isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze, setColumnsSearch: setColumnsSearch, columnsSearch: columnsSearch, isSelecting: isSelecting })),
|
|
469
490
|
react_1.default.createElement(react_3.Tbody, null,
|
|
470
|
-
react_1.default.createElement(TableBody_1.default, { data: isGrouped ? groupedSource : _filteredData, groups: renderGroups, onAddItem: onAddItem, columns: columnsList, startRow: isGrouped ? 0 : startRow, endRow: endRow, scrollContainerRef: tableContainerRef, isCheckbox: isCheckbox, columnWidths: columnWidths, noBorders: noBorders, freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (
|
|
491
|
+
react_1.default.createElement(TableBody_1.default, { data: isGrouped ? groupedSource : _filteredData, groups: renderGroups, onAddItem: onAddItem, columns: columnsList, startRow: isGrouped ? 0 : startRow, endRow: endRow, scrollContainerRef: tableContainerRef, isCheckbox: isCheckbox, columnWidths: columnWidths, noBorders: noBorders, freezedBgColor: freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : theme.colors.backgroundColor.secondary, freezedTextColor: freezedTextColor !== null && freezedTextColor !== void 0 ? freezedTextColor : (_5 = theme.colors) === null || _5 === void 0 ? void 0 : _5.gray[600], handleCheckbox: handleCheckbox, selections: selection, isLoading: isTableLoading, loadingSkeletonRows: loadingSkeletonRows, onRowClick: onRowClick, isContent: isContent, isLink: isLink, isActionFreeze: isActionFreeze, density: densityState, stripe: stripe, emptyState: emptyState }))),
|
|
471
492
|
canInfinite && isLoadingMore && (react_1.default.createElement(react_2.Flex, { justify: "center", align: "center", py: 3, gap: 2 },
|
|
472
|
-
react_1.default.createElement(react_2.Spinner, { size: "sm", color: (
|
|
473
|
-
react_1.default.createElement(react_2.Box, { fontSize: "0.75rem", color: (
|
|
474
|
-
|
|
475
|
-
groupLoadMoreCaption && (react_1.default.createElement(react_2.Box, { fontSize: "0.75rem", color: (
|
|
476
|
-
react_1.default.createElement(Button_1.default, { size: "xs", variant: "outline", colorScheme: "gray", isLoading: isLoadingMore, loadingText: loadMoreText, onClick: handleGroupLoadMore, label: loadMoreText })))))));
|
|
493
|
+
react_1.default.createElement(react_2.Spinner, { size: "sm", color: (_7 = (_6 = theme.colors) === null || _6 === void 0 ? void 0 : _6.primary) === null || _7 === void 0 ? void 0 : _7[500] }),
|
|
494
|
+
react_1.default.createElement(react_2.Box, { fontSize: "0.75rem", color: (_9 = (_8 = theme.colors) === null || _8 === void 0 ? void 0 : _8.text) === null || _9 === void 0 ? void 0 : _9[500] }, "Loading more\u2026")))),
|
|
495
|
+
groupLoadMoreActive && loadMorePosition === "bottom" && (groupLoadMoreCaption || canGroupLoadMore) && (react_1.default.createElement(react_2.Flex, { justify: "center", align: "center", gap: 3, py: 3, borderTop: "0.063rem solid ".concat((_10 = theme.colors.border) === null || _10 === void 0 ? void 0 : _10[500]) },
|
|
496
|
+
groupLoadMoreCaption && (react_1.default.createElement(react_2.Box, { fontSize: "0.75rem", color: (_12 = (_11 = theme.colors) === null || _11 === void 0 ? void 0 : _11.text) === null || _12 === void 0 ? void 0 : _12[500] }, groupLoadMoreCaption)),
|
|
497
|
+
canGroupLoadMore && (react_1.default.createElement(Button_1.default, { size: "xs", variant: "outline", colorScheme: "gray", isLoading: isLoadingMore, loadingText: loadMoreText, onClick: handleGroupLoadMore, label: loadMoreText }))))))));
|
|
477
498
|
}
|
|
@@ -38,6 +38,8 @@ export type TableProps = {
|
|
|
38
38
|
groupLoadMore?: boolean;
|
|
39
39
|
loadMoreText?: string;
|
|
40
40
|
loadMorePosition?: "top" | "bottom";
|
|
41
|
+
/** @deprecated Ignored — load more always uses the current page size (`noOfRowsPerPage`)
|
|
42
|
+
* so page boundaries stay consistent. Kept only for backward compatibility. */
|
|
41
43
|
loadMoreChunkSize?: number;
|
|
42
44
|
noOfRowsPerPage?: number;
|
|
43
45
|
totalRecords?: number;
|
|
@@ -121,7 +123,7 @@ export type ColumnSortingProps = {
|
|
|
121
123
|
column: string | number;
|
|
122
124
|
direction: "asc" | "desc" | "none";
|
|
123
125
|
};
|
|
124
|
-
export type TableHeaderPageProps = Pick<TableProps, "columns" | "isCheckbox" | "headerBgColor" | "
|
|
126
|
+
export type TableHeaderPageProps = Pick<TableProps, "columns" | "isCheckbox" | "headerBgColor" | "freezedBgColor" | "freezedTextColor" | "noBorders" | "isLoading" | "isActionFreeze"> & {
|
|
125
127
|
handleSort: (label: string | number, type: "asc" | "desc" | "none") => void;
|
|
126
128
|
activeHeader?: string | null;
|
|
127
129
|
isPopoverOpen?: boolean;
|
|
@@ -170,7 +172,7 @@ export type TableFiltersProps = {
|
|
|
170
172
|
columnsSearch: string;
|
|
171
173
|
onClose: () => void;
|
|
172
174
|
};
|
|
173
|
-
export type ColumnHeaderProps = Pick<TableProps, "isCheckbox" | "headerBgColor" | "
|
|
175
|
+
export type ColumnHeaderProps = Pick<TableProps, "isCheckbox" | "headerBgColor" | "freezedBgColor" | "noBorders"> & Pick<TableHeaderPageProps, "handleSort" | "columnsSort"> & {
|
|
174
176
|
header: TableHeaderProps;
|
|
175
177
|
index: number;
|
|
176
178
|
columnWidths: number[];
|
|
@@ -49,7 +49,7 @@ var Pagination = react_1.default.memo(function (_a) {
|
|
|
49
49
|
var isLeftDisabled = dataLength === 0 || currentPage === 0;
|
|
50
50
|
var isRightDisabled = dataLength === 0 || currentPage >= pages - 1;
|
|
51
51
|
return (react_1.default.createElement(react_2.Flex, { justify: "flex-end", align: "center", flexWrap: "nowrap" },
|
|
52
|
-
(!isServerPagination || paginationSelectOptions) && (react_1.default.createElement(react_2.Select, { onChange: handlePageSizeChange, value: rowsPerPage, size: "xs", borderRadius: 3, width:
|
|
52
|
+
(!isServerPagination || paginationSelectOptions) && (react_1.default.createElement(react_2.Select, { onChange: handlePageSizeChange, value: rowsPerPage, size: "xs", borderRadius: 3, width: "auto", minW: "4.5rem", isDisabled: dataLength === 0 },
|
|
53
53
|
!paginationSelectOptions && dataLength < 100 ? react_1.default.createElement("option", { value: 0 }) : null,
|
|
54
54
|
computedOptions.map(function (size, index) { return (react_1.default.createElement("option", { key: index, value: size }, String(size))); }))),
|
|
55
55
|
dataLength > 0 && (react_1.default.createElement(react_2.Flex, { w: "100%" },
|
|
@@ -62,14 +62,14 @@ var StatusCell = function (_a) {
|
|
|
62
62
|
var EMPTY_SX = {};
|
|
63
63
|
var EMPTY_HOVER = {};
|
|
64
64
|
var TableRow = react_2.default.memo(function (_a) {
|
|
65
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
65
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
66
66
|
var row = _a.row, rowIndex = _a.rowIndex, index = _a.index, isChecked = _a.isChecked, isExpanded = _a.isExpanded, isContent = _a.isContent, isLink = _a.isLink, isCheckbox = _a.isCheckbox, isLoading = _a.isLoading, isActionFreeze = _a.isActionFreeze, columns = _a.columns, leftOffsets = _a.leftOffsets, noBorders = _a.noBorders, freezedBgColor = _a.freezedBgColor, freezedTextColor = _a.freezedTextColor, theme = _a.theme, borderStyle = _a.borderStyle, hoverStyle = _a.hoverStyle, rowHeight = _a.rowHeight, cellPy = _a.cellPy, palette = _a.palette, accentColor = _a.accentColor, handleCheckbox = _a.handleCheckbox, onRowClick = _a.onRowClick, toggleRowExpansion = _a.toggleRowExpansion, onMeasure = _a.onMeasure;
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
// Selected-row tint applied per-cell (NOT a blanket `& td` override) so status
|
|
68
|
+
// cells keep their solid color + white text instead of white-on-tint.
|
|
69
|
+
var selectedBg = (_d = (_c = (_b = theme.colors.primary) === null || _b === void 0 ? void 0 : _b.opacity) === null || _c === void 0 ? void 0 : _c[16]) !== null && _d !== void 0 ? _d : (_e = theme.colors.disabled) === null || _e === void 0 ? void 0 : _e[100];
|
|
70
|
+
// Sticky/frozen cells overlay scrolling content, so their selected background
|
|
71
|
+
// must be OPAQUE — paint the (translucent) tint over an opaque base.
|
|
72
|
+
var selectedFrozenBg = "linear-gradient(0deg, ".concat(selectedBg, ", ").concat(selectedBg, "), ").concat((_h = (_g = (_f = theme.colors) === null || _f === void 0 ? void 0 : _f.background) === null || _g === void 0 ? void 0 : _g[50]) !== null && _h !== void 0 ? _h : "#fff");
|
|
73
73
|
// Measured-height virtualization: report this row's real height (main + any
|
|
74
74
|
// expanded panel) so the windower can place variable/expandable rows exactly.
|
|
75
75
|
var mainRowRef = (0, react_2.useRef)(null);
|
|
@@ -108,10 +108,13 @@ var TableRow = react_2.default.memo(function (_a) {
|
|
|
108
108
|
}, [row, onRowClick]);
|
|
109
109
|
var firstDataColIndex = columns.findIndex(function (c) { return !c.isHidden; });
|
|
110
110
|
var accentSx = accentColor ? "inset 3px 0 0 ".concat(accentColor) : undefined;
|
|
111
|
+
// Pinned/frozen columns get a tinted, opaque background so the frozen pane reads
|
|
112
|
+
// as one piece with its header (and so sticky cells cover scrolling content).
|
|
113
|
+
var frozenCellBg = (_m = freezedBgColor !== null && freezedBgColor !== void 0 ? freezedBgColor : (_l = (_k = (_j = theme.colors) === null || _j === void 0 ? void 0 : _j.table) === null || _k === void 0 ? void 0 : _k.hover) === null || _l === void 0 ? void 0 : _l[100]) !== null && _m !== void 0 ? _m : (_p = (_o = theme.colors) === null || _o === void 0 ? void 0 : _o.background) === null || _p === void 0 ? void 0 : _p[100];
|
|
111
114
|
return (react_2.default.createElement(react_2.default.Fragment, null,
|
|
112
|
-
react_2.default.createElement(react_1.Tr, { ref: mainRowRef, opacity: isLoading ? 0.4 : 1, pointerEvents: isLoading ? "none" : "auto", transition: "opacity 0.2s"
|
|
113
|
-
isContent && (react_2.default.createElement(react_1.Td, { w: "6", p: 0, fontSize: 14,
|
|
114
|
-
isCheckbox && (react_2.default.createElement(react_1.Td, { w: "6", fontSize: 14, fontWeight: 600, color: (
|
|
115
|
+
react_2.default.createElement(react_1.Tr, { ref: mainRowRef, opacity: isLoading ? 0.4 : 1, pointerEvents: isLoading ? "none" : "auto", transition: "opacity 0.2s" },
|
|
116
|
+
isContent && (react_2.default.createElement(react_1.Td, { w: "6", p: 0, fontSize: 14, background: isChecked ? selectedFrozenBg : frozenCellBg, color: freezedTextColor, position: "sticky", borderBottom: borderStyle, boxShadow: accentSx, boxSizing: "border-box", left: 0, zIndex: 1, className: "columns sticky-columns" }, !!(row === null || row === void 0 ? void 0 : row.content) && (react_2.default.createElement(react_1.IconButton, { "aria-label": isExpanded ? "Collapse row" : "Expand row", color: (_q = theme.colors) === null || _q === void 0 ? void 0 : _q.gray[600], icon: isExpanded ? (react_2.default.createElement(lucide_react_1.ChevronDown, { fontSize: 16 })) : (react_2.default.createElement(lucide_react_1.ChevronRight, { fontSize: 16 })), _hover: { transform: "scale(1.1)" }, size: "sm", onClick: function () { return toggleRowExpansion(rowIndex); }, variant: "ghost" })))),
|
|
117
|
+
isCheckbox && (react_2.default.createElement(react_1.Td, { w: "6", fontSize: 14, fontWeight: 600, color: (_s = (_r = theme.colors) === null || _r === void 0 ? void 0 : _r.background) === null || _s === void 0 ? void 0 : _s[50], textTransform: "capitalize", background: isChecked ? selectedFrozenBg : frozenCellBg, position: "sticky", borderBottom: borderStyle, boxShadow: !isContent ? accentSx : undefined, boxSizing: "border-box", left: 0, zIndex: 1, className: "columns sticky-columns" },
|
|
115
118
|
react_2.default.createElement(Checkbox_1.default, { "aria-label": "Select all rows", onChange: function () { return handleCheckbox(row.id); }, isChecked: isChecked }))),
|
|
116
119
|
columns.map(function (header, headerIndex) {
|
|
117
120
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
@@ -124,7 +127,7 @@ var TableRow = react_2.default.memo(function (_a) {
|
|
|
124
127
|
var statusColor = isStatus
|
|
125
128
|
? (0, table_1.pickTableColor)(rawStatus, palette, (_b = header.statusColors) === null || _b === void 0 ? void 0 : _b[rawStatus])
|
|
126
129
|
: null;
|
|
127
|
-
return (react_2.default.createElement(react_1.Td, { maxWidth: 500, minWidth: 120, height: "".concat(rowHeight, "px"), py: isStatus && statusColor ? 0 : cellPy, px: isStatus && statusColor ? 0 : undefined, key: headerIndex + 1, onClick: function () { return handleCellClick(header); }, fontSize: 14, fontWeight: 400, position: isFrozen ? "sticky" : undefined, left: isFrozen ? leftOffsets[headerIndex] : undefined, zIndex: isFrozen ? 1 : 0,
|
|
130
|
+
return (react_2.default.createElement(react_1.Td, { maxWidth: 500, minWidth: 120, height: "".concat(rowHeight, "px"), py: isStatus && statusColor ? 0 : cellPy, px: isStatus && statusColor ? 0 : undefined, key: headerIndex + 1, onClick: function () { return handleCellClick(header); }, fontSize: 14, fontWeight: 400, position: isFrozen ? "sticky" : undefined, left: isFrozen ? leftOffsets[headerIndex] : undefined, zIndex: isFrozen ? 1 : 0, background: isStatus && statusColor ? statusColor.solid : isChecked ? (isFrozen ? selectedFrozenBg : selectedBg) : isFrozen ? frozenCellBg : (_c = theme.colors.background) === null || _c === void 0 ? void 0 : _c[50], textOverflow: "ellipsis", boxShadow: isFirstDataCell ? accentSx : undefined, borderBottom: noBorders
|
|
128
131
|
? "none"
|
|
129
132
|
: "0.063rem solid ".concat((_d = theme.colors) === null || _d === void 0 ? void 0 : _d.gray[isFrozen || isChecked ? 300 : 200]), className: "columns ".concat(isFrozen ? "sticky-columns" : "scrollable-columns"), boxSizing: "border-box", color: isStatus && statusColor ? "white" : (_f = (_e = theme.colors) === null || _e === void 0 ? void 0 : _e.text) === null || _f === void 0 ? void 0 : _f[500], _hover: isStatus && statusColor
|
|
130
133
|
? EMPTY_HOVER
|
|
@@ -132,7 +135,7 @@ var TableRow = react_2.default.memo(function (_a) {
|
|
|
132
135
|
? EMPTY_HOVER
|
|
133
136
|
: hoverStyle }, isStatus && statusColor ? (react_2.default.createElement(StatusCell, { value: (0, table_1.normalizeTableCellValue)(row[header.id]) })) : (react_2.default.createElement(react_1.Box, { display: "block", overflow: "hidden", whiteSpace: "normal", overflowWrap: "break-word" }, (0, table_1.normalizeTableCellValue)(header.node ? header.node(row) : row[header.id])))));
|
|
134
137
|
}),
|
|
135
|
-
isLink && (react_2.default.createElement(react_1.Td, { w: 2, p: 0, fontSize: 14,
|
|
138
|
+
isLink && (react_2.default.createElement(react_1.Td, { w: 2, p: 0, fontSize: 14, background: isChecked ? (isActionFreeze ? selectedFrozenBg : selectedBg) : isActionFreeze ? frozenCellBg : (_u = (_t = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _t === void 0 ? void 0 : _t.background) === null || _u === void 0 ? void 0 : _u[50], color: freezedTextColor, position: isActionFreeze ? "sticky" : "relative", borderBottom: borderStyle, boxSizing: "border-box", right: 0, zIndex: 1, className: "columns sticky-columns".concat(isActionFreeze ? "-right" : "") }, (row.onLink || row.onEdit || row.onDelete) && (react_2.default.createElement(TableActions_1.default, { row: row }))))),
|
|
136
139
|
row.content && isExpanded && (react_2.default.createElement(react_1.Tr, { ref: expandedRowRef },
|
|
137
140
|
react_2.default.createElement(react_1.Td, { colSpan: columns.length +
|
|
138
141
|
(isCheckbox ? 1 : 0) +
|