@solidxai/core-ui 0.1.8-beta.4 → 0.1.8-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +19 -16
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +14 -12
- package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidForgotPassword.js +1 -1
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidForgotPassword.tsx +1 -0
- package/dist/components/common/SolidAdmin.js +1 -1
- package/dist/components/common/SolidAdmin.js.map +1 -1
- package/dist/components/common/SolidAdmin.tsx +1 -1
- package/dist/components/common/solidModuleHome.module.css +1 -2
- package/dist/components/core/card/SolidCardView.js +1 -1
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +1 -1
- package/dist/components/core/chatter/chatter.module.css +3 -3
- package/dist/components/core/common/PDFViewer.js +1 -1
- package/dist/components/core/common/PDFViewer.js.map +1 -1
- package/dist/components/core/common/PDFViewer.tsx +2 -2
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +3 -4
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js +2 -2
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js.map +1 -1
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.tsx +2 -2
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js +2 -2
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js.map +1 -1
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.tsx +2 -2
- package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.tsx +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js.map +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.tsx +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.js +7 -1
- package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.tsx +7 -1
- package/dist/components/core/form/fields/SolidEmailField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidEmailField.js +5 -4
- package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
- package/dist/components/core/form/fields/SolidEmailField.tsx +17 -15
- package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.js +5 -4
- package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.tsx +3 -1
- package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.js +8 -6
- package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.tsx +7 -1
- package/dist/components/core/form/fields/solidFields.module.css +0 -3
- package/dist/components/core/kanban/SolidKanbanView.js +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +1 -1
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +2 -1
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +2 -1
- package/dist/components/core/solid-ai/SolidAiChat.module.css +3 -3
- package/dist/components/core/tree/SolidTreeView.js +1 -1
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.js +12 -2
- package/dist/components/shad-cn-ui/SolidDatePicker.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.tsx +13 -2
- package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidTabs.js +6 -3
- package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidTabs.tsx +53 -25
- package/dist/resources/globals.css +7 -7
- package/dist/resources/images/Background.svg +3 -5
- package/dist/resources/images/Navigation/SolidSettinsIcon.svg +3 -5
- package/dist/resources/images/errors/error.svg +12 -14
- package/dist/resources/shadcn-base.css +43 -39
- package/dist/resources/themes/solid-dark-purple/theme.css +23 -33
- package/dist/resources/themes/solid-light-purple/theme.css +31 -31
- package/dist/routes/SolidLayoutRegistry.d.ts.map +1 -1
- package/dist/routes/SolidLayoutRegistry.js +3 -1
- package/dist/routes/SolidLayoutRegistry.js.map +1 -1
- package/dist/routes/SolidLayoutRegistry.tsx +3 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidTreeView.js","sourceRoot":"","sources":["../../../../src/components/core/tree/SolidTreeView.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ChevronLeft, ChevronRight, EllipsisVertical, Pencil, Plus, RefreshCw, Search, Trash2 } from \"lucide-react\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport { useGetSolidViewLayoutQuery } from \"../../../redux/api/solidViewApi\";\nimport qs from \"qs\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { SolidGlobalSearchElement } from \"../common/SolidGlobalSearchElement\";\nimport { permissionExpression } from \"../../../helpers/permissions\";\nimport { SolidCreateButton } from \"../common/SolidCreateButton\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport { AggregationRule, GroupingRule } from \"../common/GroupingComponent\";\nimport { SolidListViewColumn } from \"../list/SolidListViewColumn\";\nimport { hasAnyRole } from \"../../../helpers/rolesHelper\";\nimport { useSession } from \"../../../hooks/useSession\";\nimport { useLazyCheckIfPermissionExistsQuery } from \"../../../redux/api/userApi\";\nimport { SolidListViewConfigure } from \"../list/SolidListViewConfigure\";\nimport CompactImage from '../../../resources/images/layout/images/compact.png';\nimport CozyImage from '../../../resources/images/layout/images/cozy.png';\nimport ComfortableImage from '../../../resources/images/layout/images/comfortable.png';\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { getFilterObjectFromLocalStorage, setFilterObjectToLocalStorage } from \"../list/SolidListView\";\nimport { SolidBeforeTreeNodeLoad } from \"../../../types\";\nimport { getExtensionFunction } from \"../../../helpers/registry\";\nimport { SolidTreeLoad, SolidTreeUiEventResponse } from \"../../../types/solid-core\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { normalizeSolidListTreeKanbanActionPath } from \"../../../helpers/routePaths\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useHandleListCustomButtonClick } from \"../../../components/common/useHandleListCustomButtonClick\";\nimport { SolidButton, SolidDialog, SolidDialogBody, SolidDialogDescription, SolidDialogFooter, SolidDialogHeader, SolidDialogSeparator, SolidDialogTitle, SolidDropdownMenu, SolidDropdownMenuContent, SolidDropdownMenuItem, SolidDropdownMenuSeparator, SolidDropdownMenuTrigger, SolidIcon } from \"../../shad-cn-ui\";\nimport { SolidHeaderRequestStatus } from \"../../common/SolidHeaderRequestStatus\";\nimport { Column as SolidTreeColumn, SolidTreeNode as TreeNode, SolidTreeSelectionKeys, SolidTreeTable } from \"./SolidTreeTable\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype SolidTreeViewParams = {\n moduleName: string;\n modelName: string;\n inlineCreate?: boolean;\n handlePopUpOpen?: any;\n embeded?: boolean;\n customLayout?: any;\n customFilter?: any;\n};\n\nexport type SolidTreeViewHandle = {\n refresh: () => void;\n clearFilters: () => void;\n applyFilter: (filter: {\n custom_filter_predicate?: any;\n search_predicate?: any;\n saved_filter_predicate?: any;\n predefined_search_predicate?: any;\n }) => void;\n setPagination: (nextFirst: number, nextRows: number) => void;\n setSort: (nextSortField: string, nextSortOrder: 1 | -1 | 0) => void;\n setShowArchived: (value: boolean) => void;\n getState: () => {\n first: number;\n rows: number;\n sortField: string;\n sortOrder: 1 | -1 | 0;\n showArchived: boolean;\n filters: any;\n filterPredicates: any;\n listData: any[];\n totalRecords: number;\n loading: boolean;\n };\n};\n\ntype GroupPathItem = {\n ruleIndex: number;\n fieldName: string;\n filterField: string;\n value: any;\n dateGranularity?: string | null;\n};\n\ntype NodeMeta = {\n nodeType: \"group\" | \"record\";\n ruleIndex: number;\n groupLabel?: string;\n idCount?: number | string;\n aggregates?: Record<string, any>;\n groupPath: GroupPathItem[];\n};\n\ntype TreeRowData = Record<string, any> & {\n __treeMeta?: NodeMeta;\n};\n\n/**\n * Pagination entry stored per node key.\n * - \"root\" is used for the top-level group list.\n * - Any other node.key is used for its children (groups or records).\n */\ntype PaginationEntry = {\n offset: number; // current page start\n limit: number; // page size\n total: number; // total items returned from API (used to determine hasNext)\n};\n\nconst DEFAULT_PAGE_SIZE = 25;\nconst DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\nconst resolveDefaultPageSize = (options: number[]) => (\n options.includes(DEFAULT_PAGE_SIZE) ? DEFAULT_PAGE_SIZE : options[0]\n);\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport const SolidTreeView = forwardRef<SolidTreeViewHandle, SolidTreeViewParams>((params, ref) => {\n const dispatch = useDispatch();\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const searchParams = useSearchParams();\n\n const session = useSession();\n const router = useRouter()\n const user = session?.data?.user;\n\n const pathname = usePathname();\n const solidGlobalSearchElementRef = useRef<any>(null);\n\n const [showSaveFilterPopup, setShowSaveFilterPopup] = useState<boolean>(false);\n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n const [toPopulate, setToPopulate] = useState<string[]>([]);\n const [toPopulateMedia, setToPopulateMedia] = useState<string[]>([]);\n const [actionsAllowed, setActionsAllowed] = useState<string[]>([]);\n const [createActionQueryParams, setCreateActionQueryParams] = useState<Record<string, string>>({});\n const [editActionQueryParams, setEditActionQueryParams] = useState<Record<string, string>>({});\n\n const [selectedRecords, setSelectedRecords] = useState<any[]>([]);\n const [selectedRecoverRecords, setSelectedRecoverRecords] = useState<any[]>([]);\n\n\n const [groupingRules, setGroupingRules] = useState<GroupingRule[]>([]);\n const [aggregationRules, setAggregationRules] = useState<AggregationRule[]>([]);\n\n const [treeNodes, setTreeNodes] = useState<TreeNode[]>([]);\n const [selectedNodeKeys, setSelectedNodeKeys] = useState<SolidTreeSelectionKeys>({});\n const [expandedKeys, setExpandedKeys] = useState<any>({});\n const [treeLoading, setTreeLoading] = useState<boolean>(false);\n\n const [sortField, setSortField] = useState<string>(\"\");\n const [sortOrder, setSortOrder] = useState<number>(0);\n\n const [pageSizeOptions, setPageSizeOptions] = useState<number[]>([10, 25, 50]);\n const [globalLimit, setGlobalLimit] = useState<number>(25);\n\n const [isDeleteRecordsDialogVisible, setDeleteRecordsDialogVisible] = useState(false);\n const [isRecoverDialogVisible, setRecoverDialogVisible] = useState(false);\n const [showArchived, setShowArchived] = useState(false);\n\n\n const [createButtonUrl, setCreateButtonUrl] = useState<string>();\n const [editButtonUrl, setEditButtonUrl] = useState<string>();\n const [isDraftPublishWorkflowEnabled, setIsDraftPublishWorkflowEnabled] = useState(false);\n\n\n\n\n\n const sizeOptions = [\n { label: \"Compact\", value: \"small\", image: CompactImage },\n { label: \"Cozy\", value: \"normal\", image: CozyImage },\n { label: \"Comfortable\", value: \"large\", image: ComfortableImage },\n ];\n\n const [size, setSize] = useState<string | any>(sizeOptions[1].value);\n const [viewModes, setViewModes] = useState<any>([]);\n\n const headerRequestStatusLabel = treeLoading ? \"Loading...\" : null;\n\n\n // ── Pagination state ──────────────────────────────────────────────────────\n /**\n * Key: \"root\" for top-level group list; node.key (string) for any other node.\n * Value: { offset, limit, total }\n */\n const [paginationMap, setPaginationMap] = useState<Record<string, PaginationEntry>>({});\n\n const getPagination = (key: string, map = paginationMap): PaginationEntry =>\n map[key] ?? { offset: 0, limit: globalLimit, total: 0 };\n\n const setPagination = (key: string, entry: Partial<PaginationEntry>) =>\n setPaginationMap((prev) => {\n const current = getPagination(key, prev);\n return {\n ...prev,\n [key]: { ...current, ...entry },\n };\n });\n\n // ── Pagination helpers ────────────────────────────────────────────────────\n\n const hasPrev = (key: string) => getPagination(key).offset > 0;\n\n const hasNext = (key: string) => {\n const { offset, limit, total } = getPagination(key);\n // total here is the count of records returned by the last fetch for that node.\n // We consider \"has next\" when we received a full page (i.e. there might be more).\n return offset + limit < total;\n };\n\n // ─────────────────────────────────────────────────────────────────────────\n\n const menuItemId = searchParams.get(\"menuItemId\");\n const menuItemName = searchParams.get(\"menuItemName\");\n const actionId = searchParams.get(\"actionId\");\n const actionName = searchParams.get(\"actionName\");\n\n const entityApi = createSolidEntityApi(params.modelName);\n const {\n useCreateSolidEntityMutation,\n useDeleteMultipleSolidEntitiesMutation,\n useDeleteSolidEntityMutation,\n useGetSolidEntitiesQuery,\n useGetSolidEntityByIdQuery,\n useLazyGetSolidEntitiesQuery,\n useLazyGetSolidEntityByIdQuery,\n usePrefetch,\n useUpdateSolidEntityMutation,\n useRecoverSolidEntityByIdQuery,\n useLazyRecoverSolidEntityByIdQuery,\n useRecoverSolidEntityMutation,\n } = entityApi;\n\n const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();\n\n const [\n triggerRecoverSolidEntitiesById,\n {\n data: recoverByIdData,\n isLoading: recoverByIdIsLoading,\n error: recoverByIdError,\n isError: recoverByIdIsError,\n isSuccess: recoverByIdIsSuccess,\n },\n ] = useLazyRecoverSolidEntityByIdQuery();\n\n const [\n triggerRecoverSolidEntities,\n {\n data: recoverByData,\n isLoading: recoverByIsLoading,\n error: recoverError,\n isError: recoverIsError,\n isSuccess: recoverByIsSuccess,\n },\n ] = useRecoverSolidEntityMutation();\n\n\n\n const treeViewMetaDataQs = qs.stringify(\n {\n modelName: params.modelName,\n moduleName: params.moduleName,\n viewType: \"tree\",\n menuItemId,\n menuItemName,\n actionId,\n actionName,\n },\n { encodeValuesOnly: true }\n );\n\n const { data: solidTreeViewMetaData } = useGetSolidViewLayoutQuery(treeViewMetaDataQs);\n const solidTreeViewLayout = params.customLayout || solidTreeViewMetaData?.data?.solidView?.layout;\n\n const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();\n\n useEffect(() => {\n const fetchPermissions = async () => {\n if (params.modelName) {\n const permissionNames = [\n permissionExpression(params.modelName, 'create'),\n permissionExpression(params.modelName, 'delete'),\n permissionExpression(params.modelName, 'update'),\n permissionExpression(params.modelName, 'deleteMany'),\n permissionExpression(params.modelName, 'findOne'),\n permissionExpression(params.modelName, 'findMany'),\n permissionExpression(params.modelName, 'insertMany'),\n permissionExpression('importTransaction', 'create'),\n permissionExpression('exportTransaction', 'create'),\n permissionExpression('userViewMetadata', 'create'),\n permissionExpression('savedFilters', 'create')\n ];\n const queryData = {\n permissionNames: permissionNames,\n };\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n const response = await triggerCheckIfPermissionExists(queryString);\n setActionsAllowed(response.data.data);\n }\n };\n fetchPermissions();\n }, [params.modelName]);\n\n\n // set layout and actions for create and edit buttons and view modes\n useEffect(() => {\n if (solidTreeViewLayout) {\n const listLayoutAttrs = solidTreeViewLayout.attrs;\n const createActionUrl = listLayoutAttrs?.createAction && listLayoutAttrs?.createAction?.type === \"custom\" ? listLayoutAttrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = listLayoutAttrs?.editAction && listLayoutAttrs?.editAction?.type === \"custom\" ? listLayoutAttrs?.editAction?.customComponent : \"form\";\n\n if (listLayoutAttrs?.createAction) {\n setCreateActionQueryParams({\n actionName: listLayoutAttrs.createAction.name,\n actionType: listLayoutAttrs.createAction.type,\n actionContext: listLayoutAttrs.createAction.context,\n });\n }\n if (listLayoutAttrs?.editAction) {\n setEditActionQueryParams({\n actionName: listLayoutAttrs.editAction.name,\n actionType: listLayoutAttrs.editAction.type,\n actionContext: listLayoutAttrs.editAction.context,\n });\n }\n\n // const viewModes = listLayoutAttrs?.allowedViews && listLayoutAttrs?.allowedViews.length > 0 && listLayoutAttrs?.allowedViews.map((view: any) => { return { label: capitalize(view), value: view }; });\n setViewModes(solidTreeViewMetaData?.data?.viewModes);\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl);\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl);\n }\n setIsDraftPublishWorkflowEnabled(solidTreeViewMetaData?.data?.solidView?.model?.draftPublishWorkflow === true);\n }\n }, [solidTreeViewLayout]);\n\n\n\n const editBaseUrl = useMemo(\n () => normalizeSolidListTreeKanbanActionPath(pathname, editButtonUrl || \"form\"),\n [editButtonUrl, pathname]\n );\n\n const [\n deleteSolidSingleEntiry,\n { isSuccess: isDeleteSolidSingleEntitySuccess },\n ] = useDeleteSolidEntityMutation();\n\n // Delete mutation\n const [\n deleteManySolidEntities,\n {\n isLoading: isSolidEntitiesDeleted,\n isSuccess: isDeleteSolidEntitiesSucess,\n isError: isSolidEntitiesDeleteError,\n error: SolidEntitiesDeleteError,\n data: DeletedSolidEntities,\n },\n ] = useDeleteMultipleSolidEntitiesMutation();\n\n\n\n const treeViewTitle = solidTreeViewMetaData?.data?.solidView?.displayName;\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar());\n } else {\n dispatch(showNavbar());\n }\n };\n\n const [filters, setFilters] = useState<any>(null);\n const [filterPredicates, setFilterPredicates] = useState<any>(null);\n\n const latestFiltersRef = useRef<any>(filters);\n const latestFilterPredicatesRef = useRef<any>(filterPredicates);\n\n const activeGroupingRules = useMemo(\n () => (groupingRules || []).filter((rule) => !!rule?.fieldName),\n [groupingRules]\n );\n\n useEffect(() => { latestFiltersRef.current = filters; }, [filters]);\n useEffect(() => { latestFilterPredicatesRef.current = filterPredicates; }, [filterPredicates]);\n\n useEffect(() => {\n if (solidTreeViewMetaData) {\n setViewModes(solidTreeViewMetaData?.data?.viewModes);\n }\n }, [solidTreeViewMetaData]);\n\n useEffect(() => {\n const solidFieldsMetadata = solidTreeViewMetaData?.data?.solidFieldsMetadata;\n const queryObject = getFilterObjectFromLocalStorage();\n\n const layoutPageSizeOptions = solidTreeViewMetaData?.data?.solidView?.layout?.attrs?.pageSizeOptions;\n const currentOptions = (Array.isArray(layoutPageSizeOptions) && layoutPageSizeOptions.length > 0)\n ? layoutPageSizeOptions\n : DEFAULT_PAGE_SIZE_OPTIONS;\n\n setPageSizeOptions(currentOptions);\n\n if (queryObject) {\n setToPopulate(queryObject.populate || []);\n setToPopulateMedia(queryObject.populateMedia || []);\n setSortField(queryObject.sortField || \"\");\n setSortOrder(queryObject.sortOrder || 0);\n\n const savedLimit = queryObject.limit;\n if (savedLimit && currentOptions.includes(savedLimit)) {\n setGlobalLimit(savedLimit);\n } else {\n setGlobalLimit(resolveDefaultPageSize(currentOptions));\n }\n }\n else {\n if (!solidTreeViewLayout || !solidFieldsMetadata) {\n setToPopulate([]);\n setToPopulateMedia([]);\n setGlobalLimit(resolveDefaultPageSize(currentOptions));\n return;\n }\n\n const nextPopulate: string[] = [];\n const nextPopulateMedia: string[] = [];\n\n for (const column of solidTreeViewLayout?.children || []) {\n const fieldMetadata = solidFieldsMetadata?.[column?.attrs?.name];\n if (!fieldMetadata) continue;\n\n if (fieldMetadata.type === \"relation\" && fieldMetadata.relationType === \"many-to-one\") {\n if (!nextPopulate.includes(fieldMetadata.name)) nextPopulate.push(fieldMetadata.name);\n }\n if (fieldMetadata.type === \"mediaSingle\" || fieldMetadata.type === \"mediaMultiple\") {\n if (!nextPopulateMedia.includes(fieldMetadata.name)) nextPopulateMedia.push(fieldMetadata.name);\n }\n }\n\n setToPopulate(nextPopulate);\n setToPopulateMedia(nextPopulateMedia);\n setGlobalLimit(resolveDefaultPageSize(currentOptions));\n }\n }, [solidTreeViewLayout, solidTreeViewMetaData]);\n\n useEffect(() => {\n\n // event invocation is not tested\n if (solidTreeViewMetaData && solidTreeViewMetaData?.data) {\n const handleDynamicFunction = async () => {\n const dynamicHeader = solidTreeViewMetaData?.data?.solidView?.layout?.onTreeLoad;\n let dynamicExtensionFunction = null;\n let treeLayout = solidTreeViewMetaData?.data?.solidView?.layout;\n let treeViewNodes = treeNodes;\n if (params.customLayout) {\n treeLayout = params.customLayout;\n }\n const event: SolidTreeLoad = {\n fieldsMetadata: solidTreeViewMetaData?.data?.solidFieldsMetadata,\n type: \"onTreeLoad\",\n nodes: treeViewNodes,\n viewMetadata: solidTreeViewMetaData?.data?.solidView,\n treeViewLayout: treeLayout,\n queryParams: {\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n user: user,\n session: session.data,\n params: params\n };\n\n if (dynamicHeader) {\n dynamicExtensionFunction = getExtensionFunction(dynamicHeader);\n if (dynamicExtensionFunction) {\n const updatedListData: SolidTreeUiEventResponse = await dynamicExtensionFunction(event);\n\n if (updatedListData && updatedListData?.dataChanged && updatedListData?.newNodes) {\n treeViewNodes = updatedListData.newNodes;\n }\n if (updatedListData && updatedListData?.layoutChanged && updatedListData?.newLayout) {\n treeLayout = updatedListData.newLayout;\n }\n }\n if (treeViewNodes) {\n setTreeNodes(treeViewNodes);\n }\n if (treeLayout) {\n solidTreeViewLayout(treeLayout);\n }\n }\n };\n handleDynamicFunction();\n }\n\n }, [treeNodes]);\n\n\n // ─── Field / filter helpers ───────────────────────────────────────────────\n\n const getFieldMetadata = (fieldName: string) =>\n solidTreeViewMetaData?.data?.solidFieldsMetadata?.[fieldName];\n\n const getResolvedGroupField = (fieldName: string) => {\n const fieldMetadata = getFieldMetadata(fieldName);\n if (\n fieldMetadata?.type === \"relation\" &&\n fieldMetadata?.relationType === \"many-to-one\" &&\n fieldMetadata?.relationModel?.userKeyField?.name\n ) {\n return `${fieldName}.${fieldMetadata.relationModel.userKeyField.name}`;\n }\n return fieldName;\n };\n\n const toGroupByParam = (rule: GroupingRule) => {\n const fieldName = String(rule.fieldName);\n const resolvedField = getResolvedGroupField(fieldName);\n if (!rule.dateGrouping) return resolvedField;\n if (rule.dateGrouping === \"YYYY\") return `${resolvedField}:year:YYYY`;\n if (rule.dateGrouping === \"MMM\") return `${resolvedField}:month:MMM`;\n if (rule.dateGrouping === \"YYYY-MM\") return `${resolvedField}:month:YYYY-MM`;\n if (rule.dateGrouping === \"YYYY-MM-DD\") return `${resolvedField}:day:YYYY-MM-DD`;\n return resolvedField;\n };\n\n // const dateTimeImplicitFilter = (rule: GroupingRule) => {\n // const fieldMetadata = getFieldMetadata(String(rule.fieldName));\n // return !!rule.dateGrouping && [\"date\", \"datetime\"].includes(fieldMetadata?.type);\n // };\n\n const getDateGranularity = (rule: GroupingRule) => {\n const fieldMetadata = getFieldMetadata(String(rule.fieldName));\n if (rule.dateGrouping && [\"date\", \"datetime\"].includes(fieldMetadata?.type)) {\n switch (rule.dateGrouping) {\n case \"YYYY\":\n return \"year\";\n case \"MMM\":\n return \"month\";\n case \"YYYY-MM\":\n return \"month\";\n case \"YYYY-MM-DD\":\n return \"day\";\n }\n }\n return null;\n }\n\n const buildNestedEqCondition = (fieldPath: string, value: any, dateGranularity: any) => {\n const parts = fieldPath.split(\".\").filter(Boolean);\n if (parts.length === 0) return {};\n if (dateGranularity) {\n return { [`${parts[0]}:${dateGranularity}`]: { $eq: value } };\n }\n return parts.reduceRight((acc: any, part: string) => ({ [part]: acc }), { $eq: value });\n };\n\n const buildImplicitFiltersFromPath = (groupPath: GroupPathItem[]) =>\n groupPath\n // .filter((item) => !item.skipImplicitFilter)\n .map((item) => buildNestedEqCondition(item.filterField, item.value, item.dateGranularity));\n\n const mergeFiltersWithImplicit = (implicitFilters: any[]) => {\n const baseFilters = latestFiltersRef.current;\n const hasBaseFilters = baseFilters && Object.keys(baseFilters).length > 0;\n if (!hasBaseFilters && implicitFilters.length === 0) return null;\n const merged = hasBaseFilters ? structuredClone(baseFilters) : { $and: [] };\n if (implicitFilters.length === 0) return merged;\n if (Array.isArray(merged.$and)) {\n merged.$and.push(...implicitFilters);\n return merged;\n }\n return { $and: [merged, ...implicitFilters] };\n };\n\n const buildAggregates = () => {\n const derivedAggregates = (aggregationRules || [])\n .filter((rule) => !!rule?.fieldName && !!rule?.operator)\n .map((rule) => `${rule.fieldName}:${rule.operator}`);\n return derivedAggregates.length > 0 ? derivedAggregates : [\"id:count\"];\n };\n\n const extractGroupCount = (groupMeta: any) => {\n if (groupMeta?.id_count !== undefined) return groupMeta.id_count;\n const countKey = Object.keys(groupMeta || {}).find((key) => key.endsWith(\"_count\"));\n if (countKey) return groupMeta[countKey];\n return undefined;\n };\n\n const normalizeRecord = (record: any) => {\n const newRecord = { ...record };\n Object.entries(newRecord).forEach(([key, value]) => {\n if (typeof value === \"string\") {\n try {\n const parsed = JSON.parse(value);\n if (Array.isArray(parsed)) newRecord[key] = parsed.join(\", \");\n } catch {\n if (/^\\[.*\\]$/.test(value)) newRecord[key] = value.replace(/[\\[\\]\"]+/g, \"\");\n }\n }\n });\n return newRecord;\n };\n\n const formatHeader = (key: string) => {\n return key\n .split(\"_\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\" \");\n };\n\n const getSortParam = (ruleIndex: number) => {\n if (!sortField || !sortOrder) return null;\n\n const dir = sortOrder === 1 ? \"ASC\" : \"DESC\";\n\n // 1. Sorting by the \"Group\" column\n if (sortField === \"__group\") {\n const rule = activeGroupingRules[ruleIndex];\n if (!rule) return null;\n // At this level, sort by the field we are grouping by\n return `${toGroupByParam(rule)}:${dir}`;\n }\n\n // 2. Sorting by an aggregate column\n const isAggregate = aggregationRules.some((rule) => {\n const responseKey = `${rule.fieldName}:${rule.operator}`;\n return responseKey === sortField || `${rule.fieldName}_${rule.operator}` === sortField;\n });\n\n if (isAggregate) {\n const [field, op] = sortField.includes(\":\") ? sortField.split(\":\") : sortField.split(\"_\");\n\n // For leaf level: only field:DIR\n if (ruleIndex >= activeGroupingRules.length) {\n return `${field}:${dir}`;\n }\n\n // For group levels: field:operator:DIR\n return `${field}:${op}:${dir}`;\n }\n\n // 3. Sorting by a leaf column (regular record field)\n return `${sortField}:${dir}`;\n };\n\n // ─── API fetch helpers (now accept offset + limit) ────────────────────────\n\n const runGroupedQuery = async (\n ruleIndex: number,\n groupPath: GroupPathItem[],\n offset: number,\n limit: number\n ) => {\n const rule = activeGroupingRules[ruleIndex];\n if (!rule?.fieldName) return { response: null };\n\n let queryData: any = {\n offset,\n limit,\n groupBy: [toGroupByParam(rule)],\n aggregates: buildAggregates(),\n };\n\n const sortParam = getSortParam(ruleIndex);\n if (sortParam) queryData.sort = [sortParam];\n\n const implicitFilters = buildImplicitFiltersFromPath(groupPath);\n const mergedFilters = mergeFiltersWithImplicit(implicitFilters);\n if (mergedFilters) queryData.filters = mergedFilters;\n\n // event invocation is not tested\n const dynamicHeader = solidTreeViewMetaData?.data?.solidView?.layout?.onBeforeTreeDataLoad;\n let dynamicExtensionFunction = null;\n const event: SolidBeforeTreeNodeLoad = {\n type: \"onBeforeTreeDataLoad\",\n level: ruleIndex,\n levelFieldName: rule.fieldName,\n fieldsMetadata: solidTreeViewMetaData?.data?.solidFieldsMetadata,\n viewMetadata: solidTreeViewMetaData?.data?.solidView,\n treeViewLayout: solidTreeViewMetaData?.data.solidView.layout,\n filter: structuredClone(queryData),\n queryParams: {\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n user: user,\n session: session.data,\n params: params\n };\n\n if (dynamicHeader) {\n dynamicExtensionFunction = getExtensionFunction(dynamicHeader);\n if (dynamicExtensionFunction) {\n try {\n const updatedListData: SolidTreeUiEventResponse = await dynamicExtensionFunction(event);\n if (updatedListData && updatedListData?.filterApplied && updatedListData?.newFilter) {\n queryData = updatedListData?.newFilter;\n }\n } catch (err) {\n console.error(\"Error executing onBeforeTreeDataLoad extension:\", err);\n }\n }\n }\n\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n\n const response = await triggerGetSolidEntities(queryString).unwrap();\n return { queryData, queryString, response };\n };\n\n const runLeafQuery = async (\n groupPath: GroupPathItem[],\n offset: number,\n limit: number\n ) => {\n let queryData: any = {\n offset,\n limit,\n sort: getSortParam(groupPath.length) ? [getSortParam(groupPath.length)] : [\"id:desc\"],\n populate: toPopulate,\n populateMedia: toPopulateMedia,\n };\n\n const implicitFilters = buildImplicitFiltersFromPath(groupPath);\n const mergedFilters = mergeFiltersWithImplicit(implicitFilters);\n if (mergedFilters) queryData.filters = mergedFilters;\n\n\n // event invocation is not tested\n const dynamicHeader = solidTreeViewMetaData?.data?.solidView?.layout?.onBeforeTreeDataLoad;\n let dynamicExtensionFunction = null;\n const event: SolidBeforeTreeNodeLoad = {\n type: \"onBeforeTreeDataLoad\",\n level: groupPath.length,\n levelFieldName: groupPath[groupPath.length - 1].fieldName,\n fieldsMetadata: solidTreeViewMetaData?.data?.solidFieldsMetadata,\n viewMetadata: solidTreeViewMetaData?.data?.solidView,\n treeViewLayout: solidTreeViewMetaData?.data.solidView.layout,\n filter: structuredClone(queryData),\n queryParams: {\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n user: user,\n session: session.data,\n params: params\n };\n\n if (dynamicHeader) {\n dynamicExtensionFunction = getExtensionFunction(dynamicHeader);\n if (dynamicExtensionFunction) {\n try {\n const updatedListData: SolidTreeUiEventResponse = await dynamicExtensionFunction(event);\n if (updatedListData && updatedListData?.filterApplied && updatedListData?.newFilter) {\n queryData = updatedListData?.newFilter;\n }\n } catch (err) {\n console.error(\"Error executing onBeforeTreeDataLoad extension:\", err);\n }\n }\n }\n\n\n\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n\n\n\n\n const response = await triggerGetSolidEntities(queryString).unwrap();\n return { queryData, queryString, response };\n };\n\n // ─── Node builders ────────────────────────────────────────────────────────\n\n const buildGroupNodes = (\n groupMetaRows: any[],\n ruleIndex: number,\n parentPath: GroupPathItem[],\n parentKey: string\n ): TreeNode[] => {\n const rule = activeGroupingRules[ruleIndex];\n if (!rule?.fieldName) return [];\n\n const fieldName = String(rule.fieldName);\n const filterField = getResolvedGroupField(fieldName);\n // const dateGranularity = dateTimeImplicitFilter(rule);\n const dateGranularity = getDateGranularity(rule);\n return (groupMetaRows || []).map((groupMeta, index) => {\n const groupLabel = groupMeta?.groupName ?? \"(empty)\";\n const groupValue = groupMeta?.groupValue ?? \"(empty)\";\n const idCount = extractGroupCount(groupMeta);\n\n const groupPath: GroupPathItem[] = [\n ...parentPath,\n { ruleIndex, fieldName, filterField, value: groupValue, dateGranularity },\n ];\n\n return {\n key: `${parentKey}-g-${ruleIndex}-${index}`,\n data: {\n __treeMeta: {\n nodeType: \"group\",\n ruleIndex,\n groupLabel,\n idCount,\n aggregates: groupMeta,\n groupPath,\n },\n } as TreeRowData,\n children: [],\n leaf: false,\n };\n });\n };\n\n const buildRecordNodes = (\n records: any[],\n parentKey: string,\n groupPath: GroupPathItem[]\n ): TreeNode[] => {\n return (records || []).map((record: any, index: number) => {\n const normalizedRecord = normalizeRecord(record);\n return {\n key: `${parentKey}-r-${record?.id ?? index}`,\n data: {\n ...normalizedRecord,\n __treeMeta: {\n nodeType: \"record\",\n ruleIndex: groupPath.length,\n groupPath,\n },\n } as TreeRowData,\n leaf: true,\n };\n });\n };\n\n const updateNodeChildren = (\n nodes: TreeNode[],\n targetKey: string | number,\n children: TreeNode[]\n ): TreeNode[] => {\n return nodes.map((node) => {\n if (node.key === targetKey) {\n return { ...node, children, leaf: children.length === 0 };\n }\n if (node.children && node.children.length > 0) {\n return { ...node, children: updateNodeChildren(node.children, targetKey, children) };\n }\n return node;\n });\n };\n\n // ─── Root group load / paginate ───────────────────────────────────────────\n\n const loadRootGroups = async (offset = 0) => {\n if (!solidTreeViewMetaData || activeGroupingRules.length === 0) {\n setTreeNodes([]);\n setExpandedKeys({});\n\n const queryObject = getFilterObjectFromLocalStorage();\n if (queryObject) {\n delete queryObject.grouping_rules;\n delete queryObject.aggregation_rules;\n setFilterObjectToLocalStorage(queryObject);\n }\n\n return;\n }\n\n const limit = globalLimit || DEFAULT_PAGE_SIZE;\n setTreeLoading(true);\n try {\n const { response } = await runGroupedQuery(0, [], offset, limit);\n const rootNodes = buildGroupNodes(response?.groupMeta || [], 0, [], \"root\");\n setTreeNodes(rootNodes);\n setExpandedKeys({});\n setSelectedNodeKeys({});\n // Collapse expanded keys since data changed\n const total = response?.meta.totalRecords ?? 0;\n setPagination(\"root\", { offset, total: total, limit });\n\n if (latestFilterPredicatesRef.current && latestFilterPredicatesRef.current.persistFilter) {\n let queryData: any = {\n offset: offset,\n limit: limit,\n populate: toPopulate,\n populateMedia: toPopulateMedia,\n sortField: sortField,\n sortOrder: sortOrder,\n custom_filter_predicate: latestFilterPredicatesRef.current.custom_filter_predicate || null,\n search_predicate: latestFilterPredicatesRef.current.search_predicate || null,\n saved_filter_predicate: latestFilterPredicatesRef.current.saved_filter_predicate || null,\n predefined_search_predicate: latestFilterPredicatesRef.current.predefined_search_predicate || null,\n grouping_rules: latestFilterPredicatesRef.current.grouping_rules || null,\n aggregation_rules: latestFilterPredicatesRef.current.aggregation_rules || null,\n };\n\n setFilterObjectToLocalStorage(queryData);\n }\n\n } catch (error: any) {\n setTreeNodes([]);\n dispatch(showToast({ severity: \"error\", summary: \"Failed to load tree\", detail: error?.data?.message || error?.message || \"Unable to load grouped data\", life: 4000 }));\n } finally {\n setTreeLoading(false);\n }\n };\n\n useEffect(() => {\n // Reset root pagination on data dependencies change\n setPaginationMap({});\n if (filters && filterPredicates) {\n loadRootGroups(0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [solidTreeViewMetaData, params.modelName, activeGroupingRules, aggregationRules, filters, sortField, sortOrder, globalLimit]);\n\n // ─── Expand handler ───────────────────────────────────────────────────────\n\n const loadNodeChildren = async (node: TreeNode, offset: number) => {\n const meta = (node.data as TreeRowData)?.__treeMeta;\n if (!meta || meta.nodeType !== \"group\") return;\n\n const nodeKey = String(node.key);\n const limit = getPagination(nodeKey).limit || globalLimit || DEFAULT_PAGE_SIZE;\n const nextRuleIndex = meta.ruleIndex + 1;\n\n setTreeLoading(true);\n try {\n let children: TreeNode[] = [];\n let total = 0;\n\n if (nextRuleIndex < activeGroupingRules.length) {\n\n const { response } = await runGroupedQuery(\n nextRuleIndex,\n meta.groupPath || [],\n offset,\n limit\n );\n children = buildGroupNodes(\n response?.groupMeta || [],\n nextRuleIndex,\n meta.groupPath || [],\n nodeKey\n );\n total = response?.meta.totalRecords ?? 0;\n } else {\n const { response } = await runLeafQuery(meta.groupPath || [], offset, limit);\n children = buildRecordNodes(response?.records || [], nodeKey, meta.groupPath || []);\n total = response?.meta.totalRecords ?? 0;\n }\n\n setTreeNodes((prev) => updateNodeChildren(prev, nodeKey, children));\n setPagination(node.key as string, { offset, total: total, limit });\n setSelectedNodeKeys((prevKeys) => {\n const next = { ...prevKeys };\n Object.keys(next).forEach((key) => {\n if (key !== nodeKey && key.startsWith(`${nodeKey}-`)) {\n delete next[key];\n }\n });\n\n if (prevKeys?.[nodeKey]?.checked) {\n children.forEach((child) => {\n next[String(child.key)] = {\n ...next[String(child.key)],\n checked: true,\n partialChecked: false,\n nodeType: child.data?.__treeMeta?.nodeType,\n };\n });\n }\n\n return next;\n });\n\n // Collapse all immediate children's expanded state so stale\n // sub-trees don't appear open with no data after pagination.\n if (offset !== 0 || children.length > 0) {\n setExpandedKeys((prevKeys: any) => {\n const next = { ...prevKeys };\n Object.keys(next).forEach((k) => {\n if (k !== nodeKey && k.startsWith(`${nodeKey}-`)) {\n delete next[k];\n }\n });\n return next;\n });\n\n // Also wipe pagination state for all descendant keys so page\n // counters don't carry over to the newly loaded children.\n setPaginationMap((prevMap) => {\n const next = { ...prevMap };\n Object.keys(next).forEach((k) => {\n if (k !== nodeKey && k.startsWith(`${nodeKey}-`)) {\n delete next[k];\n }\n });\n return next;\n });\n }\n } catch (error: any) {\n dispatch(showToast({ severity: \"error\", summary: \"Failed to expand node\", detail: error?.data?.message || error?.message || \"Unable to load children\", life: 4000 }));\n setTreeNodes((prev) => updateNodeChildren(prev, nodeKey, []));\n } finally {\n setTreeLoading(false);\n }\n };\n\n const handleNodeExpand = async (event: any) => {\n const node: TreeNode | undefined = event?.node;\n if (!node) return;\n const nodeKey = String(node.key);\n\n // If already loaded (has children) don't re-fetch, just expand\n const alreadyLoaded = node.children && node.children.length > 0;\n\n if (!alreadyLoaded) {\n await loadNodeChildren(node, 0);\n }\n\n\n // If this node is checked, propagate selection to its freshly loaded children.\n const isChecked = selectedNodeKeys?.[nodeKey]?.checked === true;\n if (!isChecked) return;\n\n // Use setTreeNodes callback to read the latest tree state after loadNodeChildren\n // has updated it, then select all immediate children.\n setTreeNodes((currentNodes) => {\n const parentNode = findNodeByKey(currentNodes, nodeKey);\n if (!parentNode?.children?.length) return currentNodes;\n\n setSelectedNodeKeys((prevKeys: any) => {\n const next = { ...prevKeys };\n parentNode.children!.forEach((child) => {\n next[String(child.key)] = {\n checked: true,\n partialChecked: false,\n nodeType: child.data?.__treeMeta?.nodeType, // already on the node\n };\n });\n return next;\n });\n\n\n return currentNodes; // tree shape unchanged, we only need the read\n });\n\n };\n\n // ─── Pagination click handlers ────────────────────────────────────────────\n\n /**\n * Navigate root-level groups to next/prev page.\n */\n const handleRootPageChange = async (direction: \"prev\" | \"next\") => {\n const { offset, limit } = getPagination(\"root\");\n const nextOffset = direction === \"prev\"\n ? Math.max(0, offset - limit)\n : offset + limit;\n await loadRootGroups(nextOffset);\n };\n\n /**\n * Navigate a node's children to next/prev page.\n * We need to find the node in the tree by key to call loadNodeChildren.\n */\n const findNodeByKey = (nodes: TreeNode[], key: string): TreeNode | null => {\n for (const node of nodes) {\n if (node.key === key) return node;\n if (node.children) {\n const found = findNodeByKey(node.children, key);\n if (found) return found;\n }\n }\n return null;\n };\n\n const handleNodePageChange = async (nodeKey: string, direction: \"prev\" | \"next\") => {\n const { offset, limit } = getPagination(nodeKey);\n const nextOffset = direction === \"prev\"\n ? Math.max(0, offset - limit)\n : offset + limit;\n\n const node = findNodeByKey(treeNodes, nodeKey);\n if (!node) return;\n\n await loadNodeChildren(node, nextOffset);\n };\n\n useEffect(() => {\n const checkedRecords: any[] = [];\n\n const walk = (nodes: TreeNode[]) => {\n nodes.forEach((node) => {\n const key = String(node.key);\n const nodeMeta = (node.data as TreeRowData)?.__treeMeta;\n\n if (selectedNodeKeys?.[key]?.checked && nodeMeta?.nodeType === \"record\") {\n checkedRecords.push(node.data);\n }\n\n if (node.children?.length) {\n walk(node.children);\n }\n });\n };\n\n walk(treeNodes);\n setSelectedRecords(checkedRecords);\n setSelectedRecoverRecords(checkedRecords);\n }, [treeNodes, selectedNodeKeys]);\n\n // ─── Filter handler ───────────────────────────────────────────────────────\n\n const handleApplyCustomFilter = (nextFilterPredicates: any, persistFilter = false) => {\n const queryfilter = structuredClone(params.customFilter) || { $and: [] };\n\n if (nextFilterPredicates?.custom_filter_predicate) queryfilter.$and.push(nextFilterPredicates.custom_filter_predicate);\n if (nextFilterPredicates?.search_predicate) queryfilter.$and.push(nextFilterPredicates.search_predicate);\n if (nextFilterPredicates?.saved_filter_predicate) queryfilter.$and.push(nextFilterPredicates.saved_filter_predicate);\n if (nextFilterPredicates?.predefined_search_predicate) queryfilter.$and.push(nextFilterPredicates.predefined_search_predicate);\n\n latestFiltersRef.current = queryfilter;\n\n const updatedFilterPredicates = structuredClone(nextFilterPredicates || {});\n updatedFilterPredicates.persistFilter = persistFilter;\n latestFilterPredicatesRef.current = updatedFilterPredicates;\n\n setFilters(queryfilter);\n setFilterPredicates(updatedFilterPredicates);\n\n const grouping_rules = updatedFilterPredicates.grouping_rules;\n const aggregation_rules = updatedFilterPredicates.aggregation_rules;\n\n setGroupingRules(Array.isArray(grouping_rules) ? grouping_rules : []);\n setAggregationRules(Array.isArray(aggregation_rules) ? aggregation_rules : []);\n };\n\n // ─── Bulk delete ──────────────────────────────────────────────────────────\n\n\n // handle bulk deletion\n const deleteBulk = () => {\n let deleteList: any = [];\n selectedRecords.forEach((element: any) => {\n deleteList.push(element.id);\n });\n deleteManySolidEntities(deleteList)\n .unwrap()\n .then(() => {\n dispatch(showToast({ severity: 'success', summary: 'Deleted', detail: ERROR_MESSAGES.RECORD_DELETE, life: 3000 }));\n setDeleteRecordsDialogVisible(false);\n })\n .catch((error) => {\n dispatch(showToast({ severity: 'error', summary: 'Delete Failed', detail: error?.data?.message, life: 4000 }));\n });\n };\n\n // handle closing of the delete dialog...\n const onDeleteClose = () => {\n setDeleteRecordsDialogVisible(false);\n setSelectedRecords([]);\n setSelectedRecoverRecords([]);\n };\n\n\n const recoverAll = () => {\n let recoverList: any = [];\n selectedRecoverRecords.forEach((element: any) => {\n recoverList.push(element.id);\n });\n triggerRecoverSolidEntities(recoverList);\n setRecoverDialogVisible(false);\n };\n\n\n const handleFetchUpdatedRecords = () => {\n // setQueryString();\n };\n\n // ─── Column rendering ─────────────────────────────────────────────────────\n\n const renderColumnsDynamically = () => {\n if (!solidTreeViewMetaData?.data || !solidTreeViewLayout) return null;\n\n const solidFieldsMetadata = solidTreeViewMetaData.data.solidFieldsMetadata;\n if (!solidFieldsMetadata) return null;\n\n return solidTreeViewLayout.children?.map((column: any) => {\n const fieldMetadata = solidFieldsMetadata[column.attrs.name];\n if (!fieldMetadata) return null;\n\n const visibleToRole = column?.attrs?.roles || [];\n if (visibleToRole.length > 0 && !hasAnyRole(user?.roles, visibleToRole)) return null;\n\n const listColumn = SolidListViewColumn({\n solidListViewMetaData: solidTreeViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls: () => { },\n setOpenLightbox: () => { },\n });\n\n if (!React.isValidElement(listColumn)) return null;\n\n const originalBody = (listColumn as any)?.props?.body;\n const originalProps = (listColumn as any)?.props || {};\n const mergedColumnStyle = {\n minWidth: \"12rem\",\n ...(originalProps.style || {}),\n };\n\n return (\n <SolidTreeColumn\n key={`tree-col-${fieldMetadata.name}`}\n field={originalProps.field ?? fieldMetadata.name}\n header={originalProps.header}\n sortable={originalProps.sortable}\n style={mergedColumnStyle}\n className={originalProps.className}\n headerClassName={originalProps.headerClassName}\n bodyClassName={originalProps.bodyClassName}\n align={originalProps.align}\n alignHeader={originalProps.alignHeader}\n body={(node: any, options: any) => {\n const rowData = node?.data ?? node;\n const nodeMeta = rowData?.__treeMeta;\n\n if (nodeMeta?.nodeType === \"group\") return <span> </span>;\n\n if (typeof originalBody === \"function\") return originalBody(rowData, options);\n\n return rowData?.[fieldMetadata.name] ?? <span> </span>;\n }}\n />\n );\n });\n };\n\n const renderAggregateColumns = () => {\n if (activeGroupingRules.length === 0) return null;\n\n const derivedAggregates = buildAggregates();\n // derivedAggregates is an array like [\"id:count\", \"price:sum\"]\n // We want to render columns for each of these.\n\n return derivedAggregates.map((agg) => {\n const [field, operator] = agg.split(\":\");\n const responseKey = `${field}_${operator}`;\n const fieldMeta = getFieldMetadata(field);\n const fieldLabel = fieldMeta?.displayName ?? formatHeader(field);\n const operatorLabel = operator.toUpperCase();\n const fullHeader = `${fieldLabel} ${operatorLabel}`;\n\n return (\n <SolidTreeColumn\n key={`agg-col-${agg}`}\n field={responseKey}\n header={(\n <div className=\"solid-tree-aggregate-header\" title={fullHeader}>\n <span className=\"solid-tree-aggregate-header-field\">{fieldLabel}</span>\n <span className=\"solid-tree-aggregate-header-op\">{operatorLabel}</span>\n </div>\n )}\n sortable\n frozen\n alignFrozen=\"right\"\n align=\"right\"\n alignHeader=\"right\"\n style={{ width: \"7rem\", minWidth: \"7rem\", maxWidth: \"7rem\" }}\n headerClassName=\"solid-tree-aggregate-header-cell\"\n bodyClassName=\"solid-tree-aggregate-body-cell\"\n body={(node: any) => {\n const rowData = node?.data ?? node;\n const nodeMeta = rowData?.__treeMeta;\n\n if (nodeMeta?.nodeType !== \"group\") return <span> </span>;\n\n const value = nodeMeta?.aggregates?.[responseKey];\n return <span className=\"solid-tree-aggregate-value\">{value ?? 0}</span>;\n }}\n />\n );\n });\n };\n\n // ─── Group column body: label + child pagination controls ─────────────────\n\n const groupColumnBody = (node: TreeNode) => {\n const rowData = node?.data as TreeRowData;\n const nodeMeta = rowData?.__treeMeta;\n\n if (nodeMeta?.nodeType !== \"group\") return <span> </span>;\n\n const label = nodeMeta.groupLabel ?? \"\";\n return (\n <div className=\"solid-tree-group-label\">\n <span className=\"font-semibold solid-tree-group-label-text\">{label}</span>\n </div>\n );\n };\n\n // ─── Root pagination bar ──────────────────────────────────────────────────\n\n const RootPaginationBar = () => {\n if (activeGroupingRules.length === 0) return null;\n\n const { offset, limit, total } = getPagination(\"root\");\n const rootHasPrev = hasPrev(\"root\");\n const rootHasNext = hasNext(\"root\");\n const start = total === 0 ? 0 : offset + 1;\n const end = total === 0 ? 0 : Math.min(offset + limit, total);\n\n return (\n <div className=\"w-full solid-table-paginator solid-table-paginator-align-end flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background\">\n <div className=\"solid-paginator-meta flex items-center gap-2 ml-auto\">\n <span className=\"solid-paginator-label\">Rows</span>\n <select\n value={limit}\n onChange={(event) => {\n setGlobalLimit(Number(event.target.value));\n }}\n className=\"solid-paginator-select\"\n >\n {pageSizeOptions.map((option) => (\n <option key={option} value={option}>{option}</option>\n ))}\n </select>\n <span className=\"solid-paginator-report\">{start} - {end} of {total}</span>\n </div>\n <div className=\"solid-paginator-actions flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => { void handleRootPageChange(\"prev\"); }}\n disabled={!rootHasPrev || treeLoading}\n >\n Previous\n </button>\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => { void handleRootPageChange(\"next\"); }}\n disabled={!rootHasNext || treeLoading}\n >\n Next\n </button>\n </div>\n </div>\n );\n };\n\n const openGroupingBuilder = () => {\n solidGlobalSearchElementRef.current?.openGroupingDialog?.();\n };\n\n // ─── Imperative handle ────────────────────────────────────────────────────\n\n useImperativeHandle(ref, () => ({\n refresh: () => { void loadRootGroups(getPagination(\"root\").offset); },\n clearFilters: () => {\n setFilters(params.customFilter || { $and: [] });\n solidGlobalSearchElementRef.current?.clearFilter?.();\n },\n applyFilter: (filter) => { handleApplyCustomFilter(filter); },\n setPagination: (nextFirst: number, nextRows: number) => {\n const currentLimit = getPagination(\"root\").limit;\n if (nextRows !== currentLimit) {\n setGlobalLimit(nextRows);\n void loadRootGroups(0);\n return;\n }\n void loadRootGroups(nextFirst);\n },\n setSort: (nextSortField: string, nextSortOrder: 1 | -1 | 0) => {\n setSortField(nextSortField);\n setSortOrder(nextSortOrder);\n },\n setShowArchived: () => { /* archived toggle for grouped tree will be wired later */ },\n getState: () => ({\n first: getPagination(\"root\").offset,\n rows: getPagination(\"root\").limit,\n sortField,\n sortOrder: sortOrder as any,\n showArchived: false,\n filters,\n filterPredicates,\n listData: treeNodes,\n totalRecords: getPagination(\"root\").total,\n loading: treeLoading,\n }),\n }), [filters, filterPredicates, params.customFilter, treeLoading, treeNodes, paginationMap]);\n\n\n const handleCustomButtonClick = useHandleListCustomButtonClick();\n\n const [selectedSolidViewData, setSelectedSolidViewData] = useState<any>();\n const [deleteEntity, setDeleteEntity] = useState(false);\n const openRowForEdit = (rowData: any, viewMode: \"edit\" | \"view\") => {\n try {\n sessionStorage.setItem(\"fromView\", \"tree\");\n sessionStorage.setItem(\"fromViewUrl\", window.location.pathname + window.location.search);\n } catch (e) { }\n\n router.push(\n `${editBaseUrl}/${rowData?.id}?viewMode=${viewMode}&${new URLSearchParams(editActionQueryParams).toString()}`\n );\n };\n\n const canEditRow = (rowData: any, inContextMenu = false) =>\n actionsAllowed.includes(permissionExpression(params.modelName, \"update\")) &&\n solidTreeViewLayout?.attrs?.edit !== false &&\n (!inContextMenu || solidTreeViewLayout?.attrs?.showDefaultEditButton !== false) &&\n (!inContextMenu || solidTreeViewLayout?.attrs?.showRowEditInContextMenu !== false) &&\n !(isDraftPublishWorkflowEnabled && rowData?.publishedAt);\n\n const canDeleteRow = (rowData: any, inContextMenu = false) =>\n actionsAllowed.includes(permissionExpression(params.modelName, \"delete\")) &&\n solidTreeViewLayout?.attrs?.delete !== false &&\n (!inContextMenu\n ? params.embeded ||\n (solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !== undefined &&\n solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !== true)\n : solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !== false) &&\n !(isDraftPublishWorkflowEnabled && rowData?.publishedAt);\n\n const getContextMenuButtons = (rowData: any) =>\n (solidTreeViewLayout?.attrs?.rowButtons || []).filter((rb: any) => {\n const roles = rb?.attrs?.roles || [];\n return (\n rb?.attrs?.actionInContextMenu === true &&\n rb?.attrs?.visible !== false &&\n (roles.length === 0 || hasAnyRole(user?.roles, roles))\n );\n });\n\n\n const handleDeleteEntity = async () => {\n try {\n if (!selectedSolidViewData?.id) {\n throw new Error(ERROR_MESSAGES.NO_ENTITY_SELECTED);\n }\n\n const response: any = await deleteSolidSingleEntiry(selectedSolidViewData.id);\n\n if (response?.data?.statusCode === 200) {\n setDeleteEntity(false);\n dispatch(showToast({ severity: \"success\", summary: ERROR_MESSAGES.DELETED, detail: ERROR_MESSAGES.ENTITY_DELETE, life: 3000 }));\n } else {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.DELETE_FAIELD, detail: response?.error?.data?.error, sticky: true }));\n }\n } catch (error: any) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.DELETE_FAIELD, detail: ERROR_MESSAGES.SOMETHING_WRONG, sticky: true }));\n }\n };\n\n const renderRowActions = (rowData: any) => {\n const customContextMenuButtons = getContextMenuButtons(rowData);\n const hasAnyContextMenuActions =\n canEditRow(rowData, true) ||\n canDeleteRow(rowData, true) ||\n customContextMenuButtons.length > 0;\n\n return (\n <div className=\"flex align-items-center justify-content-end gap-1\" onClick={(event) => event.stopPropagation()}>\n\n {/* ---------------- CUSTOM ROW BUTTONS ---------------- */}\n {solidTreeViewLayout?.attrs?.rowButtons &&\n solidTreeViewLayout?.attrs?.rowButtons\n .filter((rb: any) => {\n const roles = rb?.attrs?.roles || [];\n const isInContextMenu = rb.attrs.actionInContextMenu === true;\n\n const isAllowed =\n roles.length === 0 || hasAnyRole(user?.roles, roles);\n\n const isVisible = rb?.attrs?.visible !== false;\n\n return !isInContextMenu && isAllowed && isVisible;\n })\n .map((button: any, index: number) => (\n <SolidButton\n key={index}\n type=\"button\"\n icon={button?.attrs?.icon ?? \"pi pi-pencil\"}\n className={`gap-2 ${button?.attrs?.className ?? \"\"}`}\n label={\n button.attrs.showLabel !== false\n ? button.attrs.label\n : \"\"\n }\n size=\"sm\"\n iconPos=\"left\"\n onClick={() => {\n const event = {\n params,\n rowData: rowData,\n solidListViewMetaData: solidTreeViewMetaData?.data,\n };\n handleCustomButtonClick(button.attrs, event);\n }}\n />\n ))}\n\n {/* ---------------- EDIT BUTTON ---------------- */}\n {actionsAllowed.includes(\n `${permissionExpression(params.modelName, \"update\")}`\n ) &&\n solidTreeViewLayout?.attrs?.edit !== false &&\n solidTreeViewLayout?.attrs?.showRowEditInContextMenu === false && (\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n leftIcon={<Pencil size={14} />}\n className=\"solid-tree-row-action-icon\"\n onClick={() => openRowForEdit(rowData, \"edit\")}\n />\n )}\n\n {/* ---------------- DELETE BUTTON ---------------- */}\n {actionsAllowed.includes(\n `${permissionExpression(params.modelName, \"delete\")}`\n ) &&\n solidTreeViewLayout?.attrs?.delete !== false &&\n (params.embeded ||\n (solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !==\n undefined &&\n solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !==\n true)) && (\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n leftIcon={<Trash2 size={14} />}\n className=\"solid-tree-row-action-icon is-danger\"\n onClick={() => {\n setSelectedSolidViewData(rowData);\n setDeleteEntity(true);\n }}\n />\n )}\n\n {/* ---------------- CONTEXT MENU ---------------- */}\n {hasAnyContextMenuActions && (\n <SolidDropdownMenu>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-tree-row-menu-trigger\"\n aria-label=\"Open row actions\"\n data-no-row-click=\"true\"\n >\n <EllipsisVertical size={16} />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"solid-tree-row-menu\">\n {canEditRow(rowData, true) ? (\n <SolidDropdownMenuItem onSelect={() => openRowForEdit(rowData, \"edit\")}>\n <Pencil size={14} />\n <span>Edit</span>\n </SolidDropdownMenuItem>\n ) : null}\n {canDeleteRow(rowData, true) && !params.embeded ? (\n <SolidDropdownMenuItem\n className=\"is-danger\"\n onSelect={() => {\n setSelectedSolidViewData(rowData);\n setDeleteEntity(true);\n }}\n >\n <Trash2 size={14} />\n <span>Delete</span>\n </SolidDropdownMenuItem>\n ) : null}\n {customContextMenuButtons.length > 0 &&\n (canEditRow(rowData, true) || (canDeleteRow(rowData, true) && !params.embeded)) ? (\n <SolidDropdownMenuSeparator />\n ) : null}\n {customContextMenuButtons.map((button: any, index: number) => (\n <SolidDropdownMenuItem\n key={`${rowData?.id || \"row\"}-${button?.attrs?.label || index}`}\n onSelect={() => {\n const event = {\n params,\n rowData,\n solidListViewMetaData: solidTreeViewMetaData?.data,\n };\n handleCustomButtonClick(button.attrs, event);\n }}\n >\n {button?.attrs?.icon ? <i className={button.attrs.icon} aria-hidden=\"true\" /> : <Pencil size={14} />}\n <span>{button?.attrs?.label}</span>\n </SolidDropdownMenuItem>\n ))}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n )}\n </div>\n );\n };\n\n // ─── Render ───────────────────────────────────────────────────────────────\n\n return (\n <div className=\"page-parent-wrapper solid-list-page-wrapper solid-tree-page-wrapper flex h-full min-h-0 overflow-hidden\">\n <div className=\"solid-list-content h-full flex flex-column flex-grow-1\">\n <div className=\"solid-list-surface solid-tree-surface flex flex-column flex-1 min-h-0\">\n {/* ── Header ── */}\n <div className=\"page-header solid-list-toolbar solid-tree-toolbar flex-column lg:flex-row\">\n <div className=\"flex justify-content-between w-full solid-list-toolbar-row\">\n <div className=\"flex gap-3 align-items-center w-full solid-list-toolbar-left\">\n <div className=\"flex align-items-center gap-2\">\n {params.embeded !== true && (\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <SolidIcon name=\"si-th-large\" />\n </div>\n )}\n <p className=\"m-0 view-title solid-text-wrapper\">{treeViewTitle}</p>\n </div>\n\n {solidTreeViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true && (\n <div className=\"hidden lg:flex\">\n <SolidGlobalSearchElement\n viewType=\"tree\"\n showSaveFilterPopup={showSaveFilterPopup}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n ref={solidGlobalSearchElementRef}\n viewData={solidTreeViewMetaData}\n handleApplyCustomFilter={handleApplyCustomFilter}\n />\n </div>\n )}\n </div>\n\n <div className=\"flex align-items-center solid-header-buttons-wrapper solid-list-toolbar-actions\">\n {headerRequestStatusLabel ? <SolidHeaderRequestStatus label={headerRequestStatusLabel} /> : null}\n\n {solidTreeViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true && (\n <div className=\"flex lg:hidden\">\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n leftIcon={<Search size={14} />}\n className=\"solid-icon-button\"\n onClick={() => setShowGlobalSearchElement(!showGlobalSearchElement)}\n />\n </div>\n )}\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, \"create\")}`) &&\n solidTreeViewMetaData?.data?.solidView?.layout?.attrs.create !== false && (\n <SolidCreateButton\n createButtonUrl={createButtonUrl}\n createActionQueryParams={createActionQueryParams}\n responsiveIconOnly={true}\n />\n )}\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, \"delete\")}`) &&\n solidTreeViewMetaData?.data?.solidView?.layout?.attrs.delete !== false &&\n selectedRecords.length > 0 && (\n <SolidButton\n type=\"button\"\n label=\"Delete\"\n size=\"sm\"\n onClick={() => setDeleteRecordsDialogVisible(true)}\n className=\"small-button\"\n severity=\"danger\"\n />\n )}\n\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n leftIcon={<RefreshCw size={14} />}\n className=\"solid-icon-button\"\n onClick={() => { void loadRootGroups(getPagination(\"root\").offset); }}\n />\n {showArchived && (\n <SolidButton\n type=\"button\"\n label=\"Recover\"\n size=\"sm\"\n variant=\"outline\"\n leftIcon={<RefreshCw size={14} />}\n className=\"hidden lg:flex solid-icon-button \"\n onClick={() => setRecoverDialogVisible(true)}\n />\n )}\n\n {params.embeded === false &&\n solidTreeViewLayout?.attrs?.configureView !== false && (\n <SolidListViewConfigure\n listViewMetaData={solidTreeViewMetaData}\n solidListViewLayout={solidTreeViewLayout}\n setShowArchived={setShowArchived}\n showArchived={showArchived}\n viewData={solidTreeViewMetaData}\n sizeOptions={sizeOptions}\n setSize={setSize}\n size={size}\n viewModes={viewModes}\n params={params}\n actionsAllowed={actionsAllowed}\n selectedRecords={selectedRecords}\n setDialogVisible={setDeleteRecordsDialogVisible}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n filters={filters}\n handleFetchUpdatedRecords={handleFetchUpdatedRecords}\n setRecoverDialogVisible={setRecoverDialogVisible}\n />\n )}\n </div>\n </div>\n\n {solidTreeViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true &&\n showGlobalSearchElement && (\n <div className=\"flex lg:hidden\">\n <SolidGlobalSearchElement\n viewType=\"tree\"\n showSaveFilterPopup={showSaveFilterPopup}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n ref={solidGlobalSearchElementRef}\n viewData={solidTreeViewMetaData}\n handleApplyCustomFilter={handleApplyCustomFilter}\n />\n </div>\n )}\n </div>\n\n {/* ── Tree table ── */}\n <div className=\"solid-datatable-wrapper solid-list-table-area solid-tree-table-area flex-1 min-h-0 overflow-hidden\">\n {activeGroupingRules.length === 0 ? (\n <div className=\"solid-empty-listview-placeholder-container solid-tree-empty-state\">\n <div className=\"solid-empty-listview-placeholder-panel\">\n <div className=\"solid-empty-listview-header\">\n <div className=\"solid-empty-listview-header-title\">{treeViewTitle || \"Tree View\"}</div>\n <div className=\"solid-empty-listview-header-subtitle\">\n Build a grouping structure to explore your data in hierarchical levels.\n </div>\n </div>\n\n <div className=\"solid-empty-listview-body\">\n <div className=\"solid-empty-listview-title\">\n No grouping rules applied\n </div>\n <div className=\"solid-empty-listview-actions\">\n <SolidButton\n type=\"button\"\n variant=\"primary\"\n size=\"small\"\n leftIcon={<Plus size={14} />}\n onClick={openGroupingBuilder}\n >\n Create Groups\n </SolidButton>\n </div>\n\n <div className=\"solid-empty-listview-description\">\n Start by adding grouping rules and optional aggregations for this tree view.\n </div>\n </div>\n </div>\n </div>\n ) : (\n <SolidTreeTable\n value={treeNodes}\n loading={treeLoading}\n expandedKeys={expandedKeys}\n onToggle={(event: any) => setExpandedKeys(event.value)}\n onExpand={handleNodeExpand}\n tableStyle={{ minWidth: \"max-content\" }}\n tableClassName=\"solid-data-table\"\n selectionMode=\"checkbox\"\n selectionKeys={selectedNodeKeys}\n sortField={sortField}\n sortOrder={sortOrder as any}\n removableSort\n onSort={(e) => {\n setSortField(e.sortField || \"\");\n setSortOrder((e.sortOrder as any) || 0);\n }}\n onRowClick={(e) => {\n if (e.node.leaf !== true) return;\n const rowData = e.node.data;\n\n if (solidTreeViewLayout?.attrs?.disableRowClick === true) return;\n\n const hasFindPermission = actionsAllowed.includes(\n permissionExpression(params.modelName, 'findOne')\n );\n const hasUpdatePermission =\n actionsAllowed.includes(permissionExpression(params.modelName, 'update')) &&\n solidTreeViewLayout?.attrs?.edit !== false;\n\n if (!(hasFindPermission || hasUpdatePermission)) return;\n\n // if (params.embeded === true) {\n // params.handleEditClickForEmbeddedView(rowData?.id);\n // } else {\n if (typeof window !== \"undefined\") {\n // store a simple marker for the caller\n\n // also store the full current URL so Back can restore exact state (including action params)\n try {\n sessionStorage.setItem(\"fromView\", \"tree\");\n sessionStorage.setItem(\"fromViewUrl\", window.location.pathname + window.location.search);\n } catch (e) {\n // ignore storage errors\n }\n }\n router.push(`${editBaseUrl}/${rowData?.id}?viewMode=view&${new URLSearchParams(editActionQueryParams).toString()}`);\n // }\n }\n }\n onSelectionChange={(e) => {\n e.originalEvent.stopPropagation?.();\n const incoming = e.value as SolidTreeSelectionKeys;\n\n setSelectedNodeKeys((prev: SolidTreeSelectionKeys) => {\n const next: SolidTreeSelectionKeys = {};\n\n Object.keys(incoming).forEach((key) => {\n // Find the node to get its type\n const node = findNodeByKey(treeNodes, key);\n next[key] = {\n ...incoming[key], // checked, partialChecked from PrimeReact\n nodeType: node?.data?.__treeMeta?.nodeType // add type from tree\n ?? prev[key]?.nodeType, // fallback to prev if node not found\n };\n });\n\n return next;\n });\n }}\n\n >\n <SolidTreeColumn\n key=\"tree-group-column\"\n field=\"__group\"\n header=\"Group\"\n sortable\n frozen\n alignFrozen=\"left\"\n expander={(node: any) => node?.data?.__treeMeta?.nodeType === \"group\"}\n body={groupColumnBody}\n headerClassName=\"solid-tree-group-header-cell\"\n bodyClassName=\"solid-tree-group-body-cell\"\n style={{ width: \"max-content\", minWidth: \"20rem\" }}\n />\n\n {renderColumnsDynamically()}\n {renderAggregateColumns()}\n\n <SolidTreeColumn\n key=\"tree-last-frozen-column\"\n header=\"\"\n frozen\n alignFrozen=\"right\"\n style={{ width: \"9rem\", minWidth: \"9rem\", maxWidth: \"9rem\" }}\n className=\"solid-tree-actions-cell\"\n headerClassName=\"solid-tree-actions-cell\"\n body={(node: any) => {\n const rowData = node?.data as TreeRowData;\n const nodeMeta = rowData?.__treeMeta;\n\n // ---------------- NORMAL ROW ----------------\n if (nodeMeta?.nodeType !== \"group\") {\n return renderRowActions(rowData);\n }\n\n // ---------------- GROUP ROW ----------------\n const nodeKey = String(node.key);\n const isExpanded = expandedKeys[nodeKey];\n const childrenLoaded = isExpanded && node.children && node.children.length > 0;\n if (!childrenLoaded) return <span> </span>;\n\n const canPrev = hasPrev(nodeKey);\n const canNext = hasNext(nodeKey);\n\n return (\n <div\n className=\"solid-tree-node-paginator\"\n onClick={(e) => e.stopPropagation()}\n >\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n leftIcon={<ChevronLeft size={14} />}\n disabled={!canPrev || treeLoading}\n className=\"solid-tree-paginator-btn\"\n onClick={() => handleNodePageChange(nodeKey, \"prev\")}\n />\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n leftIcon={<ChevronRight size={14} />}\n disabled={!canNext || treeLoading}\n className=\"solid-tree-paginator-btn\"\n onClick={() => handleNodePageChange(nodeKey, \"next\")}\n />\n </div>\n );\n }}\n />\n </SolidTreeTable>\n )}\n </div>\n\n {/* ── Root-level pagination bar ── */}\n <RootPaginationBar />\n </div>\n </div>\n\n <SolidDialog\n open={deleteEntity}\n onOpenChange={(open) => {\n if (!open) setDeleteEntity(false);\n }}\n contentClassName=\"solid-confirm-dialog solid-tree-confirm-dialog\"\n showHeader={false}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>\n Delete {solidTreeViewMetaData?.data?.solidView?.model?.displayName || params?.modelName}\n </SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <SolidDialogDescription className=\"m-0\">\n {`Are you sure you want to delete this ${solidTreeViewMetaData?.data?.solidView?.model?.displayName || params?.modelName}?`}\n </SolidDialogDescription>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton label=\"Cancel\" size=\"sm\" variant=\"outline\" onClick={() => setDeleteEntity(false)} />\n <SolidButton label=\"Delete\" size=\"sm\" severity=\"danger\" onClick={handleDeleteEntity} />\n </SolidDialogFooter>\n </SolidDialog>\n\n <SolidDialog\n open={isDeleteRecordsDialogVisible}\n onOpenChange={(open) => {\n if (!open) setDeleteRecordsDialogVisible(false);\n }}\n contentClassName=\"solid-confirm-dialog solid-tree-confirm-dialog\"\n showHeader={false}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <SolidDialogDescription className=\"m-0\">\n Are you sure you want to delete the selected records?\n </SolidDialogDescription>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton label=\"Cancel\" size=\"sm\" variant=\"outline\" onClick={onDeleteClose} />\n <SolidButton label=\"Delete\" size=\"sm\" severity=\"danger\" onClick={deleteBulk} />\n </SolidDialogFooter>\n </SolidDialog>\n\n <SolidDialog\n open={isRecoverDialogVisible}\n onOpenChange={(open) => {\n if (!open) setRecoverDialogVisible(false);\n }}\n contentClassName=\"solid-confirm-dialog solid-tree-confirm-dialog\"\n showHeader={false}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Confirm Recover</SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <SolidDialogDescription className=\"m-0\">\n Are you sure you want to recover all records?\n </SolidDialogDescription>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton label=\"No\" size=\"sm\" variant=\"outline\" onClick={() => setRecoverDialogVisible(false)} />\n <SolidButton label=\"Yes\" size=\"sm\" severity=\"danger\" onClick={recoverAll} />\n </SolidDialogFooter>\n </SolidDialog>\n\n </div>\n );\n});\n\nSolidTreeView.displayName = \"SolidTreeView\";\n"]}
|
|
1
|
+
{"version":3,"file":"SolidTreeView.js","sourceRoot":"","sources":["../../../../src/components/core/tree/SolidTreeView.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { ChevronLeft, ChevronRight, EllipsisVertical, Pencil, Plus, RefreshCw, Search, Trash2 } from \"lucide-react\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport { useGetSolidViewLayoutQuery } from \"../../../redux/api/solidViewApi\";\nimport qs from \"qs\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { SolidGlobalSearchElement } from \"../common/SolidGlobalSearchElement\";\nimport { permissionExpression } from \"../../../helpers/permissions\";\nimport { SolidCreateButton } from \"../common/SolidCreateButton\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport { AggregationRule, GroupingRule } from \"../common/GroupingComponent\";\nimport { SolidListViewColumn } from \"../list/SolidListViewColumn\";\nimport { hasAnyRole } from \"../../../helpers/rolesHelper\";\nimport { useSession } from \"../../../hooks/useSession\";\nimport { useLazyCheckIfPermissionExistsQuery } from \"../../../redux/api/userApi\";\nimport { SolidListViewConfigure } from \"../list/SolidListViewConfigure\";\nimport CompactImage from '../../../resources/images/layout/images/compact.png';\nimport CozyImage from '../../../resources/images/layout/images/cozy.png';\nimport ComfortableImage from '../../../resources/images/layout/images/comfortable.png';\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { getFilterObjectFromLocalStorage, setFilterObjectToLocalStorage } from \"../list/SolidListView\";\nimport { SolidBeforeTreeNodeLoad } from \"../../../types\";\nimport { getExtensionFunction } from \"../../../helpers/registry\";\nimport { SolidTreeLoad, SolidTreeUiEventResponse } from \"../../../types/solid-core\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { normalizeSolidListTreeKanbanActionPath } from \"../../../helpers/routePaths\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useHandleListCustomButtonClick } from \"../../../components/common/useHandleListCustomButtonClick\";\nimport { SolidButton, SolidDialog, SolidDialogBody, SolidDialogDescription, SolidDialogFooter, SolidDialogHeader, SolidDialogSeparator, SolidDialogTitle, SolidDropdownMenu, SolidDropdownMenuContent, SolidDropdownMenuItem, SolidDropdownMenuSeparator, SolidDropdownMenuTrigger, SolidIcon } from \"../../shad-cn-ui\";\nimport { SolidHeaderRequestStatus } from \"../../common/SolidHeaderRequestStatus\";\nimport { Column as SolidTreeColumn, SolidTreeNode as TreeNode, SolidTreeSelectionKeys, SolidTreeTable } from \"./SolidTreeTable\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype SolidTreeViewParams = {\n moduleName: string;\n modelName: string;\n inlineCreate?: boolean;\n handlePopUpOpen?: any;\n embeded?: boolean;\n customLayout?: any;\n customFilter?: any;\n};\n\nexport type SolidTreeViewHandle = {\n refresh: () => void;\n clearFilters: () => void;\n applyFilter: (filter: {\n custom_filter_predicate?: any;\n search_predicate?: any;\n saved_filter_predicate?: any;\n predefined_search_predicate?: any;\n }) => void;\n setPagination: (nextFirst: number, nextRows: number) => void;\n setSort: (nextSortField: string, nextSortOrder: 1 | -1 | 0) => void;\n setShowArchived: (value: boolean) => void;\n getState: () => {\n first: number;\n rows: number;\n sortField: string;\n sortOrder: 1 | -1 | 0;\n showArchived: boolean;\n filters: any;\n filterPredicates: any;\n listData: any[];\n totalRecords: number;\n loading: boolean;\n };\n};\n\ntype GroupPathItem = {\n ruleIndex: number;\n fieldName: string;\n filterField: string;\n value: any;\n dateGranularity?: string | null;\n};\n\ntype NodeMeta = {\n nodeType: \"group\" | \"record\";\n ruleIndex: number;\n groupLabel?: string;\n idCount?: number | string;\n aggregates?: Record<string, any>;\n groupPath: GroupPathItem[];\n};\n\ntype TreeRowData = Record<string, any> & {\n __treeMeta?: NodeMeta;\n};\n\n/**\n * Pagination entry stored per node key.\n * - \"root\" is used for the top-level group list.\n * - Any other node.key is used for its children (groups or records).\n */\ntype PaginationEntry = {\n offset: number; // current page start\n limit: number; // page size\n total: number; // total items returned from API (used to determine hasNext)\n};\n\nconst DEFAULT_PAGE_SIZE = 25;\nconst DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\nconst resolveDefaultPageSize = (options: number[]) => (\n options.includes(DEFAULT_PAGE_SIZE) ? DEFAULT_PAGE_SIZE : options[0]\n);\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport const SolidTreeView = forwardRef<SolidTreeViewHandle, SolidTreeViewParams>((params, ref) => {\n const dispatch = useDispatch();\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const searchParams = useSearchParams();\n\n const session = useSession();\n const router = useRouter()\n const user = session?.data?.user;\n\n const pathname = usePathname();\n const solidGlobalSearchElementRef = useRef<any>(null);\n\n const [showSaveFilterPopup, setShowSaveFilterPopup] = useState<boolean>(false);\n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n const [toPopulate, setToPopulate] = useState<string[]>([]);\n const [toPopulateMedia, setToPopulateMedia] = useState<string[]>([]);\n const [actionsAllowed, setActionsAllowed] = useState<string[]>([]);\n const [createActionQueryParams, setCreateActionQueryParams] = useState<Record<string, string>>({});\n const [editActionQueryParams, setEditActionQueryParams] = useState<Record<string, string>>({});\n\n const [selectedRecords, setSelectedRecords] = useState<any[]>([]);\n const [selectedRecoverRecords, setSelectedRecoverRecords] = useState<any[]>([]);\n\n\n const [groupingRules, setGroupingRules] = useState<GroupingRule[]>([]);\n const [aggregationRules, setAggregationRules] = useState<AggregationRule[]>([]);\n\n const [treeNodes, setTreeNodes] = useState<TreeNode[]>([]);\n const [selectedNodeKeys, setSelectedNodeKeys] = useState<SolidTreeSelectionKeys>({});\n const [expandedKeys, setExpandedKeys] = useState<any>({});\n const [treeLoading, setTreeLoading] = useState<boolean>(false);\n\n const [sortField, setSortField] = useState<string>(\"\");\n const [sortOrder, setSortOrder] = useState<number>(0);\n\n const [pageSizeOptions, setPageSizeOptions] = useState<number[]>([10, 25, 50]);\n const [globalLimit, setGlobalLimit] = useState<number>(25);\n\n const [isDeleteRecordsDialogVisible, setDeleteRecordsDialogVisible] = useState(false);\n const [isRecoverDialogVisible, setRecoverDialogVisible] = useState(false);\n const [showArchived, setShowArchived] = useState(false);\n\n\n const [createButtonUrl, setCreateButtonUrl] = useState<string>();\n const [editButtonUrl, setEditButtonUrl] = useState<string>();\n const [isDraftPublishWorkflowEnabled, setIsDraftPublishWorkflowEnabled] = useState(false);\n\n\n\n\n\n const sizeOptions = [\n { label: \"Compact\", value: \"small\", image: CompactImage },\n { label: \"Cozy\", value: \"normal\", image: CozyImage },\n { label: \"Comfortable\", value: \"large\", image: ComfortableImage },\n ];\n\n const [size, setSize] = useState<string | any>(sizeOptions[1].value);\n const [viewModes, setViewModes] = useState<any>([]);\n\n const headerRequestStatusLabel = treeLoading ? \"Loading...\" : null;\n\n\n // ── Pagination state ──────────────────────────────────────────────────────\n /**\n * Key: \"root\" for top-level group list; node.key (string) for any other node.\n * Value: { offset, limit, total }\n */\n const [paginationMap, setPaginationMap] = useState<Record<string, PaginationEntry>>({});\n\n const getPagination = (key: string, map = paginationMap): PaginationEntry =>\n map[key] ?? { offset: 0, limit: globalLimit, total: 0 };\n\n const setPagination = (key: string, entry: Partial<PaginationEntry>) =>\n setPaginationMap((prev) => {\n const current = getPagination(key, prev);\n return {\n ...prev,\n [key]: { ...current, ...entry },\n };\n });\n\n // ── Pagination helpers ────────────────────────────────────────────────────\n\n const hasPrev = (key: string) => getPagination(key).offset > 0;\n\n const hasNext = (key: string) => {\n const { offset, limit, total } = getPagination(key);\n // total here is the count of records returned by the last fetch for that node.\n // We consider \"has next\" when we received a full page (i.e. there might be more).\n return offset + limit < total;\n };\n\n // ─────────────────────────────────────────────────────────────────────────\n\n const menuItemId = searchParams.get(\"menuItemId\");\n const menuItemName = searchParams.get(\"menuItemName\");\n const actionId = searchParams.get(\"actionId\");\n const actionName = searchParams.get(\"actionName\");\n\n const entityApi = createSolidEntityApi(params.modelName);\n const {\n useCreateSolidEntityMutation,\n useDeleteMultipleSolidEntitiesMutation,\n useDeleteSolidEntityMutation,\n useGetSolidEntitiesQuery,\n useGetSolidEntityByIdQuery,\n useLazyGetSolidEntitiesQuery,\n useLazyGetSolidEntityByIdQuery,\n usePrefetch,\n useUpdateSolidEntityMutation,\n useRecoverSolidEntityByIdQuery,\n useLazyRecoverSolidEntityByIdQuery,\n useRecoverSolidEntityMutation,\n } = entityApi;\n\n const [triggerGetSolidEntities] = useLazyGetSolidEntitiesQuery();\n\n const [\n triggerRecoverSolidEntitiesById,\n {\n data: recoverByIdData,\n isLoading: recoverByIdIsLoading,\n error: recoverByIdError,\n isError: recoverByIdIsError,\n isSuccess: recoverByIdIsSuccess,\n },\n ] = useLazyRecoverSolidEntityByIdQuery();\n\n const [\n triggerRecoverSolidEntities,\n {\n data: recoverByData,\n isLoading: recoverByIsLoading,\n error: recoverError,\n isError: recoverIsError,\n isSuccess: recoverByIsSuccess,\n },\n ] = useRecoverSolidEntityMutation();\n\n\n\n const treeViewMetaDataQs = qs.stringify(\n {\n modelName: params.modelName,\n moduleName: params.moduleName,\n viewType: \"tree\",\n menuItemId,\n menuItemName,\n actionId,\n actionName,\n },\n { encodeValuesOnly: true }\n );\n\n const { data: solidTreeViewMetaData } = useGetSolidViewLayoutQuery(treeViewMetaDataQs);\n const solidTreeViewLayout = params.customLayout || solidTreeViewMetaData?.data?.solidView?.layout;\n\n const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();\n\n useEffect(() => {\n const fetchPermissions = async () => {\n if (params.modelName) {\n const permissionNames = [\n permissionExpression(params.modelName, 'create'),\n permissionExpression(params.modelName, 'delete'),\n permissionExpression(params.modelName, 'update'),\n permissionExpression(params.modelName, 'deleteMany'),\n permissionExpression(params.modelName, 'findOne'),\n permissionExpression(params.modelName, 'findMany'),\n permissionExpression(params.modelName, 'insertMany'),\n permissionExpression('importTransaction', 'create'),\n permissionExpression('exportTransaction', 'create'),\n permissionExpression('userViewMetadata', 'create'),\n permissionExpression('savedFilters', 'create')\n ];\n const queryData = {\n permissionNames: permissionNames,\n };\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n const response = await triggerCheckIfPermissionExists(queryString);\n setActionsAllowed(response.data.data);\n }\n };\n fetchPermissions();\n }, [params.modelName]);\n\n\n // set layout and actions for create and edit buttons and view modes\n useEffect(() => {\n if (solidTreeViewLayout) {\n const listLayoutAttrs = solidTreeViewLayout.attrs;\n const createActionUrl = listLayoutAttrs?.createAction && listLayoutAttrs?.createAction?.type === \"custom\" ? listLayoutAttrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = listLayoutAttrs?.editAction && listLayoutAttrs?.editAction?.type === \"custom\" ? listLayoutAttrs?.editAction?.customComponent : \"form\";\n\n if (listLayoutAttrs?.createAction) {\n setCreateActionQueryParams({\n actionName: listLayoutAttrs.createAction.name,\n actionType: listLayoutAttrs.createAction.type,\n actionContext: listLayoutAttrs.createAction.context,\n });\n }\n if (listLayoutAttrs?.editAction) {\n setEditActionQueryParams({\n actionName: listLayoutAttrs.editAction.name,\n actionType: listLayoutAttrs.editAction.type,\n actionContext: listLayoutAttrs.editAction.context,\n });\n }\n\n // const viewModes = listLayoutAttrs?.allowedViews && listLayoutAttrs?.allowedViews.length > 0 && listLayoutAttrs?.allowedViews.map((view: any) => { return { label: capitalize(view), value: view }; });\n setViewModes(solidTreeViewMetaData?.data?.viewModes);\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl);\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl);\n }\n setIsDraftPublishWorkflowEnabled(solidTreeViewMetaData?.data?.solidView?.model?.draftPublishWorkflow === true);\n }\n }, [solidTreeViewLayout]);\n\n\n\n const editBaseUrl = useMemo(\n () => normalizeSolidListTreeKanbanActionPath(pathname, editButtonUrl || \"form\"),\n [editButtonUrl, pathname]\n );\n\n const [\n deleteSolidSingleEntiry,\n { isSuccess: isDeleteSolidSingleEntitySuccess },\n ] = useDeleteSolidEntityMutation();\n\n // Delete mutation\n const [\n deleteManySolidEntities,\n {\n isLoading: isSolidEntitiesDeleted,\n isSuccess: isDeleteSolidEntitiesSucess,\n isError: isSolidEntitiesDeleteError,\n error: SolidEntitiesDeleteError,\n data: DeletedSolidEntities,\n },\n ] = useDeleteMultipleSolidEntitiesMutation();\n\n\n\n const treeViewTitle = solidTreeViewMetaData?.data?.solidView?.displayName;\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar());\n } else {\n dispatch(showNavbar());\n }\n };\n\n const [filters, setFilters] = useState<any>(null);\n const [filterPredicates, setFilterPredicates] = useState<any>(null);\n\n const latestFiltersRef = useRef<any>(filters);\n const latestFilterPredicatesRef = useRef<any>(filterPredicates);\n\n const activeGroupingRules = useMemo(\n () => (groupingRules || []).filter((rule) => !!rule?.fieldName),\n [groupingRules]\n );\n\n useEffect(() => { latestFiltersRef.current = filters; }, [filters]);\n useEffect(() => { latestFilterPredicatesRef.current = filterPredicates; }, [filterPredicates]);\n\n useEffect(() => {\n if (solidTreeViewMetaData) {\n setViewModes(solidTreeViewMetaData?.data?.viewModes);\n }\n }, [solidTreeViewMetaData]);\n\n useEffect(() => {\n const solidFieldsMetadata = solidTreeViewMetaData?.data?.solidFieldsMetadata;\n const queryObject = getFilterObjectFromLocalStorage();\n\n const layoutPageSizeOptions = solidTreeViewMetaData?.data?.solidView?.layout?.attrs?.pageSizeOptions;\n const currentOptions = (Array.isArray(layoutPageSizeOptions) && layoutPageSizeOptions.length > 0)\n ? layoutPageSizeOptions\n : DEFAULT_PAGE_SIZE_OPTIONS;\n\n setPageSizeOptions(currentOptions);\n\n if (queryObject) {\n setToPopulate(queryObject.populate || []);\n setToPopulateMedia(queryObject.populateMedia || []);\n setSortField(queryObject.sortField || \"\");\n setSortOrder(queryObject.sortOrder || 0);\n\n const savedLimit = queryObject.limit;\n if (savedLimit && currentOptions.includes(savedLimit)) {\n setGlobalLimit(savedLimit);\n } else {\n setGlobalLimit(resolveDefaultPageSize(currentOptions));\n }\n }\n else {\n if (!solidTreeViewLayout || !solidFieldsMetadata) {\n setToPopulate([]);\n setToPopulateMedia([]);\n setGlobalLimit(resolveDefaultPageSize(currentOptions));\n return;\n }\n\n const nextPopulate: string[] = [];\n const nextPopulateMedia: string[] = [];\n\n for (const column of solidTreeViewLayout?.children || []) {\n const fieldMetadata = solidFieldsMetadata?.[column?.attrs?.name];\n if (!fieldMetadata) continue;\n\n if (fieldMetadata.type === \"relation\" && fieldMetadata.relationType === \"many-to-one\") {\n if (!nextPopulate.includes(fieldMetadata.name)) nextPopulate.push(fieldMetadata.name);\n }\n if (fieldMetadata.type === \"mediaSingle\" || fieldMetadata.type === \"mediaMultiple\") {\n if (!nextPopulateMedia.includes(fieldMetadata.name)) nextPopulateMedia.push(fieldMetadata.name);\n }\n }\n\n setToPopulate(nextPopulate);\n setToPopulateMedia(nextPopulateMedia);\n setGlobalLimit(resolveDefaultPageSize(currentOptions));\n }\n }, [solidTreeViewLayout, solidTreeViewMetaData]);\n\n useEffect(() => {\n\n // event invocation is not tested\n if (solidTreeViewMetaData && solidTreeViewMetaData?.data) {\n const handleDynamicFunction = async () => {\n const dynamicHeader = solidTreeViewMetaData?.data?.solidView?.layout?.onTreeLoad;\n let dynamicExtensionFunction = null;\n let treeLayout = solidTreeViewMetaData?.data?.solidView?.layout;\n let treeViewNodes = treeNodes;\n if (params.customLayout) {\n treeLayout = params.customLayout;\n }\n const event: SolidTreeLoad = {\n fieldsMetadata: solidTreeViewMetaData?.data?.solidFieldsMetadata,\n type: \"onTreeLoad\",\n nodes: treeViewNodes,\n viewMetadata: solidTreeViewMetaData?.data?.solidView,\n treeViewLayout: treeLayout,\n queryParams: {\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n user: user,\n session: session.data,\n params: params\n };\n\n if (dynamicHeader) {\n dynamicExtensionFunction = getExtensionFunction(dynamicHeader);\n if (dynamicExtensionFunction) {\n const updatedListData: SolidTreeUiEventResponse = await dynamicExtensionFunction(event);\n\n if (updatedListData && updatedListData?.dataChanged && updatedListData?.newNodes) {\n treeViewNodes = updatedListData.newNodes;\n }\n if (updatedListData && updatedListData?.layoutChanged && updatedListData?.newLayout) {\n treeLayout = updatedListData.newLayout;\n }\n }\n if (treeViewNodes) {\n setTreeNodes(treeViewNodes);\n }\n if (treeLayout) {\n solidTreeViewLayout(treeLayout);\n }\n }\n };\n handleDynamicFunction();\n }\n\n }, [treeNodes]);\n\n\n // ─── Field / filter helpers ───────────────────────────────────────────────\n\n const getFieldMetadata = (fieldName: string) =>\n solidTreeViewMetaData?.data?.solidFieldsMetadata?.[fieldName];\n\n const getResolvedGroupField = (fieldName: string) => {\n const fieldMetadata = getFieldMetadata(fieldName);\n if (\n fieldMetadata?.type === \"relation\" &&\n fieldMetadata?.relationType === \"many-to-one\" &&\n fieldMetadata?.relationModel?.userKeyField?.name\n ) {\n return `${fieldName}.${fieldMetadata.relationModel.userKeyField.name}`;\n }\n return fieldName;\n };\n\n const toGroupByParam = (rule: GroupingRule) => {\n const fieldName = String(rule.fieldName);\n const resolvedField = getResolvedGroupField(fieldName);\n if (!rule.dateGrouping) return resolvedField;\n if (rule.dateGrouping === \"YYYY\") return `${resolvedField}:year:YYYY`;\n if (rule.dateGrouping === \"MMM\") return `${resolvedField}:month:MMM`;\n if (rule.dateGrouping === \"YYYY-MM\") return `${resolvedField}:month:YYYY-MM`;\n if (rule.dateGrouping === \"YYYY-MM-DD\") return `${resolvedField}:day:YYYY-MM-DD`;\n return resolvedField;\n };\n\n // const dateTimeImplicitFilter = (rule: GroupingRule) => {\n // const fieldMetadata = getFieldMetadata(String(rule.fieldName));\n // return !!rule.dateGrouping && [\"date\", \"datetime\"].includes(fieldMetadata?.type);\n // };\n\n const getDateGranularity = (rule: GroupingRule) => {\n const fieldMetadata = getFieldMetadata(String(rule.fieldName));\n if (rule.dateGrouping && [\"date\", \"datetime\"].includes(fieldMetadata?.type)) {\n switch (rule.dateGrouping) {\n case \"YYYY\":\n return \"year\";\n case \"MMM\":\n return \"month\";\n case \"YYYY-MM\":\n return \"month\";\n case \"YYYY-MM-DD\":\n return \"day\";\n }\n }\n return null;\n }\n\n const buildNestedEqCondition = (fieldPath: string, value: any, dateGranularity: any) => {\n const parts = fieldPath.split(\".\").filter(Boolean);\n if (parts.length === 0) return {};\n if (dateGranularity) {\n return { [`${parts[0]}:${dateGranularity}`]: { $eq: value } };\n }\n return parts.reduceRight((acc: any, part: string) => ({ [part]: acc }), { $eq: value });\n };\n\n const buildImplicitFiltersFromPath = (groupPath: GroupPathItem[]) =>\n groupPath\n // .filter((item) => !item.skipImplicitFilter)\n .map((item) => buildNestedEqCondition(item.filterField, item.value, item.dateGranularity));\n\n const mergeFiltersWithImplicit = (implicitFilters: any[]) => {\n const baseFilters = latestFiltersRef.current;\n const hasBaseFilters = baseFilters && Object.keys(baseFilters).length > 0;\n if (!hasBaseFilters && implicitFilters.length === 0) return null;\n const merged = hasBaseFilters ? structuredClone(baseFilters) : { $and: [] };\n if (implicitFilters.length === 0) return merged;\n if (Array.isArray(merged.$and)) {\n merged.$and.push(...implicitFilters);\n return merged;\n }\n return { $and: [merged, ...implicitFilters] };\n };\n\n const buildAggregates = () => {\n const derivedAggregates = (aggregationRules || [])\n .filter((rule) => !!rule?.fieldName && !!rule?.operator)\n .map((rule) => `${rule.fieldName}:${rule.operator}`);\n return derivedAggregates.length > 0 ? derivedAggregates : [\"id:count\"];\n };\n\n const extractGroupCount = (groupMeta: any) => {\n if (groupMeta?.id_count !== undefined) return groupMeta.id_count;\n const countKey = Object.keys(groupMeta || {}).find((key) => key.endsWith(\"_count\"));\n if (countKey) return groupMeta[countKey];\n return undefined;\n };\n\n const normalizeRecord = (record: any) => {\n const newRecord = { ...record };\n Object.entries(newRecord).forEach(([key, value]) => {\n if (typeof value === \"string\") {\n try {\n const parsed = JSON.parse(value);\n if (Array.isArray(parsed)) newRecord[key] = parsed.join(\", \");\n } catch {\n if (/^\\[.*\\]$/.test(value)) newRecord[key] = value.replace(/[\\[\\]\"]+/g, \"\");\n }\n }\n });\n return newRecord;\n };\n\n const formatHeader = (key: string) => {\n return key\n .split(\"_\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\" \");\n };\n\n const getSortParam = (ruleIndex: number) => {\n if (!sortField || !sortOrder) return null;\n\n const dir = sortOrder === 1 ? \"ASC\" : \"DESC\";\n\n // 1. Sorting by the \"Group\" column\n if (sortField === \"__group\") {\n const rule = activeGroupingRules[ruleIndex];\n if (!rule) return null;\n // At this level, sort by the field we are grouping by\n return `${toGroupByParam(rule)}:${dir}`;\n }\n\n // 2. Sorting by an aggregate column\n const isAggregate = aggregationRules.some((rule) => {\n const responseKey = `${rule.fieldName}:${rule.operator}`;\n return responseKey === sortField || `${rule.fieldName}_${rule.operator}` === sortField;\n });\n\n if (isAggregate) {\n const [field, op] = sortField.includes(\":\") ? sortField.split(\":\") : sortField.split(\"_\");\n\n // For leaf level: only field:DIR\n if (ruleIndex >= activeGroupingRules.length) {\n return `${field}:${dir}`;\n }\n\n // For group levels: field:operator:DIR\n return `${field}:${op}:${dir}`;\n }\n\n // 3. Sorting by a leaf column (regular record field)\n return `${sortField}:${dir}`;\n };\n\n // ─── API fetch helpers (now accept offset + limit) ────────────────────────\n\n const runGroupedQuery = async (\n ruleIndex: number,\n groupPath: GroupPathItem[],\n offset: number,\n limit: number\n ) => {\n const rule = activeGroupingRules[ruleIndex];\n if (!rule?.fieldName) return { response: null };\n\n let queryData: any = {\n offset,\n limit,\n groupBy: [toGroupByParam(rule)],\n aggregates: buildAggregates(),\n };\n\n const sortParam = getSortParam(ruleIndex);\n if (sortParam) queryData.sort = [sortParam];\n\n const implicitFilters = buildImplicitFiltersFromPath(groupPath);\n const mergedFilters = mergeFiltersWithImplicit(implicitFilters);\n if (mergedFilters) queryData.filters = mergedFilters;\n\n // event invocation is not tested\n const dynamicHeader = solidTreeViewMetaData?.data?.solidView?.layout?.onBeforeTreeDataLoad;\n let dynamicExtensionFunction = null;\n const event: SolidBeforeTreeNodeLoad = {\n type: \"onBeforeTreeDataLoad\",\n level: ruleIndex,\n levelFieldName: rule.fieldName,\n fieldsMetadata: solidTreeViewMetaData?.data?.solidFieldsMetadata,\n viewMetadata: solidTreeViewMetaData?.data?.solidView,\n treeViewLayout: solidTreeViewMetaData?.data.solidView.layout,\n filter: structuredClone(queryData),\n queryParams: {\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n user: user,\n session: session.data,\n params: params\n };\n\n if (dynamicHeader) {\n dynamicExtensionFunction = getExtensionFunction(dynamicHeader);\n if (dynamicExtensionFunction) {\n try {\n const updatedListData: SolidTreeUiEventResponse = await dynamicExtensionFunction(event);\n if (updatedListData && updatedListData?.filterApplied && updatedListData?.newFilter) {\n queryData = updatedListData?.newFilter;\n }\n } catch (err) {\n console.error(\"Error executing onBeforeTreeDataLoad extension:\", err);\n }\n }\n }\n\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n\n const response = await triggerGetSolidEntities(queryString).unwrap();\n return { queryData, queryString, response };\n };\n\n const runLeafQuery = async (\n groupPath: GroupPathItem[],\n offset: number,\n limit: number\n ) => {\n let queryData: any = {\n offset,\n limit,\n sort: getSortParam(groupPath.length) ? [getSortParam(groupPath.length)] : [\"id:desc\"],\n populate: toPopulate,\n populateMedia: toPopulateMedia,\n };\n\n const implicitFilters = buildImplicitFiltersFromPath(groupPath);\n const mergedFilters = mergeFiltersWithImplicit(implicitFilters);\n if (mergedFilters) queryData.filters = mergedFilters;\n\n\n // event invocation is not tested\n const dynamicHeader = solidTreeViewMetaData?.data?.solidView?.layout?.onBeforeTreeDataLoad;\n let dynamicExtensionFunction = null;\n const event: SolidBeforeTreeNodeLoad = {\n type: \"onBeforeTreeDataLoad\",\n level: groupPath.length,\n levelFieldName: groupPath[groupPath.length - 1].fieldName,\n fieldsMetadata: solidTreeViewMetaData?.data?.solidFieldsMetadata,\n viewMetadata: solidTreeViewMetaData?.data?.solidView,\n treeViewLayout: solidTreeViewMetaData?.data.solidView.layout,\n filter: structuredClone(queryData),\n queryParams: {\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n user: user,\n session: session.data,\n params: params\n };\n\n if (dynamicHeader) {\n dynamicExtensionFunction = getExtensionFunction(dynamicHeader);\n if (dynamicExtensionFunction) {\n try {\n const updatedListData: SolidTreeUiEventResponse = await dynamicExtensionFunction(event);\n if (updatedListData && updatedListData?.filterApplied && updatedListData?.newFilter) {\n queryData = updatedListData?.newFilter;\n }\n } catch (err) {\n console.error(\"Error executing onBeforeTreeDataLoad extension:\", err);\n }\n }\n }\n\n\n\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n\n\n\n\n const response = await triggerGetSolidEntities(queryString).unwrap();\n return { queryData, queryString, response };\n };\n\n // ─── Node builders ────────────────────────────────────────────────────────\n\n const buildGroupNodes = (\n groupMetaRows: any[],\n ruleIndex: number,\n parentPath: GroupPathItem[],\n parentKey: string\n ): TreeNode[] => {\n const rule = activeGroupingRules[ruleIndex];\n if (!rule?.fieldName) return [];\n\n const fieldName = String(rule.fieldName);\n const filterField = getResolvedGroupField(fieldName);\n // const dateGranularity = dateTimeImplicitFilter(rule);\n const dateGranularity = getDateGranularity(rule);\n return (groupMetaRows || []).map((groupMeta, index) => {\n const groupLabel = groupMeta?.groupName ?? \"(empty)\";\n const groupValue = groupMeta?.groupValue ?? \"(empty)\";\n const idCount = extractGroupCount(groupMeta);\n\n const groupPath: GroupPathItem[] = [\n ...parentPath,\n { ruleIndex, fieldName, filterField, value: groupValue, dateGranularity },\n ];\n\n return {\n key: `${parentKey}-g-${ruleIndex}-${index}`,\n data: {\n __treeMeta: {\n nodeType: \"group\",\n ruleIndex,\n groupLabel,\n idCount,\n aggregates: groupMeta,\n groupPath,\n },\n } as TreeRowData,\n children: [],\n leaf: false,\n };\n });\n };\n\n const buildRecordNodes = (\n records: any[],\n parentKey: string,\n groupPath: GroupPathItem[]\n ): TreeNode[] => {\n return (records || []).map((record: any, index: number) => {\n const normalizedRecord = normalizeRecord(record);\n return {\n key: `${parentKey}-r-${record?.id ?? index}`,\n data: {\n ...normalizedRecord,\n __treeMeta: {\n nodeType: \"record\",\n ruleIndex: groupPath.length,\n groupPath,\n },\n } as TreeRowData,\n leaf: true,\n };\n });\n };\n\n const updateNodeChildren = (\n nodes: TreeNode[],\n targetKey: string | number,\n children: TreeNode[]\n ): TreeNode[] => {\n return nodes.map((node) => {\n if (node.key === targetKey) {\n return { ...node, children, leaf: children.length === 0 };\n }\n if (node.children && node.children.length > 0) {\n return { ...node, children: updateNodeChildren(node.children, targetKey, children) };\n }\n return node;\n });\n };\n\n // ─── Root group load / paginate ───────────────────────────────────────────\n\n const loadRootGroups = async (offset = 0) => {\n if (!solidTreeViewMetaData || activeGroupingRules.length === 0) {\n setTreeNodes([]);\n setExpandedKeys({});\n\n const queryObject = getFilterObjectFromLocalStorage();\n if (queryObject) {\n delete queryObject.grouping_rules;\n delete queryObject.aggregation_rules;\n setFilterObjectToLocalStorage(queryObject);\n }\n\n return;\n }\n\n const limit = globalLimit || DEFAULT_PAGE_SIZE;\n setTreeLoading(true);\n try {\n const { response } = await runGroupedQuery(0, [], offset, limit);\n const rootNodes = buildGroupNodes(response?.groupMeta || [], 0, [], \"root\");\n setTreeNodes(rootNodes);\n setExpandedKeys({});\n setSelectedNodeKeys({});\n // Collapse expanded keys since data changed\n const total = response?.meta.totalRecords ?? 0;\n setPagination(\"root\", { offset, total: total, limit });\n\n if (latestFilterPredicatesRef.current && latestFilterPredicatesRef.current.persistFilter) {\n let queryData: any = {\n offset: offset,\n limit: limit,\n populate: toPopulate,\n populateMedia: toPopulateMedia,\n sortField: sortField,\n sortOrder: sortOrder,\n custom_filter_predicate: latestFilterPredicatesRef.current.custom_filter_predicate || null,\n search_predicate: latestFilterPredicatesRef.current.search_predicate || null,\n saved_filter_predicate: latestFilterPredicatesRef.current.saved_filter_predicate || null,\n predefined_search_predicate: latestFilterPredicatesRef.current.predefined_search_predicate || null,\n grouping_rules: latestFilterPredicatesRef.current.grouping_rules || null,\n aggregation_rules: latestFilterPredicatesRef.current.aggregation_rules || null,\n };\n\n setFilterObjectToLocalStorage(queryData);\n }\n\n } catch (error: any) {\n setTreeNodes([]);\n dispatch(showToast({ severity: \"error\", summary: \"Failed to load tree\", detail: error?.data?.message || error?.message || \"Unable to load grouped data\", life: 4000 }));\n } finally {\n setTreeLoading(false);\n }\n };\n\n useEffect(() => {\n // Reset root pagination on data dependencies change\n setPaginationMap({});\n if (filters && filterPredicates) {\n loadRootGroups(0);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [solidTreeViewMetaData, params.modelName, activeGroupingRules, aggregationRules, filters, sortField, sortOrder, globalLimit]);\n\n // ─── Expand handler ───────────────────────────────────────────────────────\n\n const loadNodeChildren = async (node: TreeNode, offset: number) => {\n const meta = (node.data as TreeRowData)?.__treeMeta;\n if (!meta || meta.nodeType !== \"group\") return;\n\n const nodeKey = String(node.key);\n const limit = getPagination(nodeKey).limit || globalLimit || DEFAULT_PAGE_SIZE;\n const nextRuleIndex = meta.ruleIndex + 1;\n\n setTreeLoading(true);\n try {\n let children: TreeNode[] = [];\n let total = 0;\n\n if (nextRuleIndex < activeGroupingRules.length) {\n\n const { response } = await runGroupedQuery(\n nextRuleIndex,\n meta.groupPath || [],\n offset,\n limit\n );\n children = buildGroupNodes(\n response?.groupMeta || [],\n nextRuleIndex,\n meta.groupPath || [],\n nodeKey\n );\n total = response?.meta.totalRecords ?? 0;\n } else {\n const { response } = await runLeafQuery(meta.groupPath || [], offset, limit);\n children = buildRecordNodes(response?.records || [], nodeKey, meta.groupPath || []);\n total = response?.meta.totalRecords ?? 0;\n }\n\n setTreeNodes((prev) => updateNodeChildren(prev, nodeKey, children));\n setPagination(node.key as string, { offset, total: total, limit });\n setSelectedNodeKeys((prevKeys) => {\n const next = { ...prevKeys };\n Object.keys(next).forEach((key) => {\n if (key !== nodeKey && key.startsWith(`${nodeKey}-`)) {\n delete next[key];\n }\n });\n\n if (prevKeys?.[nodeKey]?.checked) {\n children.forEach((child) => {\n next[String(child.key)] = {\n ...next[String(child.key)],\n checked: true,\n partialChecked: false,\n nodeType: child.data?.__treeMeta?.nodeType,\n };\n });\n }\n\n return next;\n });\n\n // Collapse all immediate children's expanded state so stale\n // sub-trees don't appear open with no data after pagination.\n if (offset !== 0 || children.length > 0) {\n setExpandedKeys((prevKeys: any) => {\n const next = { ...prevKeys };\n Object.keys(next).forEach((k) => {\n if (k !== nodeKey && k.startsWith(`${nodeKey}-`)) {\n delete next[k];\n }\n });\n return next;\n });\n\n // Also wipe pagination state for all descendant keys so page\n // counters don't carry over to the newly loaded children.\n setPaginationMap((prevMap) => {\n const next = { ...prevMap };\n Object.keys(next).forEach((k) => {\n if (k !== nodeKey && k.startsWith(`${nodeKey}-`)) {\n delete next[k];\n }\n });\n return next;\n });\n }\n } catch (error: any) {\n dispatch(showToast({ severity: \"error\", summary: \"Failed to expand node\", detail: error?.data?.message || error?.message || \"Unable to load children\", life: 4000 }));\n setTreeNodes((prev) => updateNodeChildren(prev, nodeKey, []));\n } finally {\n setTreeLoading(false);\n }\n };\n\n const handleNodeExpand = async (event: any) => {\n const node: TreeNode | undefined = event?.node;\n if (!node) return;\n const nodeKey = String(node.key);\n\n // If already loaded (has children) don't re-fetch, just expand\n const alreadyLoaded = node.children && node.children.length > 0;\n\n if (!alreadyLoaded) {\n await loadNodeChildren(node, 0);\n }\n\n\n // If this node is checked, propagate selection to its freshly loaded children.\n const isChecked = selectedNodeKeys?.[nodeKey]?.checked === true;\n if (!isChecked) return;\n\n // Use setTreeNodes callback to read the latest tree state after loadNodeChildren\n // has updated it, then select all immediate children.\n setTreeNodes((currentNodes) => {\n const parentNode = findNodeByKey(currentNodes, nodeKey);\n if (!parentNode?.children?.length) return currentNodes;\n\n setSelectedNodeKeys((prevKeys: any) => {\n const next = { ...prevKeys };\n parentNode.children!.forEach((child) => {\n next[String(child.key)] = {\n checked: true,\n partialChecked: false,\n nodeType: child.data?.__treeMeta?.nodeType, // already on the node\n };\n });\n return next;\n });\n\n\n return currentNodes; // tree shape unchanged, we only need the read\n });\n\n };\n\n // ─── Pagination click handlers ────────────────────────────────────────────\n\n /**\n * Navigate root-level groups to next/prev page.\n */\n const handleRootPageChange = async (direction: \"prev\" | \"next\") => {\n const { offset, limit } = getPagination(\"root\");\n const nextOffset = direction === \"prev\"\n ? Math.max(0, offset - limit)\n : offset + limit;\n await loadRootGroups(nextOffset);\n };\n\n /**\n * Navigate a node's children to next/prev page.\n * We need to find the node in the tree by key to call loadNodeChildren.\n */\n const findNodeByKey = (nodes: TreeNode[], key: string): TreeNode | null => {\n for (const node of nodes) {\n if (node.key === key) return node;\n if (node.children) {\n const found = findNodeByKey(node.children, key);\n if (found) return found;\n }\n }\n return null;\n };\n\n const handleNodePageChange = async (nodeKey: string, direction: \"prev\" | \"next\") => {\n const { offset, limit } = getPagination(nodeKey);\n const nextOffset = direction === \"prev\"\n ? Math.max(0, offset - limit)\n : offset + limit;\n\n const node = findNodeByKey(treeNodes, nodeKey);\n if (!node) return;\n\n await loadNodeChildren(node, nextOffset);\n };\n\n useEffect(() => {\n const checkedRecords: any[] = [];\n\n const walk = (nodes: TreeNode[]) => {\n nodes.forEach((node) => {\n const key = String(node.key);\n const nodeMeta = (node.data as TreeRowData)?.__treeMeta;\n\n if (selectedNodeKeys?.[key]?.checked && nodeMeta?.nodeType === \"record\") {\n checkedRecords.push(node.data);\n }\n\n if (node.children?.length) {\n walk(node.children);\n }\n });\n };\n\n walk(treeNodes);\n setSelectedRecords(checkedRecords);\n setSelectedRecoverRecords(checkedRecords);\n }, [treeNodes, selectedNodeKeys]);\n\n // ─── Filter handler ───────────────────────────────────────────────────────\n\n const handleApplyCustomFilter = (nextFilterPredicates: any, persistFilter = false) => {\n const queryfilter = structuredClone(params.customFilter) || { $and: [] };\n\n if (nextFilterPredicates?.custom_filter_predicate) queryfilter.$and.push(nextFilterPredicates.custom_filter_predicate);\n if (nextFilterPredicates?.search_predicate) queryfilter.$and.push(nextFilterPredicates.search_predicate);\n if (nextFilterPredicates?.saved_filter_predicate) queryfilter.$and.push(nextFilterPredicates.saved_filter_predicate);\n if (nextFilterPredicates?.predefined_search_predicate) queryfilter.$and.push(nextFilterPredicates.predefined_search_predicate);\n\n latestFiltersRef.current = queryfilter;\n\n const updatedFilterPredicates = structuredClone(nextFilterPredicates || {});\n updatedFilterPredicates.persistFilter = persistFilter;\n latestFilterPredicatesRef.current = updatedFilterPredicates;\n\n setFilters(queryfilter);\n setFilterPredicates(updatedFilterPredicates);\n\n const grouping_rules = updatedFilterPredicates.grouping_rules;\n const aggregation_rules = updatedFilterPredicates.aggregation_rules;\n\n setGroupingRules(Array.isArray(grouping_rules) ? grouping_rules : []);\n setAggregationRules(Array.isArray(aggregation_rules) ? aggregation_rules : []);\n };\n\n // ─── Bulk delete ──────────────────────────────────────────────────────────\n\n\n // handle bulk deletion\n const deleteBulk = () => {\n let deleteList: any = [];\n selectedRecords.forEach((element: any) => {\n deleteList.push(element.id);\n });\n deleteManySolidEntities(deleteList)\n .unwrap()\n .then(() => {\n dispatch(showToast({ severity: 'success', summary: 'Deleted', detail: ERROR_MESSAGES.RECORD_DELETE, life: 3000 }));\n setDeleteRecordsDialogVisible(false);\n })\n .catch((error) => {\n dispatch(showToast({ severity: 'error', summary: 'Delete Failed', detail: error?.data?.message, life: 4000 }));\n });\n };\n\n // handle closing of the delete dialog...\n const onDeleteClose = () => {\n setDeleteRecordsDialogVisible(false);\n setSelectedRecords([]);\n setSelectedRecoverRecords([]);\n };\n\n\n const recoverAll = () => {\n let recoverList: any = [];\n selectedRecoverRecords.forEach((element: any) => {\n recoverList.push(element.id);\n });\n triggerRecoverSolidEntities(recoverList);\n setRecoverDialogVisible(false);\n };\n\n\n const handleFetchUpdatedRecords = () => {\n // setQueryString();\n };\n\n // ─── Column rendering ─────────────────────────────────────────────────────\n\n const renderColumnsDynamically = () => {\n if (!solidTreeViewMetaData?.data || !solidTreeViewLayout) return null;\n\n const solidFieldsMetadata = solidTreeViewMetaData.data.solidFieldsMetadata;\n if (!solidFieldsMetadata) return null;\n\n return solidTreeViewLayout.children?.map((column: any) => {\n const fieldMetadata = solidFieldsMetadata[column.attrs.name];\n if (!fieldMetadata) return null;\n\n const visibleToRole = column?.attrs?.roles || [];\n if (visibleToRole.length > 0 && !hasAnyRole(user?.roles, visibleToRole)) return null;\n\n const listColumn = SolidListViewColumn({\n solidListViewMetaData: solidTreeViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls: () => { },\n setOpenLightbox: () => { },\n });\n\n if (!React.isValidElement(listColumn)) return null;\n\n const originalBody = (listColumn as any)?.props?.body;\n const originalProps = (listColumn as any)?.props || {};\n const mergedColumnStyle = {\n minWidth: \"12rem\",\n ...(originalProps.style || {}),\n };\n\n return (\n <SolidTreeColumn\n key={`tree-col-${fieldMetadata.name}`}\n field={originalProps.field ?? fieldMetadata.name}\n header={originalProps.header}\n sortable={originalProps.sortable}\n style={mergedColumnStyle}\n className={originalProps.className}\n headerClassName={originalProps.headerClassName}\n bodyClassName={originalProps.bodyClassName}\n align={originalProps.align}\n alignHeader={originalProps.alignHeader}\n body={(node: any, options: any) => {\n const rowData = node?.data ?? node;\n const nodeMeta = rowData?.__treeMeta;\n\n if (nodeMeta?.nodeType === \"group\") return <span> </span>;\n\n if (typeof originalBody === \"function\") return originalBody(rowData, options);\n\n return rowData?.[fieldMetadata.name] ?? <span> </span>;\n }}\n />\n );\n });\n };\n\n const renderAggregateColumns = () => {\n if (activeGroupingRules.length === 0) return null;\n\n const derivedAggregates = buildAggregates();\n // derivedAggregates is an array like [\"id:count\", \"price:sum\"]\n // We want to render columns for each of these.\n\n return derivedAggregates.map((agg) => {\n const [field, operator] = agg.split(\":\");\n const responseKey = `${field}_${operator}`;\n const fieldMeta = getFieldMetadata(field);\n const fieldLabel = fieldMeta?.displayName ?? formatHeader(field);\n const operatorLabel = operator.toUpperCase();\n const fullHeader = `${fieldLabel} ${operatorLabel}`;\n\n return (\n <SolidTreeColumn\n key={`agg-col-${agg}`}\n field={responseKey}\n header={(\n <div className=\"solid-tree-aggregate-header\" title={fullHeader}>\n <span className=\"solid-tree-aggregate-header-field\">{fieldLabel}</span>\n <span className=\"solid-tree-aggregate-header-op\">{operatorLabel}</span>\n </div>\n )}\n sortable\n frozen\n alignFrozen=\"right\"\n align=\"right\"\n alignHeader=\"right\"\n style={{ width: \"7rem\", minWidth: \"7rem\", maxWidth: \"7rem\" }}\n headerClassName=\"solid-tree-aggregate-header-cell\"\n bodyClassName=\"solid-tree-aggregate-body-cell\"\n body={(node: any) => {\n const rowData = node?.data ?? node;\n const nodeMeta = rowData?.__treeMeta;\n\n if (nodeMeta?.nodeType !== \"group\") return <span> </span>;\n\n const value = nodeMeta?.aggregates?.[responseKey];\n return <span className=\"solid-tree-aggregate-value\">{value ?? 0}</span>;\n }}\n />\n );\n });\n };\n\n // ─── Group column body: label + child pagination controls ─────────────────\n\n const groupColumnBody = (node: TreeNode) => {\n const rowData = node?.data as TreeRowData;\n const nodeMeta = rowData?.__treeMeta;\n\n if (nodeMeta?.nodeType !== \"group\") return <span> </span>;\n\n const label = nodeMeta.groupLabel ?? \"\";\n return (\n <div className=\"solid-tree-group-label\">\n <span className=\"font-semibold solid-tree-group-label-text\">{label}</span>\n </div>\n );\n };\n\n // ─── Root pagination bar ──────────────────────────────────────────────────\n\n const RootPaginationBar = () => {\n if (activeGroupingRules.length === 0) return null;\n\n const { offset, limit, total } = getPagination(\"root\");\n const rootHasPrev = hasPrev(\"root\");\n const rootHasNext = hasNext(\"root\");\n const start = total === 0 ? 0 : offset + 1;\n const end = total === 0 ? 0 : Math.min(offset + limit, total);\n\n return (\n <div className=\"w-full solid-table-paginator solid-table-paginator-align-end flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background\">\n <div className=\"solid-paginator-meta flex items-center gap-2 ml-auto\">\n <span className=\"solid-paginator-label\">Rows</span>\n <select\n value={limit}\n onChange={(event) => {\n setGlobalLimit(Number(event.target.value));\n }}\n className=\"solid-paginator-select\"\n >\n {pageSizeOptions.map((option) => (\n <option key={option} value={option}>{option}</option>\n ))}\n </select>\n <span className=\"solid-paginator-report\">{start} - {end} of {total}</span>\n </div>\n <div className=\"solid-paginator-actions flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => { void handleRootPageChange(\"prev\"); }}\n disabled={!rootHasPrev || treeLoading}\n >\n Previous\n </button>\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => { void handleRootPageChange(\"next\"); }}\n disabled={!rootHasNext || treeLoading}\n >\n Next\n </button>\n </div>\n </div>\n );\n };\n\n const openGroupingBuilder = () => {\n solidGlobalSearchElementRef.current?.openGroupingDialog?.();\n };\n\n // ─── Imperative handle ────────────────────────────────────────────────────\n\n useImperativeHandle(ref, () => ({\n refresh: () => { void loadRootGroups(getPagination(\"root\").offset); },\n clearFilters: () => {\n setFilters(params.customFilter || { $and: [] });\n solidGlobalSearchElementRef.current?.clearFilter?.();\n },\n applyFilter: (filter) => { handleApplyCustomFilter(filter); },\n setPagination: (nextFirst: number, nextRows: number) => {\n const currentLimit = getPagination(\"root\").limit;\n if (nextRows !== currentLimit) {\n setGlobalLimit(nextRows);\n void loadRootGroups(0);\n return;\n }\n void loadRootGroups(nextFirst);\n },\n setSort: (nextSortField: string, nextSortOrder: 1 | -1 | 0) => {\n setSortField(nextSortField);\n setSortOrder(nextSortOrder);\n },\n setShowArchived: () => { /* archived toggle for grouped tree will be wired later */ },\n getState: () => ({\n first: getPagination(\"root\").offset,\n rows: getPagination(\"root\").limit,\n sortField,\n sortOrder: sortOrder as any,\n showArchived: false,\n filters,\n filterPredicates,\n listData: treeNodes,\n totalRecords: getPagination(\"root\").total,\n loading: treeLoading,\n }),\n }), [filters, filterPredicates, params.customFilter, treeLoading, treeNodes, paginationMap]);\n\n\n const handleCustomButtonClick = useHandleListCustomButtonClick();\n\n const [selectedSolidViewData, setSelectedSolidViewData] = useState<any>();\n const [deleteEntity, setDeleteEntity] = useState(false);\n const openRowForEdit = (rowData: any, viewMode: \"edit\" | \"view\") => {\n try {\n sessionStorage.setItem(\"fromView\", \"tree\");\n sessionStorage.setItem(\"fromViewUrl\", window.location.pathname + window.location.search);\n } catch (e) { }\n\n router.push(\n `${editBaseUrl}/${rowData?.id}?viewMode=${viewMode}&${new URLSearchParams(editActionQueryParams).toString()}`\n );\n };\n\n const canEditRow = (rowData: any, inContextMenu = false) =>\n actionsAllowed.includes(permissionExpression(params.modelName, \"update\")) &&\n solidTreeViewLayout?.attrs?.edit !== false &&\n (!inContextMenu || solidTreeViewLayout?.attrs?.showDefaultEditButton !== false) &&\n (!inContextMenu || solidTreeViewLayout?.attrs?.showRowEditInContextMenu !== false) &&\n !(isDraftPublishWorkflowEnabled && rowData?.publishedAt);\n\n const canDeleteRow = (rowData: any, inContextMenu = false) =>\n actionsAllowed.includes(permissionExpression(params.modelName, \"delete\")) &&\n solidTreeViewLayout?.attrs?.delete !== false &&\n (!inContextMenu\n ? params.embeded ||\n (solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !== undefined &&\n solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !== true)\n : solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !== false) &&\n !(isDraftPublishWorkflowEnabled && rowData?.publishedAt);\n\n const getContextMenuButtons = (rowData: any) =>\n (solidTreeViewLayout?.attrs?.rowButtons || []).filter((rb: any) => {\n const roles = rb?.attrs?.roles || [];\n return (\n rb?.attrs?.actionInContextMenu === true &&\n rb?.attrs?.visible !== false &&\n (roles.length === 0 || hasAnyRole(user?.roles, roles))\n );\n });\n\n\n const handleDeleteEntity = async () => {\n try {\n if (!selectedSolidViewData?.id) {\n throw new Error(ERROR_MESSAGES.NO_ENTITY_SELECTED);\n }\n\n const response: any = await deleteSolidSingleEntiry(selectedSolidViewData.id);\n\n if (response?.data?.statusCode === 200) {\n setDeleteEntity(false);\n dispatch(showToast({ severity: \"success\", summary: ERROR_MESSAGES.DELETED, detail: ERROR_MESSAGES.ENTITY_DELETE, life: 3000 }));\n } else {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.DELETE_FAIELD, detail: response?.error?.data?.error, sticky: true }));\n }\n } catch (error: any) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.DELETE_FAIELD, detail: ERROR_MESSAGES.SOMETHING_WRONG, sticky: true }));\n }\n };\n\n const renderRowActions = (rowData: any) => {\n const customContextMenuButtons = getContextMenuButtons(rowData);\n const hasAnyContextMenuActions =\n canEditRow(rowData, true) ||\n canDeleteRow(rowData, true) ||\n customContextMenuButtons.length > 0;\n\n return (\n <div className=\"flex align-items-center justify-content-end gap-1\" onClick={(event) => event.stopPropagation()}>\n\n {/* ---------------- CUSTOM ROW BUTTONS ---------------- */}\n {solidTreeViewLayout?.attrs?.rowButtons &&\n solidTreeViewLayout?.attrs?.rowButtons\n .filter((rb: any) => {\n const roles = rb?.attrs?.roles || [];\n const isInContextMenu = rb.attrs.actionInContextMenu === true;\n\n const isAllowed =\n roles.length === 0 || hasAnyRole(user?.roles, roles);\n\n const isVisible = rb?.attrs?.visible !== false;\n\n return !isInContextMenu && isAllowed && isVisible;\n })\n .map((button: any, index: number) => (\n <SolidButton\n key={index}\n type=\"button\"\n icon={button?.attrs?.icon ?? \"pi pi-pencil\"}\n className={`gap-2 ${button?.attrs?.className ?? \"\"}`}\n label={\n button.attrs.showLabel !== false\n ? button.attrs.label\n : \"\"\n }\n size=\"sm\"\n iconPos=\"left\"\n onClick={() => {\n const event = {\n params,\n rowData: rowData,\n solidListViewMetaData: solidTreeViewMetaData?.data,\n };\n handleCustomButtonClick(button.attrs, event);\n }}\n />\n ))}\n\n {/* ---------------- EDIT BUTTON ---------------- */}\n {actionsAllowed.includes(\n `${permissionExpression(params.modelName, \"update\")}`\n ) &&\n solidTreeViewLayout?.attrs?.edit !== false &&\n solidTreeViewLayout?.attrs?.showRowEditInContextMenu === false && (\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n leftIcon={<Pencil size={14} />}\n className=\"solid-tree-row-action-icon\"\n onClick={() => openRowForEdit(rowData, \"edit\")}\n />\n )}\n\n {/* ---------------- DELETE BUTTON ---------------- */}\n {actionsAllowed.includes(\n `${permissionExpression(params.modelName, \"delete\")}`\n ) &&\n solidTreeViewLayout?.attrs?.delete !== false &&\n (params.embeded ||\n (solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !==\n undefined &&\n solidTreeViewLayout?.attrs?.showRowDeleteInContextMenu !==\n true)) && (\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n leftIcon={<Trash2 size={14} />}\n className=\"solid-tree-row-action-icon is-danger\"\n onClick={() => {\n setSelectedSolidViewData(rowData);\n setDeleteEntity(true);\n }}\n />\n )}\n\n {/* ---------------- CONTEXT MENU ---------------- */}\n {hasAnyContextMenuActions && (\n <SolidDropdownMenu>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-tree-row-menu-trigger\"\n aria-label=\"Open row actions\"\n data-no-row-click=\"true\"\n >\n <EllipsisVertical size={16} />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"solid-tree-row-menu\">\n {canEditRow(rowData, true) ? (\n <SolidDropdownMenuItem onSelect={() => openRowForEdit(rowData, \"edit\")}>\n <Pencil size={14} />\n <span>Edit</span>\n </SolidDropdownMenuItem>\n ) : null}\n {canDeleteRow(rowData, true) && !params.embeded ? (\n <SolidDropdownMenuItem\n className=\"is-danger\"\n onSelect={() => {\n setSelectedSolidViewData(rowData);\n setDeleteEntity(true);\n }}\n >\n <Trash2 size={14} />\n <span>Delete</span>\n </SolidDropdownMenuItem>\n ) : null}\n {customContextMenuButtons.length > 0 &&\n (canEditRow(rowData, true) || (canDeleteRow(rowData, true) && !params.embeded)) ? (\n <SolidDropdownMenuSeparator />\n ) : null}\n {customContextMenuButtons.map((button: any, index: number) => (\n <SolidDropdownMenuItem\n key={`${rowData?.id || \"row\"}-${button?.attrs?.label || index}`}\n onSelect={() => {\n const event = {\n params,\n rowData,\n solidListViewMetaData: solidTreeViewMetaData?.data,\n };\n handleCustomButtonClick(button.attrs, event);\n }}\n >\n {button?.attrs?.icon ? <i className={button.attrs.icon} aria-hidden=\"true\" /> : <Pencil size={14} />}\n <span>{button?.attrs?.label}</span>\n </SolidDropdownMenuItem>\n ))}\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n )}\n </div>\n );\n };\n\n // ─── Render ───────────────────────────────────────────────────────────────\n\n return (\n <div className=\"page-parent-wrapper solid-list-page-wrapper solid-tree-page-wrapper flex h-full min-h-0 overflow-hidden\">\n <div className=\"solid-list-content h-full flex flex-column flex-grow-1\">\n <div className=\"solid-list-surface solid-tree-surface flex flex-column flex-1 min-h-0\">\n {/* ── Header ── */}\n <div className=\"page-header solid-list-toolbar solid-tree-toolbar flex-column lg:flex-row\">\n <div className=\"flex justify-content-between w-full\">\n <div className=\"flex gap-3 align-items-center w-full solid-list-toolbar-left\">\n <div className=\"flex align-items-center gap-2\">\n {params.embeded !== true && (\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <SolidIcon name=\"si-th-large\" />\n </div>\n )}\n <p className=\"m-0 view-title solid-text-wrapper\">{treeViewTitle}</p>\n </div>\n\n {solidTreeViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true && (\n <div className=\"hidden lg:flex\">\n <SolidGlobalSearchElement\n viewType=\"tree\"\n showSaveFilterPopup={showSaveFilterPopup}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n ref={solidGlobalSearchElementRef}\n viewData={solidTreeViewMetaData}\n handleApplyCustomFilter={handleApplyCustomFilter}\n />\n </div>\n )}\n </div>\n\n <div className=\"flex align-items-center solid-header-buttons-wrapper solid-list-toolbar-actions\">\n {headerRequestStatusLabel ? <SolidHeaderRequestStatus label={headerRequestStatusLabel} /> : null}\n\n {solidTreeViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true && (\n <div className=\"flex lg:hidden\">\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n leftIcon={<Search size={14} />}\n className=\"solid-icon-button\"\n onClick={() => setShowGlobalSearchElement(!showGlobalSearchElement)}\n />\n </div>\n )}\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, \"create\")}`) &&\n solidTreeViewMetaData?.data?.solidView?.layout?.attrs.create !== false && (\n <SolidCreateButton\n createButtonUrl={createButtonUrl}\n createActionQueryParams={createActionQueryParams}\n responsiveIconOnly={true}\n />\n )}\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, \"delete\")}`) &&\n solidTreeViewMetaData?.data?.solidView?.layout?.attrs.delete !== false &&\n selectedRecords.length > 0 && (\n <SolidButton\n type=\"button\"\n label=\"Delete\"\n size=\"sm\"\n onClick={() => setDeleteRecordsDialogVisible(true)}\n className=\"small-button\"\n severity=\"danger\"\n />\n )}\n\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n leftIcon={<RefreshCw size={14} />}\n className=\"solid-icon-button\"\n onClick={() => { void loadRootGroups(getPagination(\"root\").offset); }}\n />\n {showArchived && (\n <SolidButton\n type=\"button\"\n label=\"Recover\"\n size=\"sm\"\n variant=\"outline\"\n leftIcon={<RefreshCw size={14} />}\n className=\"hidden lg:flex solid-icon-button \"\n onClick={() => setRecoverDialogVisible(true)}\n />\n )}\n\n {params.embeded === false &&\n solidTreeViewLayout?.attrs?.configureView !== false && (\n <SolidListViewConfigure\n listViewMetaData={solidTreeViewMetaData}\n solidListViewLayout={solidTreeViewLayout}\n setShowArchived={setShowArchived}\n showArchived={showArchived}\n viewData={solidTreeViewMetaData}\n sizeOptions={sizeOptions}\n setSize={setSize}\n size={size}\n viewModes={viewModes}\n params={params}\n actionsAllowed={actionsAllowed}\n selectedRecords={selectedRecords}\n setDialogVisible={setDeleteRecordsDialogVisible}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n filters={filters}\n handleFetchUpdatedRecords={handleFetchUpdatedRecords}\n setRecoverDialogVisible={setRecoverDialogVisible}\n />\n )}\n </div>\n </div>\n\n {solidTreeViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true &&\n showGlobalSearchElement && (\n <div className=\"flex lg:hidden\">\n <SolidGlobalSearchElement\n viewType=\"tree\"\n showSaveFilterPopup={showSaveFilterPopup}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n ref={solidGlobalSearchElementRef}\n viewData={solidTreeViewMetaData}\n handleApplyCustomFilter={handleApplyCustomFilter}\n />\n </div>\n )}\n </div>\n\n {/* ── Tree table ── */}\n <div className=\"solid-datatable-wrapper solid-list-table-area solid-tree-table-area flex-1 min-h-0 overflow-hidden\">\n {activeGroupingRules.length === 0 ? (\n <div className=\"solid-empty-listview-placeholder-container solid-tree-empty-state\">\n <div className=\"solid-empty-listview-placeholder-panel\">\n <div className=\"solid-empty-listview-header\">\n <div className=\"solid-empty-listview-header-title\">{treeViewTitle || \"Tree View\"}</div>\n <div className=\"solid-empty-listview-header-subtitle\">\n Build a grouping structure to explore your data in hierarchical levels.\n </div>\n </div>\n\n <div className=\"solid-empty-listview-body\">\n <div className=\"solid-empty-listview-title\">\n No grouping rules applied\n </div>\n <div className=\"solid-empty-listview-actions\">\n <SolidButton\n type=\"button\"\n variant=\"primary\"\n size=\"small\"\n leftIcon={<Plus size={14} />}\n onClick={openGroupingBuilder}\n >\n Create Groups\n </SolidButton>\n </div>\n\n <div className=\"solid-empty-listview-description\">\n Start by adding grouping rules and optional aggregations for this tree view.\n </div>\n </div>\n </div>\n </div>\n ) : (\n <SolidTreeTable\n value={treeNodes}\n loading={treeLoading}\n expandedKeys={expandedKeys}\n onToggle={(event: any) => setExpandedKeys(event.value)}\n onExpand={handleNodeExpand}\n tableStyle={{ minWidth: \"max-content\" }}\n tableClassName=\"solid-data-table\"\n selectionMode=\"checkbox\"\n selectionKeys={selectedNodeKeys}\n sortField={sortField}\n sortOrder={sortOrder as any}\n removableSort\n onSort={(e) => {\n setSortField(e.sortField || \"\");\n setSortOrder((e.sortOrder as any) || 0);\n }}\n onRowClick={(e) => {\n if (e.node.leaf !== true) return;\n const rowData = e.node.data;\n\n if (solidTreeViewLayout?.attrs?.disableRowClick === true) return;\n\n const hasFindPermission = actionsAllowed.includes(\n permissionExpression(params.modelName, 'findOne')\n );\n const hasUpdatePermission =\n actionsAllowed.includes(permissionExpression(params.modelName, 'update')) &&\n solidTreeViewLayout?.attrs?.edit !== false;\n\n if (!(hasFindPermission || hasUpdatePermission)) return;\n\n // if (params.embeded === true) {\n // params.handleEditClickForEmbeddedView(rowData?.id);\n // } else {\n if (typeof window !== \"undefined\") {\n // store a simple marker for the caller\n\n // also store the full current URL so Back can restore exact state (including action params)\n try {\n sessionStorage.setItem(\"fromView\", \"tree\");\n sessionStorage.setItem(\"fromViewUrl\", window.location.pathname + window.location.search);\n } catch (e) {\n // ignore storage errors\n }\n }\n router.push(`${editBaseUrl}/${rowData?.id}?viewMode=view&${new URLSearchParams(editActionQueryParams).toString()}`);\n // }\n }\n }\n onSelectionChange={(e) => {\n e.originalEvent.stopPropagation?.();\n const incoming = e.value as SolidTreeSelectionKeys;\n\n setSelectedNodeKeys((prev: SolidTreeSelectionKeys) => {\n const next: SolidTreeSelectionKeys = {};\n\n Object.keys(incoming).forEach((key) => {\n // Find the node to get its type\n const node = findNodeByKey(treeNodes, key);\n next[key] = {\n ...incoming[key], // checked, partialChecked from PrimeReact\n nodeType: node?.data?.__treeMeta?.nodeType // add type from tree\n ?? prev[key]?.nodeType, // fallback to prev if node not found\n };\n });\n\n return next;\n });\n }}\n\n >\n <SolidTreeColumn\n key=\"tree-group-column\"\n field=\"__group\"\n header=\"Group\"\n sortable\n frozen\n alignFrozen=\"left\"\n expander={(node: any) => node?.data?.__treeMeta?.nodeType === \"group\"}\n body={groupColumnBody}\n headerClassName=\"solid-tree-group-header-cell\"\n bodyClassName=\"solid-tree-group-body-cell\"\n style={{ width: \"max-content\", minWidth: \"20rem\" }}\n />\n\n {renderColumnsDynamically()}\n {renderAggregateColumns()}\n\n <SolidTreeColumn\n key=\"tree-last-frozen-column\"\n header=\"\"\n frozen\n alignFrozen=\"right\"\n style={{ width: \"9rem\", minWidth: \"9rem\", maxWidth: \"9rem\" }}\n className=\"solid-tree-actions-cell\"\n headerClassName=\"solid-tree-actions-cell\"\n body={(node: any) => {\n const rowData = node?.data as TreeRowData;\n const nodeMeta = rowData?.__treeMeta;\n\n // ---------------- NORMAL ROW ----------------\n if (nodeMeta?.nodeType !== \"group\") {\n return renderRowActions(rowData);\n }\n\n // ---------------- GROUP ROW ----------------\n const nodeKey = String(node.key);\n const isExpanded = expandedKeys[nodeKey];\n const childrenLoaded = isExpanded && node.children && node.children.length > 0;\n if (!childrenLoaded) return <span> </span>;\n\n const canPrev = hasPrev(nodeKey);\n const canNext = hasNext(nodeKey);\n\n return (\n <div\n className=\"solid-tree-node-paginator\"\n onClick={(e) => e.stopPropagation()}\n >\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n leftIcon={<ChevronLeft size={14} />}\n disabled={!canPrev || treeLoading}\n className=\"solid-tree-paginator-btn\"\n onClick={() => handleNodePageChange(nodeKey, \"prev\")}\n />\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n leftIcon={<ChevronRight size={14} />}\n disabled={!canNext || treeLoading}\n className=\"solid-tree-paginator-btn\"\n onClick={() => handleNodePageChange(nodeKey, \"next\")}\n />\n </div>\n );\n }}\n />\n </SolidTreeTable>\n )}\n </div>\n\n {/* ── Root-level pagination bar ── */}\n <RootPaginationBar />\n </div>\n </div>\n\n <SolidDialog\n open={deleteEntity}\n onOpenChange={(open) => {\n if (!open) setDeleteEntity(false);\n }}\n contentClassName=\"solid-confirm-dialog solid-tree-confirm-dialog\"\n showHeader={false}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>\n Delete {solidTreeViewMetaData?.data?.solidView?.model?.displayName || params?.modelName}\n </SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <SolidDialogDescription className=\"m-0\">\n {`Are you sure you want to delete this ${solidTreeViewMetaData?.data?.solidView?.model?.displayName || params?.modelName}?`}\n </SolidDialogDescription>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton label=\"Cancel\" size=\"sm\" variant=\"outline\" onClick={() => setDeleteEntity(false)} />\n <SolidButton label=\"Delete\" size=\"sm\" severity=\"danger\" onClick={handleDeleteEntity} />\n </SolidDialogFooter>\n </SolidDialog>\n\n <SolidDialog\n open={isDeleteRecordsDialogVisible}\n onOpenChange={(open) => {\n if (!open) setDeleteRecordsDialogVisible(false);\n }}\n contentClassName=\"solid-confirm-dialog solid-tree-confirm-dialog\"\n showHeader={false}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <SolidDialogDescription className=\"m-0\">\n Are you sure you want to delete the selected records?\n </SolidDialogDescription>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton label=\"Cancel\" size=\"sm\" variant=\"outline\" onClick={onDeleteClose} />\n <SolidButton label=\"Delete\" size=\"sm\" severity=\"danger\" onClick={deleteBulk} />\n </SolidDialogFooter>\n </SolidDialog>\n\n <SolidDialog\n open={isRecoverDialogVisible}\n onOpenChange={(open) => {\n if (!open) setRecoverDialogVisible(false);\n }}\n contentClassName=\"solid-confirm-dialog solid-tree-confirm-dialog\"\n showHeader={false}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Confirm Recover</SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <SolidDialogDescription className=\"m-0\">\n Are you sure you want to recover all records?\n </SolidDialogDescription>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton label=\"No\" size=\"sm\" variant=\"outline\" onClick={() => setRecoverDialogVisible(false)} />\n <SolidButton label=\"Yes\" size=\"sm\" severity=\"danger\" onClick={recoverAll} />\n </SolidDialogFooter>\n </SolidDialog>\n\n </div>\n );\n});\n\nSolidTreeView.displayName = \"SolidTreeView\";\n"]}
|