forlogic-core 1.20.1 → 2.0.0
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/.note/memory/patterns/single-scroll-pattern.md +30 -12
- package/dist/action-plans/components/ActionPlanAttachmentsTab.d.ts +18 -0
- package/dist/action-plans/components/ActionPlanCommentsTab.d.ts +18 -0
- package/dist/action-plans/components/ActionPlanCostTab.d.ts +10 -0
- package/dist/action-plans/components/ActionPlanGeneralTab.d.ts +18 -0
- package/dist/action-plans/components/ActionPlanHistoryTab.d.ts +13 -0
- package/dist/action-plans/components/ActionPlanPage.d.ts +25 -0
- package/dist/action-plans/components/ActionPlanPredecessorsTab.d.ts +10 -0
- package/dist/action-plans/components/ActionPlanProgressDialog.d.ts +13 -0
- package/dist/action-plans/components/ActionPlanProgressTab.d.ts +5 -0
- package/dist/action-plans/components/ActionPlanStatusBadge.d.ts +11 -0
- package/dist/action-plans/constants.d.ts +42 -0
- package/dist/action-plans/hooks/useActionPlan.d.ts +14 -0
- package/dist/action-plans/hooks/useActionPlanProgress.d.ts +15 -0
- package/dist/action-plans/index.d.ts +15 -0
- package/dist/action-plans/types.d.ts +353 -0
- package/dist/action-plans/utils/formatTime.d.ts +15 -0
- package/dist/approval-flow/components/ApprovalSidenav.d.ts +16 -0
- package/dist/approval-flow/components/ApproveDialog.d.ts +13 -0
- package/dist/approval-flow/components/SelectApproverDialog.d.ts +11 -0
- package/dist/approval-flow/index.d.ts +4 -0
- package/dist/approval-flow/types.d.ts +76 -0
- package/dist/assets/index.d.ts +1 -0
- package/dist/audit-trail/components/AuditTrailDetails.d.ts +17 -0
- package/dist/audit-trail/components/AuditTrailFilter.d.ts +19 -0
- package/dist/audit-trail/components/AuditTrailPage.d.ts +30 -0
- package/dist/audit-trail/index.d.ts +9 -0
- package/dist/audit-trail/types.d.ts +151 -0
- package/dist/audit-trail/utils.d.ts +38 -0
- package/dist/components/dashboards/dashboard-form.d.ts +50 -0
- package/dist/components/dashboards/dashboard-general-view.d.ts +109 -0
- package/dist/components/dashboards/dashboard-grid.d.ts +41 -0
- package/dist/components/dashboards/dashboard-list.d.ts +31 -0
- package/dist/components/dashboards/dashboard-panel-renderer.d.ts +21 -0
- package/dist/components/dashboards/dashboard-view.d.ts +38 -0
- package/dist/components/dashboards/helpers.d.ts +47 -0
- package/dist/components/dashboards/index.d.ts +9 -0
- package/dist/components/dashboards/panels/burndown-panel.d.ts +26 -0
- package/dist/components/dashboards/panels/cartesian-panel.d.ts +46 -0
- package/dist/components/dashboards/panels/index.d.ts +14 -0
- package/dist/components/dashboards/panels/list-panel.d.ts +30 -0
- package/dist/components/dashboards/panels/matrix-risk-panel.d.ts +49 -0
- package/dist/components/dashboards/panels/numeric-panel.d.ts +22 -0
- package/dist/components/dashboards/panels/panel-error.d.ts +8 -0
- package/dist/components/dashboards/panels/panel-header.d.ts +17 -0
- package/dist/components/dashboards/panels/panel-loader.d.ts +7 -0
- package/dist/components/dashboards/panels/panel-no-data.d.ts +6 -0
- package/dist/components/dashboards/panels/panel-unavailable.d.ts +6 -0
- package/dist/components/dashboards/panels/pareto-panel.d.ts +20 -0
- package/dist/components/dashboards/panels/performance-panel.d.ts +24 -0
- package/dist/components/dashboards/panels/pie-panel.d.ts +19 -0
- package/dist/components/dashboards/panels/text-panel.d.ts +18 -0
- package/dist/components/dashboards/types.d.ts +525 -0
- package/dist/components/ui/electronic-signature-dialog.d.ts +21 -0
- package/dist/components/ui/export-dialog.d.ts +28 -0
- package/dist/components/ui/iframe-dialog.d.ts +14 -0
- package/dist/components/ui/multiselect-permissions.d.ts +59 -0
- package/dist/components/ui/online-editor-dialog.d.ts +18 -0
- package/dist/components/ui/report-request-list.d.ts +44 -0
- package/dist/components/ui/stimulsoft-viewer.d.ts +20 -0
- package/dist/components/ui/terms-of-use-dialog.d.ts +56 -0
- package/dist/components/ui/timepicker.d.ts +11 -0
- package/dist/components/ui/users-groups-selector.d.ts +44 -0
- package/dist/components/ui/viewer-dialog.d.ts +77 -0
- package/dist/custom-form-fields/components/CustomFormFields.d.ts +8 -0
- package/dist/custom-form-fields/fields/FormDateField.d.ts +6 -0
- package/dist/custom-form-fields/fields/FormMultiSelectionField.d.ts +6 -0
- package/dist/custom-form-fields/fields/FormNumericField.d.ts +6 -0
- package/dist/custom-form-fields/fields/FormQuestionsField.d.ts +6 -0
- package/dist/custom-form-fields/fields/FormSingleSelectionField.d.ts +6 -0
- package/dist/custom-form-fields/fields/FormTextField.d.ts +6 -0
- package/dist/custom-form-fields/fields/FormTimeField.d.ts +6 -0
- package/dist/custom-form-fields/fields/FormUrlField.d.ts +6 -0
- package/dist/custom-form-fields/fields/ReadOnlyTextField.d.ts +6 -0
- package/dist/custom-form-fields/index.d.ts +13 -0
- package/dist/custom-form-fields/types.d.ts +143 -0
- package/dist/exports/action-plans.d.ts +16 -0
- package/dist/exports/audit-trail.d.ts +1 -0
- package/dist/exports/custom-form-fields.d.ts +1 -0
- package/dist/exports/file-upload.d.ts +1 -0
- package/dist/exports/ui.d.ts +12 -0
- package/dist/file-upload/components/SingleFileUpload.d.ts +43 -0
- package/dist/file-upload/index.d.ts +6 -0
- package/dist/file-upload/types.d.ts +11 -0
- package/dist/file-upload/utils/formatBytes.d.ts +1 -0
- package/dist/file-upload/utils/getFileExtension.d.ts +1 -0
- package/dist/hooks/useSidebarResize.d.ts +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/team-selector/components/TeamSelector.d.ts +24 -0
- package/dist/team-selector/index.d.ts +2 -0
- package/dist/team-selector/types.d.ts +10 -0
- package/docs/ICON_MIGRATION_GUIDE.md +177 -0
- package/package.json +1 -1
- package/dist/assets/AccordionDoc-BVPUJk8G.js +0 -31
- package/dist/assets/ActionButtonDoc-DLJ_K9ib.js +0 -47
- package/dist/assets/AlertDoc-CY1ybZeG.js +0 -37
- package/dist/assets/AppHeaderDoc-Crkw4dA9.js +0 -67
- package/dist/assets/AppSidebarDoc-ET-4j6wV.js +0 -204
- package/dist/assets/AuthDoc-B4v4Nci5.js +0 -192
- package/dist/assets/AvatarDoc-BLdMoyJd.js +0 -11
- package/dist/assets/BadgeDoc-CSNM1b6b.js +0 -36
- package/dist/assets/BaseFormDoc-DXiYuN6-.js +0 -169
- package/dist/assets/BodyContentDoc-Bp6YmUWX.js +0 -83
- package/dist/assets/BreadcrumbDoc-D7tqqTvo.js +0 -75
- package/dist/assets/ButtonDoc-C4JwIvU3.js +0 -41
- package/dist/assets/ButtonGroupDoc-QFfjC7Pm.js +0 -7
- package/dist/assets/CalendarDoc-COlEKqmv.js +0 -81
- package/dist/assets/CardDoc-BVhMoC2w.js +0 -49
- package/dist/assets/ChartDoc-BJ14EjI2.js +0 -111
- package/dist/assets/CheckboxDoc-Bcqpln9_.js +0 -55
- package/dist/assets/ColorPickerDoc-CcfmSwyC.js +0 -10
- package/dist/assets/ColorsFoundationDoc-uO6IiJbS.js +0 -13
- package/dist/assets/ComboTreeDoc-R4qE6XwB.js +0 -46
- package/dist/assets/ComboboxDoc-JIo_-gSN.js +0 -134
- package/dist/assets/ComponentDocTemplate-CRbRY-v5.js +0 -1
- package/dist/assets/ContextMenuDoc-C4-_0NLp.js +0 -182
- package/dist/assets/ContextsDoc-Cj9Aaoyo.js +0 -184
- package/dist/assets/CreateCrudPageDoc-D_SnMRJ2.js +0 -106
- package/dist/assets/CrudActionBarDoc-BYqtIabp.js +0 -112
- package/dist/assets/CrudGridDoc-DspxQrq5.js +0 -85
- package/dist/assets/CrudOverviewDoc-DLcOL_HZ.js +0 -14
- package/dist/assets/CrudPrimitivesDoc-BRS86nWg.js +0 -164
- package/dist/assets/CrudTableDoc-Daw8u2G_.js +0 -113
- package/dist/assets/DataListDoc-BrgVNhhR.js +0 -13
- package/dist/assets/DesignSystemHome-BFBNqq1J.js +0 -1
- package/dist/assets/DialogDoc-DCpRy4rg.js +0 -981
- package/dist/assets/DropdownMenuDoc-DT6LBa8Z.js +0 -175
- package/dist/assets/EmptyStateDoc-wydc09gG.js +0 -35
- package/dist/assets/EnvironmentsDoc-amIriwDD.js +0 -96
- package/dist/assets/ErrorBoundaryDoc-BEixy_Gl.js +0 -111
- package/dist/assets/FormDoc-DxoRt6p7.js +0 -81
- package/dist/assets/FoundationOverview-CxSbumIt.js +0 -1
- package/dist/assets/GridDoc-BpQqCMUE.js +0 -28
- package/dist/assets/HooksDoc-JNODhbaF.js +0 -665
- package/dist/assets/HoverCardDoc-CdqiYrIb.js +0 -31
- package/dist/assets/I18nDoc-B6LMXnE3.js +0 -232
- package/dist/assets/IconPickerDoc-BRdy58IC.js +0 -10
- package/dist/assets/IconsFoundationDoc-CrymfxTI.js +0 -33
- package/dist/assets/InputDoc-BK-SdpJ7.js +0 -211
- package/dist/assets/LabelDoc-DHvgzhaJ.js +0 -42
- package/dist/assets/LeadershipDoc-DRiB0spL.js +0 -416
- package/dist/assets/MediaDoc-B_vqnf72.js +0 -459
- package/dist/assets/MenubarDoc-Zvgczxe2.js +0 -165
- package/dist/assets/ModuleAccessDoc-Nuxb4S27.js +0 -153
- package/dist/assets/ModulesDialogDoc-iJWLkOZo.js +0 -46
- package/dist/assets/NavigationMenuDoc-CeWun1VF.js +0 -116
- package/dist/assets/OnboardingDialogDoc-xBL-rXeZ.js +0 -55
- package/dist/assets/PaginationDoc-CfvwxCMe.js +0 -98
- package/dist/assets/PaginationDoc-DqtRgXnF.js +0 -27
- package/dist/assets/PlacesDoc-nckioEzg.js +0 -226
- package/dist/assets/PopoverDoc-C3o2CZCT.js +0 -64
- package/dist/assets/ProgressDoc-BmWBNMPA.js +0 -29
- package/dist/assets/QualiexUserFieldDoc-CE1e4mx6.js +0 -149
- package/dist/assets/RadioGroupDoc-DMZH6NmR.js +0 -57
- package/dist/assets/RadiusDoc-BOZD3gPV.js +0 -7
- package/dist/assets/RequiredFieldsCounterDoc-CG-lmSSy.js +0 -58
- package/dist/assets/ResizableDoc-CqGkv6Cd.js +0 -104
- package/dist/assets/RichTextEditorDoc-m50ll-Od.js +0 -24
- package/dist/assets/ScrollAreaDoc-BzJ-APXo.js +0 -28
- package/dist/assets/SecurityDoc-B34gVeiV.js +0 -204
- package/dist/assets/SelectDoc-DXRv7QHK.js +0 -80
- package/dist/assets/SeparatorDoc-DcNh8k0P.js +0 -4
- package/dist/assets/ServicesDoc-8aXBd6yg.js +0 -308
- package/dist/assets/ShadowsDoc-Brl4hIDI.js +0 -9
- package/dist/assets/SignDoc-BdwerR-2.js +0 -66
- package/dist/assets/SkeletonDoc-BWgqgbDY.js +0 -54
- package/dist/assets/SliderDoc-E-NjbYVk.js +0 -41
- package/dist/assets/SpacingDoc-BzburM-r.js +0 -12
- package/dist/assets/SplitButtonDoc-BYUysmJp.js +0 -53
- package/dist/assets/StepSelectorDoc-PB1k4v7F.js +0 -41
- package/dist/assets/SwitchDoc-BLOG6kfj.js +0 -56
- package/dist/assets/TableDoc-Dwcs-lop.js +0 -128
- package/dist/assets/TabsDoc-Ovkh8ArV.js +0 -42
- package/dist/assets/TextareaDoc-DsBYxmbr.js +0 -46
- package/dist/assets/ToastDoc-BbZaFE_A.js +0 -157
- package/dist/assets/ToggleDoc-C28vbvhp.js +0 -51
- package/dist/assets/TooltipDoc-DL5cnLak.js +0 -58
- package/dist/assets/TruncatedCellDoc-BuDA8QcY.js +0 -12
- package/dist/assets/TypographyFoundationDoc-CPdH4PHa.js +0 -7
- package/dist/assets/UtilitiesDoc-CrQhyEfz.js +0 -145
- package/dist/assets/blocks-DO93nPjs.js +0 -1
- package/dist/assets/calendar-days-cMfwBSZx.js +0 -1
- package/dist/assets/circle-plus-D3NftMzS.js +0 -1
- package/dist/assets/circle-x-BVAVJ_oz.js +0 -1
- package/dist/assets/crown-B2MTZDnM.js +0 -1
- package/dist/assets/date-picker-zhJU-_kM.js +0 -1
- package/dist/assets/disabled-menu-item-C16xsaVs.js +0 -1
- package/dist/assets/drawer-oTqCOtsC.js +0 -3
- package/dist/assets/file-pen-line-CXv-Eye-.js +0 -1
- package/dist/assets/git-branch-V6-h6P9K.js +0 -1
- package/dist/assets/globe-CaUBIJU8.js +0 -1
- package/dist/assets/hash-B4MTXppl.js +0 -1
- package/dist/assets/hover-card-DEuucfxP.js +0 -1
- package/dist/assets/index-CE0k7Rdh.js +0 -312
- package/dist/assets/index-Cx3adT_u.css +0 -1
- package/dist/assets/life-buoy-BRndExxh.js +0 -1
- package/dist/assets/lucide-react-t7dCa4lv.js +0 -1
- package/dist/assets/monitor-Dg3HKTSE.js +0 -1
- package/dist/assets/package-3G45ARQh.js +0 -1
- package/dist/assets/pen-BYSSwjK4.js +0 -1
- package/dist/assets/pin-CMYagNhs.js +0 -1
- package/dist/assets/radio-group-BVun_Tmt.js +0 -1
- package/dist/assets/server-p0Sb0mKI.js +0 -1
- package/dist/assets/share-2-D-ZhCCq2.js +0 -1
- package/dist/assets/shield-x-Q7hAXWsG.js +0 -1
- package/dist/assets/step-selector-DHxgT2FL.js +0 -1
- package/dist/assets/text-align-start-6aYQqbX4.js +0 -1
- package/dist/assets/trash-DveAOiLF.js +0 -1
- package/dist/assets/useMockCrud-GY0KxHXr.js +0 -1
- package/dist/assets/user-check-CoGNBfIk.js +0 -1
- package/dist/assets/user-plus-Bad2xWIT.js +0 -1
- package/dist/index.html +0 -35
- package/dist/leadership/components/LeaderRow.d.ts +0 -9
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ApprovalSidenavConfig, ApproveDialogResult, ApproverOption } from '../types';
|
|
2
|
+
interface ApprovalSidenavProps {
|
|
3
|
+
config: ApprovalSidenavConfig;
|
|
4
|
+
isLoading?: boolean;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
onApprove: (associationId: string, data: {
|
|
7
|
+
stepApproverId: string;
|
|
8
|
+
} & ApproveDialogResult) => Promise<boolean>;
|
|
9
|
+
onDefineApprover: (associationId: string, approverId: string, user: ApproverOption) => Promise<void>;
|
|
10
|
+
onRefreshSteps?: (associationId: string) => Promise<void>;
|
|
11
|
+
/** List of available approvers for the "select approver" dialog */
|
|
12
|
+
availableApprovers?: ApproverOption[];
|
|
13
|
+
isLoadingApprovers?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function ApprovalSidenav({ config, isLoading, onClose, onApprove, onDefineApprover, onRefreshSteps, availableApprovers, isLoadingApprovers, }: ApprovalSidenavProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ApprovalReturnStepOption, ApproveDialogResult } from '../types';
|
|
2
|
+
interface ApproveDialogProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
returnSteps: ApprovalReturnStepOption[];
|
|
6
|
+
initialObservation?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
descriptions?: string[];
|
|
9
|
+
setDefaultApproverOnInit?: boolean;
|
|
10
|
+
onSubmit: (result: ApproveDialogResult) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function ApproveDialog({ open, onOpenChange, returnSteps, initialObservation, title, descriptions, setDefaultApproverOnInit, onSubmit, }: ApproveDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ApproverOption } from '../types';
|
|
2
|
+
interface SelectApproverDialogProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
approvers: ApproverOption[];
|
|
6
|
+
isLoading?: boolean;
|
|
7
|
+
ignoreUserIds?: string[];
|
|
8
|
+
onSubmit: (approver: ApproverOption) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function SelectApproverDialog({ open, onOpenChange, approvers, isLoading, ignoreUserIds, onSubmit, }: SelectApproverDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export declare enum ApprovalFlowReturnStep {
|
|
2
|
+
ApprovalFlow = 1,
|
|
3
|
+
Association = 2
|
|
4
|
+
}
|
|
5
|
+
/** Approver type: 1=User, 2=Group, 3=Place */
|
|
6
|
+
export type ApproverType = 1 | 2 | 3;
|
|
7
|
+
export interface ApprovalFlowInfo {
|
|
8
|
+
title?: string;
|
|
9
|
+
value: string;
|
|
10
|
+
icon?: string;
|
|
11
|
+
color?: string;
|
|
12
|
+
backgroundColor?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ApprovalFlowStepApprover {
|
|
15
|
+
id: string;
|
|
16
|
+
type: ApproverType;
|
|
17
|
+
name: string;
|
|
18
|
+
approverId: string;
|
|
19
|
+
identityId?: string;
|
|
20
|
+
approvedUsername?: string;
|
|
21
|
+
date?: Date | string;
|
|
22
|
+
observation?: string;
|
|
23
|
+
canApprove: boolean;
|
|
24
|
+
hasAccess: boolean;
|
|
25
|
+
returnObservation?: string;
|
|
26
|
+
returnDate?: Date | string;
|
|
27
|
+
returnUserId?: string;
|
|
28
|
+
photoUrl?: string;
|
|
29
|
+
readLess?: boolean;
|
|
30
|
+
isToBeDefined?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface ApprovalFlowStep {
|
|
33
|
+
id: string;
|
|
34
|
+
name: string;
|
|
35
|
+
allApprove: boolean;
|
|
36
|
+
description?: string;
|
|
37
|
+
index: number;
|
|
38
|
+
isCurrentStep: boolean;
|
|
39
|
+
returnUserName?: string;
|
|
40
|
+
returnDate?: Date | string;
|
|
41
|
+
returnObservation?: string;
|
|
42
|
+
approvers: ApprovalFlowStepApprover[];
|
|
43
|
+
returnObservationReadLess?: boolean;
|
|
44
|
+
readLess?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface ApprovalSidenavConfig {
|
|
47
|
+
associationId: string;
|
|
48
|
+
title: string;
|
|
49
|
+
color: string;
|
|
50
|
+
flowReproved: boolean;
|
|
51
|
+
returnSteps: ApprovalReturnStepOption[];
|
|
52
|
+
canApprove: boolean;
|
|
53
|
+
approvalFlowInfo: ApprovalFlowInfo[];
|
|
54
|
+
approvalFlowSteps: ApprovalFlowStep[];
|
|
55
|
+
approveDialogTitle?: string;
|
|
56
|
+
approveDialogDescriptions?: string[];
|
|
57
|
+
approveDialogSetDefaultApproverOnInit?: boolean;
|
|
58
|
+
}
|
|
59
|
+
export interface ApprovalReturnStepOption {
|
|
60
|
+
id: string;
|
|
61
|
+
name: string;
|
|
62
|
+
type: ApprovalFlowReturnStep;
|
|
63
|
+
}
|
|
64
|
+
export interface ApproveDialogResult {
|
|
65
|
+
approved: boolean;
|
|
66
|
+
returnStepId: string | null;
|
|
67
|
+
returnType: ApprovalFlowReturnStep | null;
|
|
68
|
+
observation: string;
|
|
69
|
+
}
|
|
70
|
+
export interface ApproverOption {
|
|
71
|
+
id: string;
|
|
72
|
+
name: string;
|
|
73
|
+
email?: string;
|
|
74
|
+
identityId?: number;
|
|
75
|
+
avatar?: string;
|
|
76
|
+
}
|
package/dist/assets/index.d.ts
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AuditTrailDetails
|
|
3
|
+
* Drawer/panel showing detail rows for a selected audit trail entry
|
|
4
|
+
* Ported from flc-audit-trail-details (v2) and qex-audit-trail-readable-details (v1)
|
|
5
|
+
*/
|
|
6
|
+
import type { AuditTrailDetails as AuditTrailDetailsType } from '../types';
|
|
7
|
+
import type { AuditTrailLabels } from '../utils';
|
|
8
|
+
export interface AuditTrailDetailsProps {
|
|
9
|
+
documentId: string | null;
|
|
10
|
+
onFetchDetails: (documentId: string) => Promise<AuditTrailDetailsType>;
|
|
11
|
+
onClose: () => void;
|
|
12
|
+
labels?: AuditTrailLabels;
|
|
13
|
+
translateProperty?: (eventName: string, propertyResource: string) => string;
|
|
14
|
+
translatePropertyValue?: (eventName: string, propertyResource: string, value: string) => string | null;
|
|
15
|
+
formatDate?: (date: string) => string;
|
|
16
|
+
}
|
|
17
|
+
export declare function AuditTrailDetails({ documentId, onFetchDetails, onClose, labels, translateProperty, translatePropertyValue, formatDate, }: AuditTrailDetailsProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AuditTrailFilter
|
|
3
|
+
* Horizontal filter bar for the audit trail page
|
|
4
|
+
* Ported from flc-audit-trail-filter (v2) and qex-audit-trail-readable-filter (v1)
|
|
5
|
+
*/
|
|
6
|
+
import type { AuditTrailEvent, AuditTrailQueryParams, AuditTrailSoftware, AuditTrailUserOption, AuditTrailPermissions } from '../types';
|
|
7
|
+
export interface AuditTrailFilterProps {
|
|
8
|
+
queryParams: AuditTrailQueryParams;
|
|
9
|
+
events: AuditTrailEvent[];
|
|
10
|
+
softwares: AuditTrailSoftware[];
|
|
11
|
+
users?: AuditTrailUserOption[];
|
|
12
|
+
permissions?: AuditTrailPermissions;
|
|
13
|
+
isLoading?: boolean;
|
|
14
|
+
onFilter: (params: AuditTrailQueryParams) => void;
|
|
15
|
+
onReset?: () => void;
|
|
16
|
+
onExport?: (format: 'csv' | 'pdf' | 'xlsx') => void;
|
|
17
|
+
onSoftwareChange?: (softwareId: number) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function AuditTrailFilter({ queryParams, events, softwares, users, permissions, isLoading, onFilter, onReset, onExport, onSoftwareChange, }: AuditTrailFilterProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AuditTrailPage
|
|
3
|
+
* Full audit trail page with grid, filters, and details drawer
|
|
4
|
+
* Ported from flc-audit-trail-list (v2) and qex-audit-trail-readable-list (v1)
|
|
5
|
+
*/
|
|
6
|
+
import type { AuditTrailCallbacks, AuditTrailPermissions, AuditTrailSoftware } from '../types';
|
|
7
|
+
import type { AuditTrailLabels } from '../utils';
|
|
8
|
+
export interface AuditTrailPageProps {
|
|
9
|
+
/** Page title */
|
|
10
|
+
title?: string;
|
|
11
|
+
/** Software options for filter */
|
|
12
|
+
softwares: AuditTrailSoftware[];
|
|
13
|
+
/** Initial software ID */
|
|
14
|
+
softwareId: number;
|
|
15
|
+
/** Permissions config */
|
|
16
|
+
permissions?: AuditTrailPermissions;
|
|
17
|
+
/** All callbacks for fetching data */
|
|
18
|
+
callbacks: AuditTrailCallbacks;
|
|
19
|
+
/** Initial query limit */
|
|
20
|
+
limit?: number;
|
|
21
|
+
/** Current user ID (for viewOnlyMyEvents) */
|
|
22
|
+
currentUserId?: string;
|
|
23
|
+
/** Custom labels for detail rows */
|
|
24
|
+
labels?: AuditTrailLabels;
|
|
25
|
+
/** Format date for display */
|
|
26
|
+
formatDate?: (date: string) => string;
|
|
27
|
+
/** Anonymous user label */
|
|
28
|
+
anonymousLabel?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function AuditTrailPage({ title, softwares, softwareId: initialSoftwareId, permissions, callbacks, limit, currentUserId, labels, formatDate, anonymousLabel, }: AuditTrailPageProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { AuditTrailPage } from './components/AuditTrailPage';
|
|
2
|
+
export type { AuditTrailPageProps } from './components/AuditTrailPage';
|
|
3
|
+
export { AuditTrailFilter } from './components/AuditTrailFilter';
|
|
4
|
+
export type { AuditTrailFilterProps } from './components/AuditTrailFilter';
|
|
5
|
+
export { AuditTrailDetails } from './components/AuditTrailDetails';
|
|
6
|
+
export type { AuditTrailDetailsProps } from './components/AuditTrailDetails';
|
|
7
|
+
export * from './types';
|
|
8
|
+
export { processTrails, buildDetailRows, camelToDash } from './utils';
|
|
9
|
+
export type { AuditTrailLabels } from './utils';
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Trail Types
|
|
3
|
+
* Ported from Angular v1 (qex-audit-trail-readable) and v2 (flc-audit-trail)
|
|
4
|
+
*/
|
|
5
|
+
export interface AuditTrail {
|
|
6
|
+
documentId: string;
|
|
7
|
+
eventName: string;
|
|
8
|
+
entityName: string;
|
|
9
|
+
entityTypeName: string;
|
|
10
|
+
software: string;
|
|
11
|
+
dateTime: string;
|
|
12
|
+
userEmail: string;
|
|
13
|
+
userName: string;
|
|
14
|
+
ip: string;
|
|
15
|
+
isMobileRequest: boolean;
|
|
16
|
+
eventId: number;
|
|
17
|
+
userIdentId: number;
|
|
18
|
+
translatedSoftware?: string;
|
|
19
|
+
user?: string;
|
|
20
|
+
translatedEvent?: string;
|
|
21
|
+
date?: Date;
|
|
22
|
+
eventDescription?: string;
|
|
23
|
+
userPhotoUrl?: string;
|
|
24
|
+
icon?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface AuditTrailDetails {
|
|
27
|
+
software: string;
|
|
28
|
+
dateTime: string;
|
|
29
|
+
userId: string;
|
|
30
|
+
userName: string;
|
|
31
|
+
userEmail: string;
|
|
32
|
+
associationId: string;
|
|
33
|
+
isMobileRequest: boolean;
|
|
34
|
+
commandIsSigned?: boolean;
|
|
35
|
+
method: string;
|
|
36
|
+
urlPath: string;
|
|
37
|
+
eventId: number;
|
|
38
|
+
eventName: string;
|
|
39
|
+
commandName: string;
|
|
40
|
+
ip: string;
|
|
41
|
+
entities: AuditTrailEntity[];
|
|
42
|
+
}
|
|
43
|
+
export interface AuditTrailEntity {
|
|
44
|
+
id: string;
|
|
45
|
+
code: string;
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
item: string;
|
|
49
|
+
date: Date;
|
|
50
|
+
typeId: number;
|
|
51
|
+
typeName: string;
|
|
52
|
+
extra?: AuditTrailExtraProperty[];
|
|
53
|
+
data: AuditTrailChangedProperty[];
|
|
54
|
+
association?: AuditTrailAssociation[];
|
|
55
|
+
isElectronicSigned?: boolean;
|
|
56
|
+
status?: number;
|
|
57
|
+
statusName?: string;
|
|
58
|
+
situation?: number;
|
|
59
|
+
justification?: string;
|
|
60
|
+
equipmentType?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface AuditTrailChangedProperty {
|
|
63
|
+
property: string;
|
|
64
|
+
propertyCustomName?: string;
|
|
65
|
+
oldValue: any;
|
|
66
|
+
newValue: any;
|
|
67
|
+
children?: AuditTrailChangedProperty[];
|
|
68
|
+
propertyResource?: string;
|
|
69
|
+
state: string;
|
|
70
|
+
tagTranslate?: string;
|
|
71
|
+
oldValueTagTranslate?: string;
|
|
72
|
+
details?: any;
|
|
73
|
+
}
|
|
74
|
+
export interface AuditTrailExtraProperty {
|
|
75
|
+
property: string;
|
|
76
|
+
value: string;
|
|
77
|
+
data?: any;
|
|
78
|
+
translate?: boolean;
|
|
79
|
+
}
|
|
80
|
+
export interface AuditTrailAssociation {
|
|
81
|
+
id: string;
|
|
82
|
+
code: string;
|
|
83
|
+
name: string;
|
|
84
|
+
status?: number;
|
|
85
|
+
softwareId?: number;
|
|
86
|
+
softwareName?: string;
|
|
87
|
+
type?: number | string;
|
|
88
|
+
association?: AuditTrailAssociation[];
|
|
89
|
+
}
|
|
90
|
+
export interface AuditTrailEvent {
|
|
91
|
+
id: number;
|
|
92
|
+
name: string;
|
|
93
|
+
translation: string;
|
|
94
|
+
softwareId: number;
|
|
95
|
+
}
|
|
96
|
+
export interface AuditTrailSoftware {
|
|
97
|
+
id: number;
|
|
98
|
+
name: string;
|
|
99
|
+
software: string;
|
|
100
|
+
translation: string;
|
|
101
|
+
}
|
|
102
|
+
export interface AuditTrailQueryParams {
|
|
103
|
+
software: string;
|
|
104
|
+
softwareId: number;
|
|
105
|
+
event: string;
|
|
106
|
+
eventId: number;
|
|
107
|
+
startDate: Date;
|
|
108
|
+
endDate: Date;
|
|
109
|
+
limit: number;
|
|
110
|
+
softwares: AuditTrailSoftware[];
|
|
111
|
+
userId?: string;
|
|
112
|
+
entityId?: string;
|
|
113
|
+
}
|
|
114
|
+
export interface AuditTrailPermissions {
|
|
115
|
+
viewAllEvents: boolean;
|
|
116
|
+
viewOnlyMyEvents: boolean;
|
|
117
|
+
download: boolean;
|
|
118
|
+
}
|
|
119
|
+
export interface AuditTrailUserOption {
|
|
120
|
+
id: string;
|
|
121
|
+
name: string;
|
|
122
|
+
email?: string;
|
|
123
|
+
avatar?: string;
|
|
124
|
+
}
|
|
125
|
+
export interface AuditTrailDetailRow {
|
|
126
|
+
name: string;
|
|
127
|
+
value: string;
|
|
128
|
+
}
|
|
129
|
+
export interface AuditTrailCallbacks {
|
|
130
|
+
/** Fetch trail list based on query params */
|
|
131
|
+
onFetchTrails: (params: AuditTrailQueryParams) => Promise<{
|
|
132
|
+
data: AuditTrail[];
|
|
133
|
+
totalRows: number;
|
|
134
|
+
}>;
|
|
135
|
+
/** Fetch events for a software */
|
|
136
|
+
onFetchEvents: (softwareId: number) => Promise<AuditTrailEvent[]>;
|
|
137
|
+
/** Fetch trail details by documentId */
|
|
138
|
+
onFetchDetails: (documentId: string) => Promise<AuditTrailDetails>;
|
|
139
|
+
/** Fetch user options for filter */
|
|
140
|
+
onFetchUsers?: () => Promise<AuditTrailUserOption[]>;
|
|
141
|
+
/** Export data (csv, pdf, xlsx) */
|
|
142
|
+
onExport?: (format: 'csv' | 'pdf' | 'xlsx', data: AuditTrail[]) => void;
|
|
143
|
+
/** Translate event name */
|
|
144
|
+
translateEvent?: (eventName: string, softwareName: string) => string;
|
|
145
|
+
/** Translate software name */
|
|
146
|
+
translateSoftware?: (softwareKey: string) => string;
|
|
147
|
+
/** Translate detail property */
|
|
148
|
+
translateProperty?: (eventName: string, propertyResource: string) => string;
|
|
149
|
+
/** Translate detail property value */
|
|
150
|
+
translatePropertyValue?: (eventName: string, propertyResource: string, value: string) => string | null;
|
|
151
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Trail Utilities
|
|
3
|
+
* Ported from Angular v1/v2 detail rendering logic
|
|
4
|
+
*/
|
|
5
|
+
import type { AuditTrail, AuditTrailDetails, AuditTrailDetailRow, AuditTrailEvent, AuditTrailSoftware } from './types';
|
|
6
|
+
/** Process raw trails: translate software/event, compute date, sort desc */
|
|
7
|
+
export declare function processTrails(trails: AuditTrail[], events: AuditTrailEvent[], softwares: AuditTrailSoftware[], anonymousLabel?: string): AuditTrail[];
|
|
8
|
+
export declare function translateEvent(eventName: string, events: AuditTrailEvent[]): string;
|
|
9
|
+
export declare function translateSoftware(software: string, softwares: AuditTrailSoftware[]): string;
|
|
10
|
+
/** Build detail rows from AuditTrailDetails (ported from v1/v2 addHeaderRow, addChangesRow, addFooterRow) */
|
|
11
|
+
export declare function buildDetailRows(details: AuditTrailDetails, options?: {
|
|
12
|
+
translateProperty?: (eventName: string, propertyResource: string) => string;
|
|
13
|
+
translatePropertyValue?: (eventName: string, propertyResource: string, value: string) => string | null;
|
|
14
|
+
formatDate?: (date: string) => string;
|
|
15
|
+
labels?: Partial<typeof DEFAULT_LABELS>;
|
|
16
|
+
}): AuditTrailDetailRow[];
|
|
17
|
+
export declare function camelToDash(str: string): string;
|
|
18
|
+
declare const DEFAULT_LABELS: {
|
|
19
|
+
readonly event: "Evento";
|
|
20
|
+
readonly entityName: "Item";
|
|
21
|
+
readonly description: "Descrição";
|
|
22
|
+
readonly justification: "Justificativa";
|
|
23
|
+
readonly status: "Status";
|
|
24
|
+
readonly type: "Tipo";
|
|
25
|
+
readonly references: "Referências";
|
|
26
|
+
readonly security: "Segurança";
|
|
27
|
+
readonly electronicSigned: "Assinatura Eletrônica";
|
|
28
|
+
readonly accomplishedBy: "Realizado por";
|
|
29
|
+
readonly accomplishedIn: "Realizado em";
|
|
30
|
+
readonly changedFrom: "de";
|
|
31
|
+
readonly changedTo: "para";
|
|
32
|
+
readonly uninformed: "Não informado";
|
|
33
|
+
readonly stateAdded: "(adicionado)";
|
|
34
|
+
readonly stateModified: "(modificado)";
|
|
35
|
+
readonly stateRemoved: "(removido)";
|
|
36
|
+
};
|
|
37
|
+
export type AuditTrailLabels = Partial<typeof DEFAULT_LABELS>;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type Dashboard, DashboardFormTab, DashboardShareType, DashboardUpdateTime, DashboardViewType, DashboardPageTime } from './types';
|
|
2
|
+
export interface DashboardFormValues {
|
|
3
|
+
titlePtBr: string;
|
|
4
|
+
titleEnUs: string;
|
|
5
|
+
titleEsEs: string;
|
|
6
|
+
responsibleId?: string;
|
|
7
|
+
isActive: boolean;
|
|
8
|
+
idUpdateTime: DashboardUpdateTime;
|
|
9
|
+
idViewType: DashboardViewType;
|
|
10
|
+
idPageTime: DashboardPageTime | null;
|
|
11
|
+
idShare: DashboardShareType;
|
|
12
|
+
groups?: string[];
|
|
13
|
+
places?: string[];
|
|
14
|
+
collaborators?: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface DashboardFormProps {
|
|
17
|
+
/** Existing dashboard for editing; null for creation */
|
|
18
|
+
dashboard?: Dashboard | null;
|
|
19
|
+
/** Initial tab (General or Share) */
|
|
20
|
+
initialTab?: DashboardFormTab;
|
|
21
|
+
/** Whether saving is in progress */
|
|
22
|
+
isSaving?: boolean;
|
|
23
|
+
/** Whether this is a "Qualitfy" standard dashboard (locks some fields) */
|
|
24
|
+
isQualitfy?: boolean;
|
|
25
|
+
/** Users list for owner selector */
|
|
26
|
+
users?: Array<{
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
}>;
|
|
30
|
+
/** Groups list for share section */
|
|
31
|
+
groups?: Array<{
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
}>;
|
|
35
|
+
/** Places list for share section */
|
|
36
|
+
places?: Array<{
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
}>;
|
|
40
|
+
/** Collaborators list for share section */
|
|
41
|
+
collaborators?: Array<{
|
|
42
|
+
id: string;
|
|
43
|
+
name: string;
|
|
44
|
+
}>;
|
|
45
|
+
/** Callbacks */
|
|
46
|
+
onSave?: (values: DashboardFormValues) => void;
|
|
47
|
+
onCancel?: () => void;
|
|
48
|
+
className?: string;
|
|
49
|
+
}
|
|
50
|
+
export declare function DashboardForm({ dashboard, initialTab, isSaving, isQualitfy, users, groups, places, collaborators, onSave, onCancel, className, }: DashboardFormProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type Dashboard, type DashboardPanel, type DashboardPage, type DashboardLimit, type GeneralViewDashboard, DashboardLanguage, QuickFilterDashboard } from './types';
|
|
3
|
+
import { type DashboardFormValues } from './dashboard-form';
|
|
4
|
+
import { type GridPanelLayout } from './dashboard-grid';
|
|
5
|
+
import { type DashboardPanelRendererProps } from './dashboard-panel-renderer';
|
|
6
|
+
export type DashboardViewState = {
|
|
7
|
+
mode: 'list';
|
|
8
|
+
} | {
|
|
9
|
+
mode: 'view';
|
|
10
|
+
dashboardId: string;
|
|
11
|
+
} | {
|
|
12
|
+
mode: 'create';
|
|
13
|
+
} | {
|
|
14
|
+
mode: 'edit';
|
|
15
|
+
dashboardId: string;
|
|
16
|
+
} | {
|
|
17
|
+
mode: 'share';
|
|
18
|
+
dashboardId: string;
|
|
19
|
+
};
|
|
20
|
+
export interface DashboardGeneralViewProps {
|
|
21
|
+
/** All dashboards for the list */
|
|
22
|
+
dashboards: Dashboard[];
|
|
23
|
+
/** Usage limits */
|
|
24
|
+
limit?: DashboardLimit;
|
|
25
|
+
/** General view config (default dashboard per software) */
|
|
26
|
+
generalView?: GeneralViewDashboard | null;
|
|
27
|
+
/** Current language */
|
|
28
|
+
language?: DashboardLanguage;
|
|
29
|
+
/** Whether the list/data is loading */
|
|
30
|
+
isLoading?: boolean;
|
|
31
|
+
canAdd?: boolean;
|
|
32
|
+
canEdit?: boolean;
|
|
33
|
+
canRemove?: boolean;
|
|
34
|
+
canEditStandard?: boolean;
|
|
35
|
+
/** Panels for the currently opened dashboard */
|
|
36
|
+
activePanels?: DashboardPanel[];
|
|
37
|
+
/** Pages for the currently opened dashboard (carousel mode) */
|
|
38
|
+
activePages?: DashboardPage[];
|
|
39
|
+
/** Per-panel data provider */
|
|
40
|
+
getPanelData?: (panelId: string) => Omit<DashboardPanelRendererProps, 'config'>;
|
|
41
|
+
/** Users for owner selector in form */
|
|
42
|
+
users?: Array<{
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
}>;
|
|
46
|
+
/** Groups for sharing */
|
|
47
|
+
groups?: Array<{
|
|
48
|
+
id: string;
|
|
49
|
+
name: string;
|
|
50
|
+
}>;
|
|
51
|
+
/** Places for sharing */
|
|
52
|
+
places?: Array<{
|
|
53
|
+
id: string;
|
|
54
|
+
name: string;
|
|
55
|
+
}>;
|
|
56
|
+
/** Collaborators for sharing */
|
|
57
|
+
collaborators?: Array<{
|
|
58
|
+
id: string;
|
|
59
|
+
name: string;
|
|
60
|
+
}>;
|
|
61
|
+
/** Whether the form is saving */
|
|
62
|
+
isSaving?: boolean;
|
|
63
|
+
/** Called when a dashboard is opened for viewing */
|
|
64
|
+
onOpen?: (dashboard: Dashboard) => void;
|
|
65
|
+
/** Called when navigating back to list */
|
|
66
|
+
onBackToList?: () => void;
|
|
67
|
+
/** Called to refresh the current dashboard data */
|
|
68
|
+
onRefresh?: () => void;
|
|
69
|
+
/** Called to refresh the dashboard list */
|
|
70
|
+
onRefreshList?: () => void;
|
|
71
|
+
/** Called on toggling favorite */
|
|
72
|
+
onToggleFavorite?: (dashboard: Dashboard) => void;
|
|
73
|
+
/** Called when creating a new dashboard */
|
|
74
|
+
onSave?: (values: DashboardFormValues) => void;
|
|
75
|
+
/** Called when updating an existing dashboard */
|
|
76
|
+
onUpdate?: (dashboardId: string, values: DashboardFormValues) => void;
|
|
77
|
+
/** Called to remove a dashboard */
|
|
78
|
+
onRemove?: (dashboard: Dashboard) => void;
|
|
79
|
+
/** Called to duplicate a dashboard */
|
|
80
|
+
onDuplicate?: (dashboard: Dashboard) => void;
|
|
81
|
+
/** Called when sharing a dashboard */
|
|
82
|
+
onShare?: (dashboard: Dashboard) => void;
|
|
83
|
+
/** Called on panel add */
|
|
84
|
+
onAddPanel?: () => void;
|
|
85
|
+
/** Called on panel edit */
|
|
86
|
+
onEditPanel?: (panelId: string) => void;
|
|
87
|
+
/** Called on panel remove */
|
|
88
|
+
onRemovePanel?: (panelId: string) => void;
|
|
89
|
+
/** Called on panel duplicate */
|
|
90
|
+
onDuplicatePanel?: (panelId: string) => void;
|
|
91
|
+
/** Called when layout changes via DnD */
|
|
92
|
+
onLayoutChange?: (panels: GridPanelLayout[]) => void;
|
|
93
|
+
/** Called when search text changes in the list */
|
|
94
|
+
onSearch?: (search: string) => void;
|
|
95
|
+
/** Called when quick filter changes */
|
|
96
|
+
onQuickFilterChange?: (filter: QuickFilterDashboard) => void;
|
|
97
|
+
/** Called to set as general view */
|
|
98
|
+
onSetGeneralView?: (dashboardId: string) => void;
|
|
99
|
+
/** Controlled view state (optional — component manages its own state if not provided) */
|
|
100
|
+
viewState?: DashboardViewState;
|
|
101
|
+
/** Called when view state changes (for controlled mode) */
|
|
102
|
+
onViewStateChange?: (state: DashboardViewState) => void;
|
|
103
|
+
/** Custom toolbar actions for the list view */
|
|
104
|
+
listToolbarExtra?: ReactNode;
|
|
105
|
+
/** Custom toolbar actions for the dashboard view */
|
|
106
|
+
viewToolbarActions?: ReactNode;
|
|
107
|
+
className?: string;
|
|
108
|
+
}
|
|
109
|
+
export declare function DashboardGeneralView({ dashboards, limit, generalView, language, isLoading, canAdd, canEdit, canRemove, canEditStandard, activePanels, activePages, getPanelData, users, groups, places, collaborators, isSaving, onOpen, onBackToList, onRefresh, onRefreshList, onToggleFavorite, onSave, onUpdate, onRemove, onDuplicate, onShare, onAddPanel, onEditPanel, onRemovePanel, onDuplicatePanel, onLayoutChange, onSearch, onQuickFilterChange, onSetGeneralView, viewState: controlledViewState, onViewStateChange, listToolbarExtra, viewToolbarActions, className, }: DashboardGeneralViewProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { DashboardPanelType } from './types';
|
|
3
|
+
export interface GridPanelLayout {
|
|
4
|
+
id: string;
|
|
5
|
+
col: number;
|
|
6
|
+
row: number;
|
|
7
|
+
sizeX: number;
|
|
8
|
+
sizeY: number;
|
|
9
|
+
minSizeX?: number;
|
|
10
|
+
minSizeY?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface DashboardGridProps {
|
|
13
|
+
/**
|
|
14
|
+
* Panel layout definitions. Each panel gets positioned in an 8-column grid.
|
|
15
|
+
*/
|
|
16
|
+
panels: GridPanelLayout[];
|
|
17
|
+
/** Number of grid columns (default: 8, matching legacy) */
|
|
18
|
+
columns?: number;
|
|
19
|
+
/** Cell height in pixels (default: 160) */
|
|
20
|
+
cellHeight?: number;
|
|
21
|
+
/** Gap between cells in pixels (default: 10) */
|
|
22
|
+
cellGap?: number;
|
|
23
|
+
/** Allow drag-and-drop reordering */
|
|
24
|
+
allowDragging?: boolean;
|
|
25
|
+
/** Show grid lines behind panels */
|
|
26
|
+
showGridLines?: boolean;
|
|
27
|
+
/** Render the content for each panel */
|
|
28
|
+
renderPanel: (panelId: string) => ReactNode;
|
|
29
|
+
/** Called after drag completes with the new order of panel IDs */
|
|
30
|
+
onLayoutChange?: (panels: GridPanelLayout[]) => void;
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function getDefaultPanelSize(panelType: DashboardPanelType): {
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
};
|
|
37
|
+
export declare function getMinPanelSize(panelType: DashboardPanelType): {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
};
|
|
41
|
+
export declare function DashboardGrid({ panels, columns, cellHeight, cellGap, allowDragging, showGridLines, renderPanel, onLayoutChange, className, }: DashboardGridProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type Dashboard, type DashboardLimit, QuickFilterDashboard, DashboardLanguage } from './types';
|
|
3
|
+
export interface DashboardListProps {
|
|
4
|
+
/** List of dashboards to display */
|
|
5
|
+
dashboards: Dashboard[];
|
|
6
|
+
/** Dashboard usage limits */
|
|
7
|
+
limit?: DashboardLimit;
|
|
8
|
+
/** Loading state */
|
|
9
|
+
isLoading?: boolean;
|
|
10
|
+
/** Current user language for title resolution */
|
|
11
|
+
language?: DashboardLanguage;
|
|
12
|
+
/** Permissions */
|
|
13
|
+
canAdd?: boolean;
|
|
14
|
+
canEdit?: boolean;
|
|
15
|
+
canRemove?: boolean;
|
|
16
|
+
/** Callbacks */
|
|
17
|
+
onOpen?: (dashboard: Dashboard) => void;
|
|
18
|
+
onEdit?: (dashboard: Dashboard) => void;
|
|
19
|
+
onShare?: (dashboard: Dashboard) => void;
|
|
20
|
+
onDuplicate?: (dashboard: Dashboard) => void;
|
|
21
|
+
onRemove?: (dashboard: Dashboard) => void;
|
|
22
|
+
onAdd?: () => void;
|
|
23
|
+
onToggleFavorite?: (dashboard: Dashboard) => void;
|
|
24
|
+
onRefresh?: () => void;
|
|
25
|
+
onSearch?: (search: string) => void;
|
|
26
|
+
onQuickFilterChange?: (filter: QuickFilterDashboard) => void;
|
|
27
|
+
/** Custom toolbar actions */
|
|
28
|
+
toolbarExtra?: ReactNode;
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function DashboardList({ dashboards, limit, isLoading, language, canAdd, canEdit, canRemove, onOpen, onEdit, onShare, onDuplicate, onRemove, onAdd, onToggleFavorite, onRefresh, onSearch, onQuickFilterChange, toolbarExtra, className, }: DashboardListProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type PanelConfig, type PanelResult, PanelState } from './types';
|
|
3
|
+
import { type ListPanelColumn, type BurndownDataPoint, type PerformanceDataPoint, type MatrixRule, type MatrixRisk, type CartesianSeries } from './panels';
|
|
4
|
+
export interface DashboardPanelRendererProps {
|
|
5
|
+
config: PanelConfig;
|
|
6
|
+
state: PanelState;
|
|
7
|
+
data?: PanelResult[];
|
|
8
|
+
/** Numeric panel value */
|
|
9
|
+
numericValue?: number | string | null;
|
|
10
|
+
/** Extra data for specialized panels */
|
|
11
|
+
listColumns?: ListPanelColumn[];
|
|
12
|
+
cartesianData?: Record<string, unknown>[];
|
|
13
|
+
cartesianSeries?: CartesianSeries[];
|
|
14
|
+
burndownData?: BurndownDataPoint[];
|
|
15
|
+
performanceData?: PerformanceDataPoint[];
|
|
16
|
+
matrixRule?: MatrixRule;
|
|
17
|
+
matrixRisks?: MatrixRisk[];
|
|
18
|
+
/** Callbacks */
|
|
19
|
+
onPanelClick?: (data: Record<string, unknown>) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function DashboardPanelRenderer({ config, state, data, numericValue, listColumns, cartesianData, cartesianSeries, burndownData, performanceData, matrixRule, matrixRisks, onPanelClick, }: DashboardPanelRendererProps): ReactNode;
|