@solidxai/core-ui 0.1.9-beta.19 → 0.1.9-beta.20
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/common/GeneralSettings.js +1 -1
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +1 -1
- package/dist/components/common/SettingsComponent.module.css +78 -2
- package/dist/components/common/SolidExport.d.ts.map +1 -1
- package/dist/components/common/SolidExport.js +1 -1
- package/dist/components/common/SolidExport.js.map +1 -1
- package/dist/components/common/SolidExport.tsx +2 -0
- package/dist/components/core/common/FilterComponent.d.ts.map +1 -1
- package/dist/components/core/common/FilterComponent.js +1 -1
- package/dist/components/core/common/FilterComponent.js.map +1 -1
- package/dist/components/core/common/FilterComponent.tsx +1 -0
- package/dist/components/core/common/GroupingComponent.d.ts.map +1 -1
- package/dist/components/core/common/GroupingComponent.js +2 -2
- package/dist/components/core/common/GroupingComponent.js.map +1 -1
- package/dist/components/core/common/GroupingComponent.tsx +2 -0
- package/dist/components/core/dashboard/mappers/echartsOptionMapper.d.ts.map +1 -1
- package/dist/components/core/dashboard/mappers/echartsOptionMapper.js +5 -2
- package/dist/components/core/dashboard/mappers/echartsOptionMapper.js.map +1 -1
- package/dist/components/core/dashboard/mappers/echartsOptionMapper.ts +5 -2
- package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.d.ts.map +1 -1
- package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.js +6 -1
- package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.js.map +1 -1
- package/dist/components/core/dashboard/widgets/DefaultDashboardKpiWidget.tsx +13 -1
- package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.d.ts.map +1 -1
- package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.js +54 -10
- package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.js.map +1 -1
- package/dist/components/core/dashboard/widgets/QueueSlaHeatmapWidget.tsx +56 -10
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.js +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.tsx +3 -2
- package/dist/components/core/filter/fields/SolidDateField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidDateField.js +1 -1
- package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidDateField.tsx +2 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.js +1 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.tsx +3 -2
- package/dist/components/core/filter/fields/SolidExternalIdField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidExternalIdField.js +1 -1
- package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidExternalIdField.tsx +2 -1
- package/dist/components/core/filter/fields/SolidIdField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidIdField.js +1 -1
- package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidIdField.tsx +1 -0
- package/dist/components/core/filter/fields/SolidIntField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidIntField.js +1 -1
- package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidIntField.tsx +2 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.js +1 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +2 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.js +1 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +2 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +1 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +3 -2
- package/dist/components/core/filter/fields/SolidSelectionStaticField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionStaticField.js +1 -1
- package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +3 -2
- package/dist/components/core/filter/fields/SolidShortTextField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidShortTextField.js +1 -1
- package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidShortTextField.tsx +2 -1
- package/dist/components/core/filter/fields/SolidTimeField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidTimeField.js +1 -1
- package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidTimeField.tsx +3 -2
- package/dist/components/core/filter/fields/SolidUuidField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidUuidField.js +1 -1
- package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidUuidField.tsx +2 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +3 -2
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +3 -2
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +3 -2
- package/dist/components/core/form/SolidFormFooter.js +1 -1
- package/dist/components/core/form/SolidFormFooter.js.map +1 -1
- package/dist/components/core/form/SolidFormFooter.tsx +1 -1
- package/dist/components/core/form/SolidFormView.js +2 -2
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +2 -2
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +1 -1
- 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/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +2 -1
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +8 -9
- package/dist/components/core/list/SolidListView.js +13 -15
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +12 -12
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +1 -1
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +1 -1
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +10 -4
- package/dist/components/core/tree/SolidTreeView.js +2 -2
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +3 -3
- package/dist/components/core/users/CreateUser.js +1 -1
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +1 -1
- package/dist/components/layout/AdminHeaderActions.d.ts +7 -0
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -0
- package/dist/components/layout/AdminHeaderActions.js +77 -0
- package/dist/components/layout/AdminHeaderActions.js.map +1 -0
- package/dist/components/layout/AdminHeaderActions.tsx +155 -0
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
- package/dist/components/layout/AdminTopHeader.js +3 -16
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +4 -64
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +2 -1
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +2 -0
- package/dist/components/shad-cn-ui/SolidDatePicker.d.ts +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.js +2 -2
- package/dist/components/shad-cn-ui/SolidDatePicker.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.tsx +4 -0
- package/dist/components/shad-cn-ui/SolidSelect.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidSelect.js +51 -1
- package/dist/components/shad-cn-ui/SolidSelect.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidSelect.tsx +95 -0
- package/dist/resources/globals.css +93 -12
- package/dist/resources/shadcn-base.css +339 -171
- package/dist/resources/solid-responsive.css +235 -50
- package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.js +101 -21
- package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.module.css +33 -0
- package/dist/routes/pages/admin/core/DashboardPage.tsx +144 -17
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidKanbanView.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidKanbanView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { permissionExpression } from \"../../../helpers/permissions\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport { useGetSolidViewLayoutQuery } from \"../../../redux/api/solidViewApi\";\nimport { useLazyCheckIfPermissionExistsQuery } from \"../../../redux/api/userApi\";\nimport { DropResult } from \"@hello-pangea/dnd\";\nimport qs from \"qs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { SolidCreateButton } from \"../common/SolidCreateButton\";\nimport { SolidGlobalSearchElement } from \"../common/SolidGlobalSearchElement\";\nimport KanbanBoard from \"./KanbanBoard\";\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 { SolidLightbox } from \"../../shad-cn-ui/SolidLightbox\";\nimport type { SolidLightboxSlide } from \"../../shad-cn-ui/SolidLightbox\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { SolidKanbanViewConfigure } from \"./SolidKanbanViewConfigure\";\nimport { KanbanUserViewLayout } from \"./KanbanUserViewLayout\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setFilterObjectToLocalStorage, getFilterObjectFromLocalStorage } from \"../list/SolidListView\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport { normalizeSolidListTreeKanbanActionPath } from \"../../../helpers/routePaths\";\nimport { getMediaTypeFromUrl } from \"../../../helpers/mediaType\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { solidGet } from \"../../../http/solidHttp\";\nimport { SolidHeaderRequestStatus } from \"../../common/SolidHeaderRequestStatus\";\nimport {\n SolidButton,\n SolidConfirmDialog,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidIcon,\n} from \"../../shad-cn-ui\";\nimport { FilterMatchMode } from \"../filter/filterMatchMode\";\nimport { kebabCase } from \"lodash\";\n\ntype SolidKanbanViewParams = {\n moduleName: string;\n modelName: string;\n embeded: boolean;\n};\n\ntype KanbanSwimlaneDefinition = {\n value: string;\n label: string;\n};\n\nconst getKanbanSortParam = (sortValue?: string) => {\n if (!sortValue) {\n return \"id:asc\";\n }\n\n return sortValue.includes(\":\") ? sortValue : `${sortValue}:asc`;\n};\n\nconst createEmptyKanbanGroup = (\n definition: KanbanSwimlaneDefinition,\n recordsInSwimlane: number\n) => ({\n groupName: definition.value,\n groupLabel: definition.label,\n groupData: {\n records: [],\n meta: {\n totalRecords: 0,\n perPage: recordsInSwimlane,\n currentPage: 1,\n prevPage: null,\n nextPage: null,\n },\n },\n});\n\nconst mergeKanbanGroupsWithDefinitions = (\n groupRecords: any[],\n swimlaneDefinitions: KanbanSwimlaneDefinition[],\n recordsInSwimlane: number\n) => {\n if (!swimlaneDefinitions.length) {\n return groupRecords;\n }\n\n const groupMap = new Map(\n (groupRecords || []).map((group: any) => [\n String(group?.groupName),\n {\n ...group,\n groupName: String(group?.groupName ?? \"\"),\n },\n ])\n );\n\n return swimlaneDefinitions.map((definition) => {\n const existingGroup = groupMap.get(definition.value);\n if (existingGroup) {\n return {\n ...existingGroup,\n groupName: definition.value,\n groupLabel: definition.label,\n };\n }\n\n return createEmptyKanbanGroup(definition, recordsInSwimlane);\n });\n};\n\n\nexport const SolidKanbanView = (params: SolidKanbanViewParams) => {\n\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const dispatch = useDispatch()\n\n const solidGlobalSearchElementRef = useRef();\n const router = useRouter();\n const searchParams = useSearchParams();\n // TODO: The initial filter state will be created based on the fields which are present on this kanban view. \n const [filters, setFilters] = useState<any>();\n const [toPopulate, setToPopulate] = useState<string[]>([]);\n const [toPopulateMedia, setToPopulateMedia] = useState<string[]>([]);\n const [actionsAllowed, setActionsAllowed] = useState<string[]>([]);\n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n const [showArchived, setShowArchived] = useState(false);\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 const [size, setSize] = useState<string | any>(sizeOptions[1].value);\n const [viewModes, setViewModes] = useState<any>([]);\n const [groupByFieldName, setGroupByFieldName] = useState<string>(\"\");\n const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();\n const [openLightbox, setOpenLightbox] = useState(false);\n const [lightboxUrls, setLightboxUrls] = useState<any[]>([]);\n const [filterQueryString, setFilterQueryString] = useState<any>();\n const [isLayoutDialogVisible, setLayoutDialogVisible] = useState(false);\n const [swimlaneDefinitions, setSwimlaneDefinitions] = useState<KanbanSwimlaneDefinition[]>([]);\n const lightboxSlides: SolidLightboxSlide[] = Array.isArray(lightboxUrls)\n ? lightboxUrls\n .map((item: any) => {\n const src = item?.src || item?.downloadUrl || \"\";\n if (!src) {\n return null;\n }\n const mediaType = getMediaTypeFromUrl(src);\n const slide: SolidLightboxSlide = { src };\n if (mediaType !== \"image\") {\n slide.type = mediaType;\n }\n return slide;\n })\n .filter((slide): slide is SolidLightboxSlide => !!slide)\n : [];\n\n const pushFiltersToRouter = (filterQueryString: any) => {\n // @ts-ignore\n router.push(`?${filterQueryString}`, undefined, { shallow: true });\n };\n\n useEffect(() => {\n if (filterQueryString) {\n pushFiltersToRouter(filterQueryString);\n }\n }, [filterQueryString]);\n\n\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, 'findMany'),\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 // Create the RTK slices for this entity\n const entityApi = createSolidEntityApi(params.modelName);\n const {\n useDeleteMultipleSolidEntitiesMutation,\n useLazyGetSolidEntitiesQuery,\n usePatchUpdateSolidEntityMutation\n } = entityApi;\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 // Get the kanban view layout & metadata first. \n const kanbanViewMetaDataQs = qs.stringify(\n {\n modelName: params.modelName,\n moduleName: params.moduleName,\n viewType: \"kanban\",\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n {\n encodeValuesOnly: true,\n }\n );\n const [kanbanViewMetaData, setKanbanViewMetaData] = useState<any>({});\n\n const { data: solidKanbanViewMetaData } = useGetSolidViewLayoutQuery(kanbanViewMetaDataQs);\n\n const initialFilterMethod = () => {\n\n const solidView = solidKanbanViewMetaData.data.solidView;\n const solidFieldsMetadata = solidKanbanViewMetaData.data.solidFieldsMetadata;\n\n const initialFilters: any = {};\n const toPopulate: string[] = [];\n const toPopulateMedia: string[] = [];\n function findCardNode(nodes: any[] = []): any {\n for (const node of nodes) {\n if (!node) continue;\n if (node.type === \"card\") return node;\n if (Array.isArray(node.children) && node.children.length > 0) {\n const nestedCard = findCardNode(node.children);\n if (nestedCard) return nestedCard;\n }\n }\n\n return null;\n }\n function extractFields(nodes: any, result: any = []) {\n if (!nodes) return result;\n if (Array.isArray(nodes)) {\n nodes.forEach((node: any) => extractFields(node, result));\n return result;\n }\n if (nodes.type === \"field\") {\n result.push(nodes);\n }\n if (nodes.children) {\n nodes.children.forEach((child: any) => extractFields(child, result));\n }\n return result;\n }\n\n const cardNode = findCardNode(solidView?.layout?.children || []);\n const fieldSource = cardNode?.children?.length ? cardNode.children : solidView.layout;\n const layoutFields = extractFields(fieldSource);\n\n for (let i = 0; i < layoutFields.length; i++) {\n const column = layoutFields[i];\n const fieldMetadata = solidFieldsMetadata[column.attrs.name];\n if (fieldMetadata) {\n\n // Form the initial filters after iterating over the columns and field metadata. \n if (['int', 'bigint', 'float', 'decimal'].includes(fieldMetadata.type)) {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.EQUALS }\n }\n else if (['date', 'datetime', 'time', 'boolean'].includes(fieldMetadata.type)) {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.EQUALS }\n }\n else if (['relation', 'selectionStatic', 'selectionDynamic'].includes(fieldMetadata.type)) {\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.IN }\n }\n else {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.STARTS_WITH }\n }\n\n if (column.attrs.name === 'id') {\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.IN }\n }\n\n // Form the \"toPopulate\" array. \n if (fieldMetadata.type === 'relation') {\n toPopulate.push(fieldMetadata.name);\n }\n if (fieldMetadata.type === 'mediaSingle' || fieldMetadata.type === 'mediaMultiple') {\n toPopulateMedia.push(fieldMetadata.name);\n }\n }\n }\n\n // setFilters(initialFilters);\n const recordsInSwimlane = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane : 10;\n // setToPopulate(toPopulate);\n // setToPopulateMedia(toPopulateMedia);\n // setRecordsInSwimlane(recordsInSwimlane);\n // setToPopulate(toPopulate);\n // setToPopulateMedia(toPopulateMedia);\n return { recordsInSwimlane, toPopulate, toPopulateMedia }\n }\n\n\n // Initial Filter data \n useEffect(() => {\n\n if (solidKanbanViewMetaData) {\n setKanbanViewMetaData(solidKanbanViewMetaData);\n setViewModes(solidKanbanViewMetaData?.data?.viewModes);\n setGroupByFieldName(solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.groupBy || \"\");\n }\n }, [solidKanbanViewMetaData]);\n\n // All kanban view state.\n const [kanbanViewData, setKanbanViewData] = useState<any>([]);\n const [kanbanLoadMoreData, setKanbanLoadMoreData] = useState<any>({});\n const [recordsInSwimlane, setRecordsInSwimlane] = useState(10);\n const [selectedRecords, setSelectedRecords] = useState<any[]>([]);\n const [loading, setLoading] = useState<boolean>(true);\n const [isDialogVisible, setDialogVisible] = useState(false);\n const [createButtonUrl, setCreateButtonUrl] = useState<string>();\n const [editButtonUrl, setEditButtonUrl] = useState<string>();\n const [createActionQueryParams, setCreateActionQueryParams] = useState<Record<string, string>>({});\n const [editActionQueryParams, setEditActionQueryParams] = useState<Record<string, string>>({});\n const [columnsCount, setColumnsCount] = useState(5);\n const [swimLaneCurrentPageNumber, setSwimLaneCurrentPageNumber] = useState(1);\n const [queryDataLoaded, setQueryDataLoaded] = useState(false);\n const [showSaveFilterPopup, setShowSaveFilterPopup] = useState<boolean>(false);\n const [maxSwimLanesCount, setMaxSwimLanesCount] = useState<number>(0);\n const [rawKanbanGroupRecords, setRawKanbanGroupRecords] = useState<any[]>([]);\n const [serverSwimLaneCount, setServerSwimLaneCount] = useState<number>(0);\n const pathname = usePathname();\n // @ts-ignore\n const editBaseUrl = normalizeSolidListTreeKanbanActionPath(pathname, editButtonUrl || \"form\");\n // Get the kanban view data.\n // const [triggerGetSolidEntitiesForKanban, { data: solidEntityKanbanViewData, isLoading, error }] = useLazyGetSolidKanbanEntitiesQuery();\n const [triggerGetSolidEntities, { data: solidEntityKanbanViewData }] = useLazyGetSolidEntitiesQuery();\n\n // Delete mutation \n const [\n deleteManySolidEntities,\n {\n isLoading: isDeleteSolidEntitiesLoading,\n isSuccess: isDeleteSolidEntitiesSucess,\n },\n ] = useDeleteMultipleSolidEntitiesMutation();\n const [\n patchKanbanView,\n {\n isLoading: isPatchKanbanViewLoading,\n },\n ] = usePatchUpdateSolidEntityMutation();\n\n // After data is fetched populate the kanban view state so as to be able to render the data. \n useEffect(() => {\n if (solidEntityKanbanViewData) {\n setServerSwimLaneCount(solidEntityKanbanViewData?.meta?.totalRecords || 0);\n setRawKanbanGroupRecords(solidEntityKanbanViewData?.groupRecords || []);\n setLoading(false);\n }\n }, [solidEntityKanbanViewData]);\n\n useEffect(() => {\n const mergedKanbanGroupData = mergeKanbanGroupsWithDefinitions(\n rawKanbanGroupRecords,\n swimlaneDefinitions,\n recordsInSwimlane\n );\n setKanbanViewData(mergedKanbanGroupData);\n setMaxSwimLanesCount(swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : serverSwimLaneCount);\n\n const loadmoredata = Object.entries(mergedKanbanGroupData).reduce((acc: any, [, value]: any) => {\n acc[value.groupName] = {\n offset: ((value.groupData?.meta?.currentPage || 1) - 1) * (value.groupData?.meta?.perPage || recordsInSwimlane),\n limit: value.groupData?.meta?.perPage || recordsInSwimlane,\n count: value.groupData?.meta?.totalRecords || 0\n };\n return acc;\n }, {});\n\n setKanbanLoadMoreData(loadmoredata);\n }, [rawKanbanGroupRecords, recordsInSwimlane, serverSwimLaneCount, swimlaneDefinitions]);\n\n useEffect(() => {\n if (solidKanbanViewMetaData) {\n const kanbanViewLayoutAttrs = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs;\n const createActionUrl = kanbanViewLayoutAttrs?.createAction && kanbanViewLayoutAttrs?.createAction?.type === \"custom\" ? kanbanViewLayoutAttrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = kanbanViewLayoutAttrs?.editAction && kanbanViewLayoutAttrs?.editAction?.type === \"custom\" ? kanbanViewLayoutAttrs?.editAction?.customComponent : \"form\";\n\n if (kanbanViewLayoutAttrs?.createAction) {\n setCreateActionQueryParams({\n actionName: kanbanViewLayoutAttrs.createAction.name,\n actionType: kanbanViewLayoutAttrs.createAction.type,\n actionContext: kanbanViewLayoutAttrs.createAction.context,\n });\n }\n if (kanbanViewLayoutAttrs?.editAction) {\n setEditActionQueryParams({\n actionName: kanbanViewLayoutAttrs.editAction.name,\n actionType: kanbanViewLayoutAttrs.editAction.type,\n actionContext: kanbanViewLayoutAttrs.editAction.context,\n });\n }\n\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl)\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl)\n }\n }\n }, [solidKanbanViewMetaData])\n\n useEffect(() => {\n const loadSwimlaneDefinitions = async () => {\n const fieldMeta = solidKanbanViewMetaData?.data?.solidFieldsMetadata?.[groupByFieldName];\n const layoutAttrs = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs || {};\n\n if (!groupByFieldName || !fieldMeta) {\n setSwimlaneDefinitions([]);\n return;\n }\n\n if (fieldMeta.type === \"selectionStatic\" && Array.isArray(fieldMeta.selectionStaticValues)) {\n const staticDefinitions = fieldMeta.selectionStaticValues\n .map((item: string) => {\n const [rawValue, rawLabel] = String(item).split(\":\");\n const value = (rawValue ?? \"\").trim();\n const label = (rawLabel ?? rawValue ?? \"\").trim();\n return { value, label };\n })\n .filter((item: KanbanSwimlaneDefinition) => item.value !== \"\");\n\n setSwimlaneDefinitions(staticDefinitions);\n return;\n }\n\n if (\n fieldMeta.type === \"relation\" &&\n fieldMeta.relationType === \"many-to-one\" &&\n fieldMeta.relationCoModelSingularName\n ) {\n try {\n const orderBy = getKanbanSortParam(layoutAttrs.swimlanesOrderBy);\n const relationUserKeyField = fieldMeta?.relationModel?.userKeyField?.name || \"id\";\n const response = await solidGet(`/${kebabCase(fieldMeta.relationCoModelSingularName)}`, {\n params: {\n offset: 0,\n limit: 100,\n sort: [orderBy],\n },\n });\n\n const records = response?.data?.data?.records || [];\n const relationDefinitions = records\n .map((record: any) => ({\n value: String(record?.id ?? \"\"),\n label: String(record?.[relationUserKeyField] ?? record?.id ?? \"\"),\n }))\n .filter((item: KanbanSwimlaneDefinition) => item.value !== \"\");\n\n setSwimlaneDefinitions(relationDefinitions);\n return;\n } catch (error) {\n console.error(ERROR_MESSAGES.API_ERROR, error);\n }\n }\n\n setSwimlaneDefinitions([]);\n };\n\n loadSwimlaneDefinitions();\n }, [groupByFieldName, solidKanbanViewMetaData])\n\n // Fetch data after toPopulate has been populated...\n useEffect(() => {\n\n if (solidKanbanViewMetaData) {\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n const resolvedSwimlanesCount = swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : swimlanesCount;\n if (groupByFieldName) {\n\n const queryObject = getFilterObjectFromLocalStorage();\n let queryString = \"\";\n if (queryObject) {\n const filters = {\n $and: []\n }\n if (queryObject.custom_filter_predicate) {\n // @ts-ignore\n filters.$and.push(queryObject.custom_filter_predicate);\n }\n if (queryObject.search_predicate) {\n // @ts-ignore\n filters.$and.push(queryObject.search_predicate);\n }\n // if (queryObject.saved_filter_predicate) {\n // filters.$and.push(queryObject.saved_filter_predicate);\n // }\n // if (queryObject.predefined_search_predicate) {\n // filters.$and.push(queryObject.predefined_search_predicate);\n // }\n\n const queryData = {\n offset: 0,\n limit: swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : Number(queryObject.limit) + Number(queryObject.offset),\n // fields: queryObject.fields || [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: queryObject.groupBy || groupByFieldName,\n // @ts-ignore\n populateMedia: queryObject.populateMedia || toPopulateMedia,\n populateGroup: queryObject.populateGroup || true,\n groupFilter: {\n limit: Number(queryObject.groupFilter.limit) + Number(queryObject.groupFilter.offset) || kanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane,\n offset: 0,\n filters: filters,\n // @ts-ignore\n populate: queryObject.groupFilter.populate || toPopulate,\n // @ts-ignore\n populateMedia: queryObject.groupFilter.populateMedia || toPopulateMedia\n }\n // sort: [`id:desc`],\n };\n\n\n const { recordsInSwimlane, toPopulate, toPopulateMedia } = initialFilterMethod();\n setToPopulate(toPopulate);\n setToPopulateMedia(toPopulateMedia);\n setRecordsInSwimlane(recordsInSwimlane);\n // setFilters(filters);\n setQueryDataLoaded(true);\n\n queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n } else {\n const { recordsInSwimlane, toPopulate, toPopulateMedia } = initialFilterMethod();\n const queryData = {\n offset: 0,\n limit: resolvedSwimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n groupFilter: {\n limit: kanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane || 10,\n offset: 0,\n filters: filters,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n }\n // sort: [`id:desc`],\n };\n setRecordsInSwimlane(recordsInSwimlane);\n setToPopulate(toPopulate);\n setToPopulateMedia(toPopulateMedia);\n\n // fields=status&groupBy=status&fields=count(status)&populateGroup=true\n queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n setQueryDataLoaded(true)\n }\n\n // triggerGetSolidEntities(queryString);\n setSelectedRecords([]);\n }\n }\n }, [groupByFieldName, isDeleteSolidEntitiesSucess, solidKanbanViewMetaData, swimlaneDefinitions]);\n\n // clickable link allowing one to open the detail / form view.\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 setDialogVisible(false);\n };\n\n // handle closing of the delete dialog...\n const onDeleteClose = () => {\n setDialogVisible(false);\n setSelectedRecords([]);\n }\n\n\n // Individual Swimlane Load More\n const handleLoadMore = async (groupByField: string) => {\n const { offset, limit } = kanbanLoadMoreData[groupByField];\n kanbanLoadMoreData[groupByField].offset = offset + limit;\n try {\n const queryData = {\n offset: offset + limit,\n limit: limit,\n populate: toPopulate,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n filters: {\n [groupByFieldName]: {\n $in: [groupByField],\n },\n ...filters\n }\n }\n\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n // router.push(`?${queryString}`);\n const data: any = await triggerGetSolidEntities(queryString);\n const newRecords = data.data.records;\n const mergeData = (\n kanbanViewData: any[],\n newRecords: any[],\n groupByField: string\n ) => {\n // Find the group matching the specified groupByField\n const originalData = structuredClone(kanbanViewData);\n const targetGroup = originalData.find(\n (group: any) => group.groupName === groupByField\n );\n if (targetGroup) {\n const { groupData } = targetGroup;\n\n if (targetGroup.groupData) {\n // Extract existing records\n const existingRecords = targetGroup.groupData.records;\n const updatedRecords = [...existingRecords, ...newRecords];\n targetGroup.groupData.records = updatedRecords\n\n\n // Update the meta data (you can adjust this logic as needed)\n groupData.meta.prevPage = groupData.meta.currentPage\n groupData.meta.currentPage = groupData.meta.currentPage + 1\n groupData.meta.nextPage = groupData.meta.currentPage + 1\n }\n }\n return originalData;\n };\n\n\n const updatedData = mergeData(kanbanViewData, newRecords, groupByField);\n setKanbanViewData(updatedData);\n setRawKanbanGroupRecords((previousGroups: any[]) => {\n const existingGroups = Array.isArray(previousGroups) ? previousGroups : [];\n return updatedData\n .filter((group: any) => (group.groupData?.meta?.totalRecords || 0) > 0)\n .map((group: any) => {\n const existingGroup = existingGroups.find((item: any) => String(item.groupName) === String(group.groupName));\n return existingGroup ? { ...existingGroup, ...group } : group;\n });\n })\n\n } catch (error) {\n console.error(ERROR_MESSAGES.LOAD_MORE_DATA, error);\n }\n };\n\n\n // Handle drag-and-drop functionality\n // @ts-ignore\n const onDragEnd = async (result: DropResult): void => {\n const { source, destination } = result;\n if (!destination) return;\n\n const sourceGroupName = source.droppableId;\n const destinationGroupName = destination.droppableId;\n\n // Find the source and destination groups\n const sourceGroupIndex = kanbanViewData.findIndex((group: any) => group.groupName === sourceGroupName);\n const destinationGroupIndex = kanbanViewData.findIndex((group: any) => group.groupName === destinationGroupName);\n\n if (sourceGroupIndex === -1 || destinationGroupIndex === -1) return;\n\n // If dragging within the same group\n if (sourceGroupName === destinationGroupName) {\n setKanbanViewData((prevData: typeof kanbanViewData) =>\n prevData.map((group: any) => {\n if (group.groupName === sourceGroupName) {\n const updatedRecords = [...group.groupData.records];\n const [movedItem] = updatedRecords.splice(source.index, 1); // Remove the item\n updatedRecords.splice(destination.index, 0, movedItem); // Insert at the new position\n\n return {\n ...group,\n groupData: {\n ...group.groupData,\n records: updatedRecords,\n },\n };\n }\n return group;\n })\n );\n return;\n }\n\n // Deep clone the source and destination groups\n const sourceGroup = JSON.parse(JSON.stringify(kanbanViewData[sourceGroupIndex]));\n const destinationGroup = JSON.parse(JSON.stringify(kanbanViewData[destinationGroupIndex]));\n\n // Clone the records for immutability\n const sourceRecords = [...sourceGroup.groupData.records];\n const destinationRecords = [...destinationGroup.groupData.records];\n\n // Remove the item from the source\n const [movedItem] = sourceRecords.splice(source.index, 1);\n\n // Create a mutable copy of the moved item\n const updatedItem = groupByFieldName\n ? { ...movedItem, [groupByFieldName]: destinationGroupName }\n : movedItem;\n\n // Add the updated item to the destination\n destinationRecords.splice(destination.index, 0, updatedItem);\n\n // Update the group data\n sourceGroup.groupData.records = sourceRecords;\n destinationGroup.groupData.records = destinationRecords;\n\n // Update the kanbanViewData state\n const oldkanbanViewData = structuredClone(kanbanViewData);\n try {\n const formData = new FormData();\n formData.append(groupByFieldName, destinationGroupName);\n // Update the kanbanViewData state\n setKanbanViewData((prevData: typeof kanbanViewData) =>\n prevData.map((group: any) => {\n if (group.groupName === sourceGroupName) {\n return sourceGroup;\n }\n if (group.groupName === destinationGroupName) {\n return destinationGroup;\n }\n return group;\n })\n );\n const kanbanUpdateResponse = await patchKanbanView({ id: +movedItem.id, data: formData }).unwrap();\n\n if (kanbanUpdateResponse?.statusCode === 200) {\n dispatch(showToast({ severity: \"success\", summary: ERROR_MESSAGES.IS_SUCCESS, detail: ERROR_MESSAGES.KANBAN_UPDATED }));\n } else {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.DUPLICATE_KEY, detail: kanbanUpdateResponse?.error }));\n // Update the kanbanViewData state\n setKanbanViewData(oldkanbanViewData);\n }\n } catch (error: any) {\n // 6. Handle 500 or network errors\n console.error(ERROR_MESSAGES.API_ERROR, error);\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SOMETHING_WRONG, detail: error?.data?.message || ERROR_MESSAGES.SOMETHING_WRONG }));\n setKanbanViewData(oldkanbanViewData);\n }\n };\n\n\n // Handle SwimLane Pagination\n const handleSwimLanePagination = async () => {\n\n if (solidKanbanViewMetaData) {\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n const resolvedSwimlanesCount = swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : swimlanesCount;\n const queryData = {\n offset: swimLaneCurrentPageNumber * swimlanesCount,\n limit: resolvedSwimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populate: toPopulate,\n populateGroup: true,\n groupFilter: {\n limit: recordsInSwimlane,\n offset: 0,\n filters: filters,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n\n }\n // sort: [`id:desc`],\n };\n // fields=status&groupBy=status&fields=count(status)&populateGroup=true\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n const data: any = await triggerGetSolidEntities(queryString);\n if (data && data?.data?.groupRecords.length > 0) {\n setRawKanbanGroupRecords((previousGroups: any[]) => {\n const groupMap = new Map((previousGroups || []).map((group: any) => [String(group.groupName), group]));\n data.data.groupRecords.forEach((group: any) => {\n groupMap.set(String(group.groupName), group);\n });\n return Array.from(groupMap.values());\n });\n }\n setSwimLaneCurrentPageNumber(swimLaneCurrentPageNumber + 1)\n }\n }\n\n\n // Handle the custom filter and Search Filter\n const handleApplyCustomFilter = async (filterPredicates: any, persistFilter: boolean = false) => {\n\n if (solidKanbanViewMetaData) {\n const queryfilter = {\n $and: [\n ]\n }\n\n if (filterPredicates.custom_filter_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.custom_filter_predicate);\n }\n if (filterPredicates.search_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.search_predicate);\n }\n if (filterPredicates.saved_filter_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.saved_filter_predicate);\n }\n if (filterPredicates.predefined_search_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.predefined_search_predicate);\n }\n\n const customFilter = filterPredicates;\n const updatedFilter = { ...(filters || {}), ...(queryfilter || {}) };\n\n // Then update state\n setFilters(updatedFilter);\n\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n const resolvedSwimlanesCount = swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : swimlanesCount;\n // const { toPopulate, toPopulateMedia } = initialFilterMethod();\n\n const queryData = {\n offset: 0,\n limit: resolvedSwimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n groupFilter: {\n limit: recordsInSwimlane,\n offset: 0,\n filters: updatedFilter,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n }\n }\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n // s_filter and c_filter format that needs to be passed to the router\n // only present if handleCustomFilter is applied\n if (customFilter) {\n const urlData = structuredClone(queryData);\n // @ts-ignore\n delete urlData.filters;\n // urlData.s_filter = customFilter.s_filter || {};\n // urlData.c_filter = customFilter.c_filter || {};\n // @ts-ignore\n urlData.custom_filter_predicate = customFilter.custom_filter_predicate || {};\n // @ts-ignore\n urlData.search_predicate = customFilter.search_predicate || {};\n // @ts-ignore\n setFilterObjectToLocalStorage(urlData);\n }\n\n\n const data: any = await triggerGetSolidEntities(queryString);\n\n // Update the kanban view data with the new data based on filter\n setSwimLaneCurrentPageNumber(1);\n if (data && data?.data?.groupRecords.length > 0) {\n setRawKanbanGroupRecords([...data.data.groupRecords]);\n } else {\n setRawKanbanGroupRecords([]);\n }\n setSelectedRecords([]);\n\n\n }\n\n }\n\n useEffect(() => {\n if (solidKanbanViewMetaData) {\n const createActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.type === \"custom\" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.type === \"custom\" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.customComponent : \"form\";\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl)\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl)\n }\n }\n }, [solidKanbanViewMetaData])\n\n const kanbanViewTitle = solidKanbanViewMetaData?.data?.solidView?.displayName\n const entityDisplayName = solidKanbanViewMetaData?.data?.solidView?.model?.displayName || params.modelName;\n const headerRequestStatusLabel = isDeleteSolidEntitiesLoading ? \"Deleting...\" : isPatchKanbanViewLoading ? \"Updating...\" : loading || !queryDataLoaded ? \"Loading...\" : null;\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n console.log(`Logging kanban data: `, solidKanbanViewMetaData); \n\n return (\n <div className=\"page-parent-wrapper solid-list-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-kanban-surface flex flex-column flex-1 min-h-0\">\n <div className=\"page-header solid-list-toolbar solid-kanban-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 {params.embeded !== true &&\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <SolidIcon name=\"si-th-large\" aria-hidden />\n </div>\n }\n\n <p className=\"m-0 view-title solid-text-wrapper\">{kanbanViewTitle}</p>\n <div className=\"hidden lg:flex\">\n {/* Keep global search mounted for now because kanban bootstrap/filter hydration still flows through this element. */}\n <SolidGlobalSearchElement viewType=\"kanban\" showSaveFilterPopup={showSaveFilterPopup} setShowSaveFilterPopup={setShowSaveFilterPopup} ref={solidGlobalSearchElementRef} viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>\n </div>\n </div>\n\n <div className=\"flex align-items-center solid-header-buttons-wrapper solid-list-toolbar-actions\">\n <SolidHeaderRequestStatus label={headerRequestStatusLabel} />\n <div className=\"flex lg:hidden\">\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n onClick={() => setShowGlobalSearchElement(!showGlobalSearchElement)}\n aria-label=\"Toggle search\"\n leftIcon={<SolidIcon name=\"si-search\" aria-hidden />}\n />\n </div>\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.create !== false &&\n <SolidCreateButton createButtonUrl={createButtonUrl} createActionQueryParams={createActionQueryParams} responsiveIconOnly={true} />\n }\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'delete')}`) && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.delete !== false && selectedRecords.length > 0 && <SolidButton\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => setDialogVisible(true)}\n >\n Delete\n </SolidButton>}\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n onClick={() => {\n window.location.reload()\n }}\n aria-label=\"Refresh board\"\n leftIcon={<SolidIcon name=\"si-refresh\" aria-hidden />}\n />\n <SolidKanbanViewConfigure\n solidKanbanViewMetaData={solidKanbanViewMetaData}\n modelName={params.modelName}\n actionsAllowed={actionsAllowed}\n viewModes={viewModes}\n setLayoutDialogVisible={setLayoutDialogVisible}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n filters={filters}\n handleRefreshView={() => window.location.reload()}\n />\n </div>\n </div>\n {showGlobalSearchElement && (\n <div className=\"flex lg:hidden\">\n <SolidGlobalSearchElement viewType=\"kanban\" showSaveFilterPopup={showSaveFilterPopup} setShowSaveFilterPopup={setShowSaveFilterPopup} ref={solidGlobalSearchElementRef} viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>\n </div>\n )}\n </div>\n\n <style>{`.p-datatable .p-datatable-loading-overlay {background-color: rgba(0, 0, 0, 0.0);}`}</style>\n {solidKanbanViewMetaData && kanbanViewData &&\n <KanbanBoard groupByFieldName={groupByFieldName} kanbanViewData={kanbanViewData} maxSwimLanesCount={maxSwimLanesCount} solidKanbanViewMetaData={solidKanbanViewMetaData?.data} setKanbanViewData={setKanbanViewData} handleLoadMore={handleLoadMore} onDragEnd={onDragEnd} handleSwimLanePagination={handleSwimLanePagination} setLightboxUrls={setLightboxUrls} setOpenLightbox={setOpenLightbox} editButtonUrl={editBaseUrl}></KanbanBoard>\n }\n </div>\n </div>\n\n <SolidConfirmDialog\n open={isDialogVisible}\n onCancel={onDeleteClose}\n onConfirm={deleteBulk}\n className=\"solid-shadcn-confirm-dialog solid-delete-confirm-dialog\"\n headerClassName=\"solid-shadcn-dialog-head\"\n bodyClassName=\"solid-shadcn-dialog-body\"\n footerClassName=\"solid-shadcn-dialog-actions\"\n separatorClassName=\"solid-shadcn-dialog-sep\"\n showSeparator\n title={`Delete ${entityDisplayName}`}\n message={<p className=\"solid-shadcn-dialog-text\">{`Are you sure you want to delete the selected ${entityDisplayName} records?`}</p>}\n confirmLabel=\"Delete\"\n cancelLabel=\"Cancel\"\n />\n {openLightbox && (\n <SolidLightbox\n open={openLightbox}\n slides={lightboxSlides}\n onClose={() => setOpenLightbox(false)}\n />\n )}\n <SolidDialog\n open={isLayoutDialogVisible}\n onOpenChange={setLayoutDialogVisible}\n className=\"solid-kanban-layout-dialog\"\n style={{ width: \"min(800px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Change Kanban Layout</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody className=\"solid-kanban-layout-dialog-body\">\n <KanbanUserViewLayout solidKanbanViewMetaData={solidKanbanViewMetaData} setLayoutDialogVisible={setLayoutDialogVisible} />\n </SolidDialogBody>\n </SolidDialog>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SolidKanbanView.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/SolidKanbanView.tsx"],"names":[],"mappings":"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","sourcesContent":["import { permissionExpression } from \"../../../helpers/permissions\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport { useGetSolidViewLayoutQuery } from \"../../../redux/api/solidViewApi\";\nimport { useLazyCheckIfPermissionExistsQuery } from \"../../../redux/api/userApi\";\nimport { DropResult } from \"@hello-pangea/dnd\";\nimport qs from \"qs\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { SolidCreateButton } from \"../common/SolidCreateButton\";\nimport { SolidGlobalSearchElement } from \"../common/SolidGlobalSearchElement\";\nimport KanbanBoard from \"./KanbanBoard\";\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 { SolidLightbox } from \"../../shad-cn-ui/SolidLightbox\";\nimport type { SolidLightboxSlide } from \"../../shad-cn-ui/SolidLightbox\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { SolidKanbanViewConfigure } from \"./SolidKanbanViewConfigure\";\nimport { KanbanUserViewLayout } from \"./KanbanUserViewLayout\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setFilterObjectToLocalStorage, getFilterObjectFromLocalStorage } from \"../list/SolidListView\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { showNavbar, toggleNavbar } from \"../../../redux/features/navbarSlice\";\nimport { normalizeSolidListTreeKanbanActionPath } from \"../../../helpers/routePaths\";\nimport { getMediaTypeFromUrl } from \"../../../helpers/mediaType\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { solidGet } from \"../../../http/solidHttp\";\nimport { SolidHeaderRequestStatus } from \"../../common/SolidHeaderRequestStatus\";\nimport {\n SolidButton,\n SolidConfirmDialog,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidIcon,\n} from \"../../shad-cn-ui\";\nimport { FilterMatchMode } from \"../filter/filterMatchMode\";\nimport { kebabCase } from \"lodash\";\n\ntype SolidKanbanViewParams = {\n moduleName: string;\n modelName: string;\n embeded: boolean;\n};\n\ntype KanbanSwimlaneDefinition = {\n value: string;\n label: string;\n};\n\nconst getKanbanSortParam = (sortValue?: string) => {\n if (!sortValue) {\n return \"id:asc\";\n }\n\n return sortValue.includes(\":\") ? sortValue : `${sortValue}:asc`;\n};\n\nconst createEmptyKanbanGroup = (\n definition: KanbanSwimlaneDefinition,\n recordsInSwimlane: number\n) => ({\n groupName: definition.value,\n groupLabel: definition.label,\n groupData: {\n records: [],\n meta: {\n totalRecords: 0,\n perPage: recordsInSwimlane,\n currentPage: 1,\n prevPage: null,\n nextPage: null,\n },\n },\n});\n\nconst mergeKanbanGroupsWithDefinitions = (\n groupRecords: any[],\n swimlaneDefinitions: KanbanSwimlaneDefinition[],\n recordsInSwimlane: number\n) => {\n if (!swimlaneDefinitions.length) {\n return groupRecords;\n }\n\n const groupMap = new Map(\n (groupRecords || []).map((group: any) => [\n String(group?.groupName),\n {\n ...group,\n groupName: String(group?.groupName ?? \"\"),\n },\n ])\n );\n\n return swimlaneDefinitions.map((definition) => {\n const existingGroup = groupMap.get(definition.value);\n if (existingGroup) {\n return {\n ...existingGroup,\n groupName: definition.value,\n groupLabel: definition.label,\n };\n }\n\n return createEmptyKanbanGroup(definition, recordsInSwimlane);\n });\n};\n\n\nexport const SolidKanbanView = (params: SolidKanbanViewParams) => {\n\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n const dispatch = useDispatch()\n\n const solidGlobalSearchElementRef = useRef();\n const router = useRouter();\n const searchParams = useSearchParams();\n // TODO: The initial filter state will be created based on the fields which are present on this kanban view. \n const [filters, setFilters] = useState<any>();\n const [toPopulate, setToPopulate] = useState<string[]>([]);\n const [toPopulateMedia, setToPopulateMedia] = useState<string[]>([]);\n const [actionsAllowed, setActionsAllowed] = useState<string[]>([]);\n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n const [showArchived, setShowArchived] = useState(false);\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 const [size, setSize] = useState<string | any>(sizeOptions[1].value);\n const [viewModes, setViewModes] = useState<any>([]);\n const [groupByFieldName, setGroupByFieldName] = useState<string>(\"\");\n const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();\n const [openLightbox, setOpenLightbox] = useState(false);\n const [lightboxUrls, setLightboxUrls] = useState<any[]>([]);\n const [filterQueryString, setFilterQueryString] = useState<any>();\n const [isLayoutDialogVisible, setLayoutDialogVisible] = useState(false);\n const [swimlaneDefinitions, setSwimlaneDefinitions] = useState<KanbanSwimlaneDefinition[]>([]);\n const lightboxSlides: SolidLightboxSlide[] = Array.isArray(lightboxUrls)\n ? lightboxUrls\n .map((item: any) => {\n const src = item?.src || item?.downloadUrl || \"\";\n if (!src) {\n return null;\n }\n const mediaType = getMediaTypeFromUrl(src);\n const slide: SolidLightboxSlide = { src };\n if (mediaType !== \"image\") {\n slide.type = mediaType;\n }\n return slide;\n })\n .filter((slide): slide is SolidLightboxSlide => !!slide)\n : [];\n\n const pushFiltersToRouter = (filterQueryString: any) => {\n // @ts-ignore\n router.push(`?${filterQueryString}`, undefined, { shallow: true });\n };\n\n useEffect(() => {\n if (filterQueryString) {\n pushFiltersToRouter(filterQueryString);\n }\n }, [filterQueryString]);\n\n\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, 'findMany'),\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 // Create the RTK slices for this entity\n const entityApi = createSolidEntityApi(params.modelName);\n const {\n useDeleteMultipleSolidEntitiesMutation,\n useLazyGetSolidEntitiesQuery,\n usePatchUpdateSolidEntityMutation\n } = entityApi;\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 // Get the kanban view layout & metadata first. \n const kanbanViewMetaDataQs = qs.stringify(\n {\n modelName: params.modelName,\n moduleName: params.moduleName,\n viewType: \"kanban\",\n menuItemId: menuItemId,\n menuItemName: menuItemName,\n actionId: actionId,\n actionName: actionName,\n },\n {\n encodeValuesOnly: true,\n }\n );\n const [kanbanViewMetaData, setKanbanViewMetaData] = useState<any>({});\n\n const { data: solidKanbanViewMetaData } = useGetSolidViewLayoutQuery(kanbanViewMetaDataQs);\n\n const initialFilterMethod = () => {\n\n const solidView = solidKanbanViewMetaData.data.solidView;\n const solidFieldsMetadata = solidKanbanViewMetaData.data.solidFieldsMetadata;\n\n const initialFilters: any = {};\n const toPopulate: string[] = [];\n const toPopulateMedia: string[] = [];\n function findCardNode(nodes: any[] = []): any {\n for (const node of nodes) {\n if (!node) continue;\n if (node.type === \"card\") return node;\n if (Array.isArray(node.children) && node.children.length > 0) {\n const nestedCard = findCardNode(node.children);\n if (nestedCard) return nestedCard;\n }\n }\n\n return null;\n }\n function extractFields(nodes: any, result: any = []) {\n if (!nodes) return result;\n if (Array.isArray(nodes)) {\n nodes.forEach((node: any) => extractFields(node, result));\n return result;\n }\n if (nodes.type === \"field\") {\n result.push(nodes);\n }\n if (nodes.children) {\n nodes.children.forEach((child: any) => extractFields(child, result));\n }\n return result;\n }\n\n const cardNode = findCardNode(solidView?.layout?.children || []);\n const fieldSource = cardNode?.children?.length ? cardNode.children : solidView.layout;\n const layoutFields = extractFields(fieldSource);\n\n for (let i = 0; i < layoutFields.length; i++) {\n const column = layoutFields[i];\n const fieldMetadata = solidFieldsMetadata[column.attrs.name];\n if (fieldMetadata) {\n\n // Form the initial filters after iterating over the columns and field metadata. \n if (['int', 'bigint', 'float', 'decimal'].includes(fieldMetadata.type)) {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.EQUALS }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.EQUALS }\n }\n else if (['date', 'datetime', 'time', 'boolean'].includes(fieldMetadata.type)) {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.DATE_IS }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.EQUALS }\n }\n else if (['relation', 'selectionStatic', 'selectionDynamic'].includes(fieldMetadata.type)) {\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.IN }\n }\n else {\n // initialFilters[column.attrs.name] = { operator: FilterOperator.OR, constraints: [{ value: null, matchMode: FilterMatchMode.STARTS_WITH }] }\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.STARTS_WITH }\n }\n\n if (column.attrs.name === 'id') {\n initialFilters[column.attrs.name] = { value: null, matchMode: FilterMatchMode.IN }\n }\n\n // Form the \"toPopulate\" array. \n if (fieldMetadata.type === 'relation') {\n toPopulate.push(fieldMetadata.name);\n }\n if (fieldMetadata.type === 'mediaSingle' || fieldMetadata.type === 'mediaMultiple') {\n toPopulateMedia.push(fieldMetadata.name);\n }\n }\n }\n\n // setFilters(initialFilters);\n const recordsInSwimlane = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane : 10;\n // setToPopulate(toPopulate);\n // setToPopulateMedia(toPopulateMedia);\n // setRecordsInSwimlane(recordsInSwimlane);\n // setToPopulate(toPopulate);\n // setToPopulateMedia(toPopulateMedia);\n return { recordsInSwimlane, toPopulate, toPopulateMedia }\n }\n\n\n // Initial Filter data \n useEffect(() => {\n\n if (solidKanbanViewMetaData) {\n setKanbanViewMetaData(solidKanbanViewMetaData);\n setViewModes(solidKanbanViewMetaData?.data?.viewModes);\n setGroupByFieldName(solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.groupBy || \"\");\n }\n }, [solidKanbanViewMetaData]);\n\n // All kanban view state.\n const [kanbanViewData, setKanbanViewData] = useState<any>([]);\n const [kanbanLoadMoreData, setKanbanLoadMoreData] = useState<any>({});\n const [recordsInSwimlane, setRecordsInSwimlane] = useState(10);\n const [selectedRecords, setSelectedRecords] = useState<any[]>([]);\n const [loading, setLoading] = useState<boolean>(true);\n const [isDialogVisible, setDialogVisible] = useState(false);\n const [createButtonUrl, setCreateButtonUrl] = useState<string>();\n const [editButtonUrl, setEditButtonUrl] = useState<string>();\n const [createActionQueryParams, setCreateActionQueryParams] = useState<Record<string, string>>({});\n const [editActionQueryParams, setEditActionQueryParams] = useState<Record<string, string>>({});\n const [columnsCount, setColumnsCount] = useState(5);\n const [swimLaneCurrentPageNumber, setSwimLaneCurrentPageNumber] = useState(1);\n const [queryDataLoaded, setQueryDataLoaded] = useState(false);\n const [showSaveFilterPopup, setShowSaveFilterPopup] = useState<boolean>(false);\n const [maxSwimLanesCount, setMaxSwimLanesCount] = useState<number>(0);\n const [rawKanbanGroupRecords, setRawKanbanGroupRecords] = useState<any[]>([]);\n const [serverSwimLaneCount, setServerSwimLaneCount] = useState<number>(0);\n const pathname = usePathname();\n // @ts-ignore\n const editBaseUrl = normalizeSolidListTreeKanbanActionPath(pathname, editButtonUrl || \"form\");\n // Get the kanban view data.\n // const [triggerGetSolidEntitiesForKanban, { data: solidEntityKanbanViewData, isLoading, error }] = useLazyGetSolidKanbanEntitiesQuery();\n const [triggerGetSolidEntities, { data: solidEntityKanbanViewData }] = useLazyGetSolidEntitiesQuery();\n\n // Delete mutation \n const [\n deleteManySolidEntities,\n {\n isLoading: isDeleteSolidEntitiesLoading,\n isSuccess: isDeleteSolidEntitiesSucess,\n },\n ] = useDeleteMultipleSolidEntitiesMutation();\n const [\n patchKanbanView,\n {\n isLoading: isPatchKanbanViewLoading,\n },\n ] = usePatchUpdateSolidEntityMutation();\n\n // After data is fetched populate the kanban view state so as to be able to render the data. \n useEffect(() => {\n if (solidEntityKanbanViewData) {\n setServerSwimLaneCount(solidEntityKanbanViewData?.meta?.totalRecords || 0);\n setRawKanbanGroupRecords(solidEntityKanbanViewData?.groupRecords || []);\n setLoading(false);\n }\n }, [solidEntityKanbanViewData]);\n\n useEffect(() => {\n const mergedKanbanGroupData = mergeKanbanGroupsWithDefinitions(\n rawKanbanGroupRecords,\n swimlaneDefinitions,\n recordsInSwimlane\n );\n setKanbanViewData(mergedKanbanGroupData);\n setMaxSwimLanesCount(swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : serverSwimLaneCount);\n\n const loadmoredata = Object.entries(mergedKanbanGroupData).reduce((acc: any, [, value]: any) => {\n acc[value.groupName] = {\n offset: ((value.groupData?.meta?.currentPage || 1) - 1) * (value.groupData?.meta?.perPage || recordsInSwimlane),\n limit: value.groupData?.meta?.perPage || recordsInSwimlane,\n count: value.groupData?.meta?.totalRecords || 0\n };\n return acc;\n }, {});\n\n setKanbanLoadMoreData(loadmoredata);\n }, [rawKanbanGroupRecords, recordsInSwimlane, serverSwimLaneCount, swimlaneDefinitions]);\n\n useEffect(() => {\n if (solidKanbanViewMetaData) {\n const kanbanViewLayoutAttrs = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs;\n const createActionUrl = kanbanViewLayoutAttrs?.createAction && kanbanViewLayoutAttrs?.createAction?.type === \"custom\" ? kanbanViewLayoutAttrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = kanbanViewLayoutAttrs?.editAction && kanbanViewLayoutAttrs?.editAction?.type === \"custom\" ? kanbanViewLayoutAttrs?.editAction?.customComponent : \"form\";\n\n if (kanbanViewLayoutAttrs?.createAction) {\n setCreateActionQueryParams({\n actionName: kanbanViewLayoutAttrs.createAction.name,\n actionType: kanbanViewLayoutAttrs.createAction.type,\n actionContext: kanbanViewLayoutAttrs.createAction.context,\n });\n }\n if (kanbanViewLayoutAttrs?.editAction) {\n setEditActionQueryParams({\n actionName: kanbanViewLayoutAttrs.editAction.name,\n actionType: kanbanViewLayoutAttrs.editAction.type,\n actionContext: kanbanViewLayoutAttrs.editAction.context,\n });\n }\n\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl)\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl)\n }\n }\n }, [solidKanbanViewMetaData])\n\n useEffect(() => {\n const loadSwimlaneDefinitions = async () => {\n const fieldMeta = solidKanbanViewMetaData?.data?.solidFieldsMetadata?.[groupByFieldName];\n const layoutAttrs = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs || {};\n\n if (!groupByFieldName || !fieldMeta) {\n setSwimlaneDefinitions([]);\n return;\n }\n\n if (fieldMeta.type === \"selectionStatic\" && Array.isArray(fieldMeta.selectionStaticValues)) {\n const staticDefinitions = fieldMeta.selectionStaticValues\n .map((item: string) => {\n const [rawValue, rawLabel] = String(item).split(\":\");\n const value = (rawValue ?? \"\").trim();\n const label = (rawLabel ?? rawValue ?? \"\").trim();\n return { value, label };\n })\n .filter((item: KanbanSwimlaneDefinition) => item.value !== \"\");\n\n setSwimlaneDefinitions(staticDefinitions);\n return;\n }\n\n if (\n fieldMeta.type === \"relation\" &&\n fieldMeta.relationType === \"many-to-one\" &&\n fieldMeta.relationCoModelSingularName\n ) {\n try {\n const orderBy = getKanbanSortParam(layoutAttrs.swimlanesOrderBy);\n const relationUserKeyField = fieldMeta?.relationModel?.userKeyField?.name || \"id\";\n const response = await solidGet(`/${kebabCase(fieldMeta.relationCoModelSingularName)}`, {\n params: {\n offset: 0,\n limit: 100,\n sort: [orderBy],\n },\n });\n\n const records = response?.data?.data?.records || [];\n const relationDefinitions = records\n .map((record: any) => ({\n value: String(record?.id ?? \"\"),\n label: String(record?.[relationUserKeyField] ?? record?.id ?? \"\"),\n }))\n .filter((item: KanbanSwimlaneDefinition) => item.value !== \"\");\n\n setSwimlaneDefinitions(relationDefinitions);\n return;\n } catch (error) {\n console.error(ERROR_MESSAGES.API_ERROR, error);\n }\n }\n\n setSwimlaneDefinitions([]);\n };\n\n loadSwimlaneDefinitions();\n }, [groupByFieldName, solidKanbanViewMetaData])\n\n // Fetch data after toPopulate has been populated...\n useEffect(() => {\n\n if (solidKanbanViewMetaData) {\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n const resolvedSwimlanesCount = swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : swimlanesCount;\n if (groupByFieldName) {\n\n const queryObject = getFilterObjectFromLocalStorage();\n let queryString = \"\";\n if (queryObject) {\n const filters = {\n $and: []\n }\n if (queryObject.custom_filter_predicate) {\n // @ts-ignore\n filters.$and.push(queryObject.custom_filter_predicate);\n }\n if (queryObject.search_predicate) {\n // @ts-ignore\n filters.$and.push(queryObject.search_predicate);\n }\n // if (queryObject.saved_filter_predicate) {\n // filters.$and.push(queryObject.saved_filter_predicate);\n // }\n // if (queryObject.predefined_search_predicate) {\n // filters.$and.push(queryObject.predefined_search_predicate);\n // }\n\n const queryData = {\n offset: 0,\n limit: swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : Number(queryObject.limit) + Number(queryObject.offset),\n // fields: queryObject.fields || [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: queryObject.groupBy || groupByFieldName,\n // @ts-ignore\n populateMedia: queryObject.populateMedia || toPopulateMedia,\n populateGroup: queryObject.populateGroup || true,\n groupFilter: {\n limit: Number(queryObject.groupFilter.limit) + Number(queryObject.groupFilter.offset) || kanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane,\n offset: 0,\n filters: filters,\n // @ts-ignore\n populate: queryObject.groupFilter.populate || toPopulate,\n // @ts-ignore\n populateMedia: queryObject.groupFilter.populateMedia || toPopulateMedia\n }\n // sort: [`id:desc`],\n };\n\n\n const { recordsInSwimlane, toPopulate, toPopulateMedia } = initialFilterMethod();\n setToPopulate(toPopulate);\n setToPopulateMedia(toPopulateMedia);\n setRecordsInSwimlane(recordsInSwimlane);\n // setFilters(filters);\n setQueryDataLoaded(true);\n\n queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n } else {\n const { recordsInSwimlane, toPopulate, toPopulateMedia } = initialFilterMethod();\n const queryData = {\n offset: 0,\n limit: resolvedSwimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n groupFilter: {\n limit: kanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane || 10,\n offset: 0,\n filters: filters,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n }\n // sort: [`id:desc`],\n };\n setRecordsInSwimlane(recordsInSwimlane);\n setToPopulate(toPopulate);\n setToPopulateMedia(toPopulateMedia);\n\n // fields=status&groupBy=status&fields=count(status)&populateGroup=true\n queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n setQueryDataLoaded(true)\n }\n\n // triggerGetSolidEntities(queryString);\n setSelectedRecords([]);\n }\n }\n }, [groupByFieldName, isDeleteSolidEntitiesSucess, solidKanbanViewMetaData, swimlaneDefinitions]);\n\n // clickable link allowing one to open the detail / form view.\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 setDialogVisible(false);\n };\n\n // handle closing of the delete dialog...\n const onDeleteClose = () => {\n setDialogVisible(false);\n setSelectedRecords([]);\n }\n\n\n // Individual Swimlane Load More\n const handleLoadMore = async (groupByField: string) => {\n const { offset, limit } = kanbanLoadMoreData[groupByField];\n kanbanLoadMoreData[groupByField].offset = offset + limit;\n try {\n const queryData = {\n offset: offset + limit,\n limit: limit,\n populate: toPopulate,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n filters: {\n [groupByFieldName]: {\n $in: [groupByField],\n },\n ...filters\n }\n }\n\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n // router.push(`?${queryString}`);\n const data: any = await triggerGetSolidEntities(queryString);\n const newRecords = data.data.records;\n const mergeData = (\n kanbanViewData: any[],\n newRecords: any[],\n groupByField: string\n ) => {\n // Find the group matching the specified groupByField\n const originalData = structuredClone(kanbanViewData);\n const targetGroup = originalData.find(\n (group: any) => group.groupName === groupByField\n );\n if (targetGroup) {\n const { groupData } = targetGroup;\n\n if (targetGroup.groupData) {\n // Extract existing records\n const existingRecords = targetGroup.groupData.records;\n const updatedRecords = [...existingRecords, ...newRecords];\n targetGroup.groupData.records = updatedRecords\n\n\n // Update the meta data (you can adjust this logic as needed)\n groupData.meta.prevPage = groupData.meta.currentPage\n groupData.meta.currentPage = groupData.meta.currentPage + 1\n groupData.meta.nextPage = groupData.meta.currentPage + 1\n }\n }\n return originalData;\n };\n\n\n const updatedData = mergeData(kanbanViewData, newRecords, groupByField);\n setKanbanViewData(updatedData);\n setRawKanbanGroupRecords((previousGroups: any[]) => {\n const existingGroups = Array.isArray(previousGroups) ? previousGroups : [];\n return updatedData\n .filter((group: any) => (group.groupData?.meta?.totalRecords || 0) > 0)\n .map((group: any) => {\n const existingGroup = existingGroups.find((item: any) => String(item.groupName) === String(group.groupName));\n return existingGroup ? { ...existingGroup, ...group } : group;\n });\n })\n\n } catch (error) {\n console.error(ERROR_MESSAGES.LOAD_MORE_DATA, error);\n }\n };\n\n\n // Handle drag-and-drop functionality\n // @ts-ignore\n const onDragEnd = async (result: DropResult): void => {\n const { source, destination } = result;\n if (!destination) return;\n\n const sourceGroupName = source.droppableId;\n const destinationGroupName = destination.droppableId;\n\n // Find the source and destination groups\n const sourceGroupIndex = kanbanViewData.findIndex((group: any) => group.groupName === sourceGroupName);\n const destinationGroupIndex = kanbanViewData.findIndex((group: any) => group.groupName === destinationGroupName);\n\n if (sourceGroupIndex === -1 || destinationGroupIndex === -1) return;\n\n // If dragging within the same group\n if (sourceGroupName === destinationGroupName) {\n setKanbanViewData((prevData: typeof kanbanViewData) =>\n prevData.map((group: any) => {\n if (group.groupName === sourceGroupName) {\n const updatedRecords = [...group.groupData.records];\n const [movedItem] = updatedRecords.splice(source.index, 1); // Remove the item\n updatedRecords.splice(destination.index, 0, movedItem); // Insert at the new position\n\n return {\n ...group,\n groupData: {\n ...group.groupData,\n records: updatedRecords,\n },\n };\n }\n return group;\n })\n );\n return;\n }\n\n // Deep clone the source and destination groups\n const sourceGroup = JSON.parse(JSON.stringify(kanbanViewData[sourceGroupIndex]));\n const destinationGroup = JSON.parse(JSON.stringify(kanbanViewData[destinationGroupIndex]));\n\n // Clone the records for immutability\n const sourceRecords = [...sourceGroup.groupData.records];\n const destinationRecords = [...destinationGroup.groupData.records];\n\n // Remove the item from the source\n const [movedItem] = sourceRecords.splice(source.index, 1);\n\n // Create a mutable copy of the moved item\n const updatedItem = groupByFieldName\n ? { ...movedItem, [groupByFieldName]: destinationGroupName }\n : movedItem;\n\n // Add the updated item to the destination\n destinationRecords.splice(destination.index, 0, updatedItem);\n\n // Update the group data\n sourceGroup.groupData.records = sourceRecords;\n destinationGroup.groupData.records = destinationRecords;\n\n // Update the kanbanViewData state\n const oldkanbanViewData = structuredClone(kanbanViewData);\n try {\n const formData = new FormData();\n formData.append(groupByFieldName, destinationGroupName);\n // Update the kanbanViewData state\n setKanbanViewData((prevData: typeof kanbanViewData) =>\n prevData.map((group: any) => {\n if (group.groupName === sourceGroupName) {\n return sourceGroup;\n }\n if (group.groupName === destinationGroupName) {\n return destinationGroup;\n }\n return group;\n })\n );\n const kanbanUpdateResponse = await patchKanbanView({ id: +movedItem.id, data: formData }).unwrap();\n\n if (kanbanUpdateResponse?.statusCode === 200) {\n dispatch(showToast({ severity: \"success\", summary: ERROR_MESSAGES.IS_SUCCESS, detail: ERROR_MESSAGES.KANBAN_UPDATED }));\n } else {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.DUPLICATE_KEY, detail: kanbanUpdateResponse?.error }));\n // Update the kanbanViewData state\n setKanbanViewData(oldkanbanViewData);\n }\n } catch (error: any) {\n // 6. Handle 500 or network errors\n console.error(ERROR_MESSAGES.API_ERROR, error);\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.SOMETHING_WRONG, detail: error?.data?.message || ERROR_MESSAGES.SOMETHING_WRONG }));\n setKanbanViewData(oldkanbanViewData);\n }\n };\n\n\n // Handle SwimLane Pagination\n const handleSwimLanePagination = async () => {\n\n if (solidKanbanViewMetaData) {\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n const resolvedSwimlanesCount = swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : swimlanesCount;\n const queryData = {\n offset: swimLaneCurrentPageNumber * swimlanesCount,\n limit: resolvedSwimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populate: toPopulate,\n populateGroup: true,\n groupFilter: {\n limit: recordsInSwimlane,\n offset: 0,\n filters: filters,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n\n }\n // sort: [`id:desc`],\n };\n // fields=status&groupBy=status&fields=count(status)&populateGroup=true\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n const data: any = await triggerGetSolidEntities(queryString);\n if (data && data?.data?.groupRecords.length > 0) {\n setRawKanbanGroupRecords((previousGroups: any[]) => {\n const groupMap = new Map((previousGroups || []).map((group: any) => [String(group.groupName), group]));\n data.data.groupRecords.forEach((group: any) => {\n groupMap.set(String(group.groupName), group);\n });\n return Array.from(groupMap.values());\n });\n }\n setSwimLaneCurrentPageNumber(swimLaneCurrentPageNumber + 1)\n }\n }\n\n\n // Handle the custom filter and Search Filter\n const handleApplyCustomFilter = async (filterPredicates: any, persistFilter: boolean = false) => {\n\n if (solidKanbanViewMetaData) {\n const queryfilter = {\n $and: [\n ]\n }\n\n if (filterPredicates.custom_filter_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.custom_filter_predicate);\n }\n if (filterPredicates.search_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.search_predicate);\n }\n if (filterPredicates.saved_filter_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.saved_filter_predicate);\n }\n if (filterPredicates.predefined_search_predicate) {\n // @ts-ignore\n queryfilter.$and.push(filterPredicates.predefined_search_predicate);\n }\n\n const customFilter = filterPredicates;\n const updatedFilter = { ...(filters || {}), ...(queryfilter || {}) };\n\n // Then update state\n setFilters(updatedFilter);\n\n\n const swimlanesCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;\n const resolvedSwimlanesCount = swimlaneDefinitions.length > 0 ? swimlaneDefinitions.length : swimlanesCount;\n // const { toPopulate, toPopulateMedia } = initialFilterMethod();\n\n const queryData = {\n offset: 0,\n limit: resolvedSwimlanesCount,\n // fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],\n groupBy: groupByFieldName,\n populateMedia: toPopulateMedia,\n populateGroup: true,\n groupFilter: {\n limit: recordsInSwimlane,\n offset: 0,\n filters: updatedFilter,\n populate: toPopulate,\n populateMedia: toPopulateMedia\n }\n }\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true\n });\n\n // s_filter and c_filter format that needs to be passed to the router\n // only present if handleCustomFilter is applied\n if (customFilter) {\n const urlData = structuredClone(queryData);\n // @ts-ignore\n delete urlData.filters;\n // urlData.s_filter = customFilter.s_filter || {};\n // urlData.c_filter = customFilter.c_filter || {};\n // @ts-ignore\n urlData.custom_filter_predicate = customFilter.custom_filter_predicate || {};\n // @ts-ignore\n urlData.search_predicate = customFilter.search_predicate || {};\n // @ts-ignore\n setFilterObjectToLocalStorage(urlData);\n }\n\n\n const data: any = await triggerGetSolidEntities(queryString);\n\n // Update the kanban view data with the new data based on filter\n setSwimLaneCurrentPageNumber(1);\n if (data && data?.data?.groupRecords.length > 0) {\n setRawKanbanGroupRecords([...data.data.groupRecords]);\n } else {\n setRawKanbanGroupRecords([]);\n }\n setSelectedRecords([]);\n\n\n }\n\n }\n\n useEffect(() => {\n if (solidKanbanViewMetaData) {\n const createActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.type === \"custom\" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.customComponent : \"form/new\";\n const editActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.type === \"custom\" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.customComponent : \"form\";\n if (createActionUrl) {\n setCreateButtonUrl(createActionUrl)\n }\n if (editActionUrl) {\n setEditButtonUrl(editActionUrl)\n }\n }\n }, [solidKanbanViewMetaData])\n\n const kanbanViewTitle = solidKanbanViewMetaData?.data?.solidView?.displayName\n const entityDisplayName = solidKanbanViewMetaData?.data?.solidView?.model?.displayName || params.modelName;\n const headerRequestStatusLabel = isDeleteSolidEntitiesLoading ? \"Deleting...\" : isPatchKanbanViewLoading ? \"Updating...\" : loading || !queryDataLoaded ? \"Loading...\" : null;\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n console.log(`Logging kanban data: `, solidKanbanViewMetaData); \n\n return (\n <div className=\"page-parent-wrapper solid-list-page-wrapper flex h-full min-h-0 overflow-hidden\">\n <div className=\"solid-list-content flex flex-column flex-grow-1\">\n <div className=\"solid-list-surface solid-kanban-surface flex flex-column flex-1 min-h-0\">\n <div className=\"page-header solid-list-toolbar solid-kanban-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 {params.embeded !== true &&\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <SolidIcon name=\"si-th-large\" aria-hidden />\n </div>\n }\n\n <p className=\"m-0 view-title solid-text-wrapper\">{kanbanViewTitle}</p>\n <div className=\"hidden lg:flex\">\n {/* Keep global search mounted for now because kanban bootstrap/filter hydration still flows through this element. */}\n <SolidGlobalSearchElement viewType=\"kanban\" showSaveFilterPopup={showSaveFilterPopup} setShowSaveFilterPopup={setShowSaveFilterPopup} ref={solidGlobalSearchElementRef} viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>\n </div>\n </div>\n\n <div className=\"flex align-items-center solid-header-buttons-wrapper solid-list-toolbar-actions\">\n <SolidHeaderRequestStatus label={headerRequestStatusLabel} />\n <div className=\"flex lg:hidden\">\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n onClick={() => setShowGlobalSearchElement(!showGlobalSearchElement)}\n aria-label=\"Toggle search\"\n leftIcon={<SolidIcon name=\"si-search\" aria-hidden />}\n />\n </div>\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'create')}`) && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.create !== false &&\n <SolidCreateButton createButtonUrl={createButtonUrl} createActionQueryParams={createActionQueryParams} responsiveIconOnly={true} />\n }\n\n {actionsAllowed.includes(`${permissionExpression(params.modelName, 'delete')}`) && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.delete !== false && selectedRecords.length > 0 && <SolidButton\n type=\"button\"\n variant=\"destructive\"\n size=\"sm\"\n onClick={() => setDialogVisible(true)}\n >\n Delete\n </SolidButton>}\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n onClick={() => {\n window.location.reload()\n }}\n aria-label=\"Refresh board\"\n leftIcon={<SolidIcon name=\"si-refresh\" aria-hidden />}\n />\n <SolidKanbanViewConfigure\n solidKanbanViewMetaData={solidKanbanViewMetaData}\n modelName={params.modelName}\n actionsAllowed={actionsAllowed}\n viewModes={viewModes}\n setLayoutDialogVisible={setLayoutDialogVisible}\n setShowSaveFilterPopup={setShowSaveFilterPopup}\n filters={filters}\n handleRefreshView={() => window.location.reload()}\n />\n </div>\n </div>\n {showGlobalSearchElement && (\n <div className=\"flex lg:hidden\">\n <SolidGlobalSearchElement viewType=\"kanban\" showSaveFilterPopup={showSaveFilterPopup} setShowSaveFilterPopup={setShowSaveFilterPopup} ref={solidGlobalSearchElementRef} viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>\n </div>\n )}\n </div>\n\n <style>{`.p-datatable .p-datatable-loading-overlay {background-color: rgba(0, 0, 0, 0.0);}`}</style>\n {solidKanbanViewMetaData && kanbanViewData &&\n <KanbanBoard groupByFieldName={groupByFieldName} kanbanViewData={kanbanViewData} maxSwimLanesCount={maxSwimLanesCount} solidKanbanViewMetaData={solidKanbanViewMetaData?.data} setKanbanViewData={setKanbanViewData} handleLoadMore={handleLoadMore} onDragEnd={onDragEnd} handleSwimLanePagination={handleSwimLanePagination} setLightboxUrls={setLightboxUrls} setOpenLightbox={setOpenLightbox} editButtonUrl={editBaseUrl}></KanbanBoard>\n }\n </div>\n </div>\n\n <SolidConfirmDialog\n open={isDialogVisible}\n onCancel={onDeleteClose}\n onConfirm={deleteBulk}\n className=\"solid-shadcn-confirm-dialog solid-delete-confirm-dialog\"\n headerClassName=\"solid-shadcn-dialog-head\"\n bodyClassName=\"solid-shadcn-dialog-body\"\n footerClassName=\"solid-shadcn-dialog-actions\"\n separatorClassName=\"solid-shadcn-dialog-sep\"\n showSeparator\n title={`Delete ${entityDisplayName}`}\n message={<p className=\"solid-shadcn-dialog-text\">{`Are you sure you want to delete the selected ${entityDisplayName} records?`}</p>}\n confirmLabel=\"Delete\"\n cancelLabel=\"Cancel\"\n />\n {openLightbox && (\n <SolidLightbox\n open={openLightbox}\n slides={lightboxSlides}\n onClose={() => setOpenLightbox(false)}\n />\n )}\n <SolidDialog\n open={isLayoutDialogVisible}\n onOpenChange={setLayoutDialogVisible}\n className=\"solid-kanban-layout-dialog\"\n style={{ width: \"min(800px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Change Kanban Layout</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody className=\"solid-kanban-layout-dialog-body\">\n <KanbanUserViewLayout solidKanbanViewMetaData={solidKanbanViewMetaData} setLayoutDialogVisible={setLayoutDialogVisible} />\n </SolidDialogBody>\n </SolidDialog>\n </div>\n );\n};\n"]}
|
|
@@ -937,7 +937,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
937
937
|
|
|
938
938
|
return (
|
|
939
939
|
<div className="page-parent-wrapper solid-list-page-wrapper flex h-full min-h-0 overflow-hidden">
|
|
940
|
-
<div className="solid-list-content
|
|
940
|
+
<div className="solid-list-content flex flex-column flex-grow-1">
|
|
941
941
|
<div className="solid-list-surface solid-kanban-surface flex flex-column flex-1 min-h-0">
|
|
942
942
|
<div className="page-header solid-list-toolbar solid-kanban-toolbar flex-column lg:flex-row">
|
|
943
943
|
<div className="flex justify-content-between w-full">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidDataTable.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidDataTable.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
21
21
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
22
|
import React from "react";
|
|
23
23
|
import { ArrowDownWideNarrow, ArrowUpDown, ArrowUpWideNarrow } from "lucide-react";
|
|
24
|
+
import { SolidSelect } from "../../shad-cn-ui/SolidSelect";
|
|
24
25
|
export function Column(_props) {
|
|
25
26
|
return null;
|
|
26
27
|
}
|
|
@@ -157,6 +158,6 @@ export function SolidDataTable(_a) {
|
|
|
157
158
|
: null;
|
|
158
159
|
return (_jsx("td", { className: cx("solid-data-table-td align-top text-foreground", props.frozen ? "solid-tree-sticky-cell" : undefined, props.frozen && props.alignFrozen === "right" ? "solid-tree-sticky-cell-right" : undefined, props.frozen && props.alignFrozen !== "right" ? "solid-tree-sticky-cell-left" : undefined, isSelectionColumn ? "solid-data-table-selection-col" : undefined, props.className), style: getFrozenCellStyle(props, props.style), children: content }, "cell-".concat(key, "-").concat(index)));
|
|
159
160
|
}) }, key));
|
|
160
|
-
})) })] }) }), typeof onPage === "function" ? (_jsxs("div", { className: cx("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", paginatorClassName), children: [_jsxs("div", { className: "solid-paginator-meta flex items-center gap-2 ml-auto", children: [_jsx("span", { className: "solid-paginator-label", children: "Rows" }), _jsx(
|
|
161
|
+
})) })] }) }), typeof onPage === "function" ? (_jsxs("div", { className: cx("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-2 sm:px-3 py-1.5 bg-background", paginatorClassName), children: [_jsxs("div", { className: "solid-paginator-meta flex items-center gap-2 sm:ml-auto", children: [_jsx("span", { className: "solid-paginator-label", children: "Rows" }), _jsx(SolidSelect, { value: rows, onChange: function (event) { return onPage({ first: 0, rows: Number(event.value) }); }, className: "solid-paginator-select", options: rowsPerPageOptions.map(function (option) { return ({ label: String(option), value: option }); }), native: false }), _jsx("span", { className: "solid-paginator-report", children: report })] }), _jsxs("div", { className: "solid-paginator-actions flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.max(0, first - rows), rows: rows }); }, disabled: currentPage <= 1, children: "Previous" }), _jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.min((totalPages - 1) * rows, first + rows), rows: rows }); }, disabled: currentPage >= totalPages, children: "Next" })] })] })) : null] }));
|
|
161
162
|
}
|
|
162
163
|
//# sourceMappingURL=SolidDataTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidDataTable.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { ArrowDownWideNarrow, ArrowUpDown, ArrowUpWideNarrow } from \"lucide-react\";\n\nexport type DataTableStateEvent = {\n sortField?: string;\n sortOrder?: 1 | -1 | 0;\n};\n\ntype HeaderRenderer = React.ReactNode | (() => React.ReactNode);\ntype BodyRenderer = (rowData: any) => React.ReactNode;\n\nexport type SolidColumnProps = {\n field?: string;\n header?: HeaderRenderer;\n body?: BodyRenderer;\n sortable?: boolean;\n selectionMode?: \"multiple\" | \"single\" | null;\n headerStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n className?: string;\n headerClassName?: string;\n frozen?: boolean;\n alignFrozen?: \"left\" | \"right\";\n frozenBackground?: string;\n [key: string]: any;\n};\n\nexport function Column(_props: SolidColumnProps) {\n return null;\n}\n\ntype SolidDataTableProps = {\n value: any[];\n children: React.ReactNode;\n size?: \"small\" | \"normal\" | \"large\";\n viewportHeight?: string;\n dataKey?: string;\n emptyMessage?: React.ReactNode;\n rows?: number;\n first?: number;\n totalRecords?: number;\n rowsPerPageOptions?: number[];\n onPage?: (event: { first: number; rows: number }) => void;\n onSort?: (event: DataTableStateEvent) => void;\n sortField?: string;\n sortOrder?: 1 | -1 | 0;\n removableSort?: boolean;\n selection?: any[];\n selectionMode?: \"checkbox\" | null;\n onSelectionChange?: (event: { value: any[] }) => void;\n onRowClick?: (event: { data: any }) => void;\n rowClassName?: (rowData: any) => string;\n tableClassName?: string;\n paginatorClassName?: string;\n currentPageReportTemplate?: string;\n [key: string]: any;\n};\n\nconst cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(\" \");\n\nfunction renderHeaderNode(header?: HeaderRenderer) {\n if (typeof header === \"function\") return header();\n return header ?? null;\n}\n\nfunction normalizeColumns(children: React.ReactNode): React.ReactElement<SolidColumnProps>[] {\n return React.Children.toArray(children).filter((child): child is React.ReactElement<SolidColumnProps> => {\n return React.isValidElement(child);\n });\n}\n\nfunction resolveSortIcon(active: boolean, order: 1 | -1 | 0): React.ReactNode {\n if (!active || order === 0) return <ArrowUpDown size={14} aria-hidden=\"true\" />;\n return order === 1\n ? <ArrowUpWideNarrow size={14} aria-hidden=\"true\" />\n : <ArrowDownWideNarrow size={14} aria-hidden=\"true\" />;\n}\n\nfunction nextSortOrder(active: boolean, order: 1 | -1 | 0, removableSort = true): 1 | -1 | 0 {\n if (!active || order === 0) return 1;\n if (order === 1) return -1;\n return removableSort ? 0 : 1;\n}\n\nfunction getFrozenCellStyle(\n props: SolidColumnProps,\n baseStyle?: React.CSSProperties,\n isHeader: boolean = false\n): React.CSSProperties {\n if (!props.frozen) return baseStyle ?? {};\n\n const stickyStyle: React.CSSProperties = {\n position: \"sticky\",\n zIndex: isHeader ? 12 : 3,\n background: props.frozenBackground ?? \"var(--card)\",\n };\n\n if (props.alignFrozen === \"right\") {\n stickyStyle.right = 0;\n } else {\n stickyStyle.left = 0;\n }\n\n return { ...baseStyle, ...stickyStyle };\n}\n\nexport function SolidDataTable({\n value,\n children,\n size = \"normal\",\n viewportHeight,\n dataKey = \"id\",\n emptyMessage,\n rows = 25,\n first = 0,\n totalRecords = 0,\n rowsPerPageOptions = [10, 25, 50, 100],\n onPage,\n onSort,\n sortField,\n sortOrder = 0,\n removableSort = true,\n selection = [],\n selectionMode,\n onSelectionChange,\n onRowClick,\n rowClassName,\n tableClassName,\n paginatorClassName,\n currentPageReportTemplate = \"{first} - {last} of {totalRecords}\",\n}: SolidDataTableProps) {\n const columns = normalizeColumns(children);\n const pageRows = value ?? [];\n\n const selectedKeys = new Set((selection || []).map((row: any) => String(row?.[dataKey])));\n const allSelected = pageRows.length > 0 && pageRows.every((row: any) => selectedKeys.has(String(row?.[dataKey])));\n\n const start = totalRecords === 0 ? 0 : first + 1;\n const end = Math.min(first + rows, totalRecords);\n const currentPage = rows > 0 ? Math.floor(first / rows) + 1 : 1;\n const totalPages = rows > 0 ? Math.max(1, Math.ceil(totalRecords / rows)) : 1;\n\n const report = currentPageReportTemplate\n .replace(\"{first}\", String(start))\n .replace(\"{last}\", String(end))\n .replace(\"{totalRecords}\", String(totalRecords));\n\n const emitSelection = (nextSelection: any[]) => {\n onSelectionChange?.({ value: nextSelection });\n };\n\n const toggleSelectAll = (checked: boolean) => {\n if (!checked) {\n const pageKeys = new Set(pageRows.map((row: any) => String(row?.[dataKey])));\n emitSelection((selection || []).filter((row: any) => !pageKeys.has(String(row?.[dataKey]))));\n return;\n }\n const merged = [...(selection || [])];\n const mergedKeys = new Set(merged.map((row: any) => String(row?.[dataKey])));\n pageRows.forEach((row: any) => {\n const key = String(row?.[dataKey]);\n if (!mergedKeys.has(key)) merged.push(row);\n });\n emitSelection(merged);\n };\n\n const toggleRowSelection = (rowData: any, checked: boolean) => {\n const key = String(rowData?.[dataKey]);\n if (!checked) {\n emitSelection((selection || []).filter((row: any) => String(row?.[dataKey]) !== key));\n return;\n }\n emitSelection([...(selection || []), rowData]);\n };\n\n const densityClass =\n size === \"small\"\n ? \"solid-table-density-compact\"\n : size === \"large\"\n ? \"solid-table-density-comfortable\"\n : \"solid-table-density-cozy\";\n\n return (\n <div\n className={cx(\"solid-data-table-root w-full min-h-0\", densityClass)}\n style={{\n height: viewportHeight || \"100%\",\n maxHeight: viewportHeight || \"100%\",\n }}\n >\n <div className=\"solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background\">\n <table className={cx(\"w-full text-sm border-collapse\", tableClassName)}>\n <thead className=\"solid-data-table-head\" style={{ position: \"sticky\", top: 0, zIndex: 11 }}>\n <tr>\n {columns.map((column, index) => {\n const props = column.props;\n const isSelectionColumn = props.selectionMode === \"multiple\";\n const isSortable = Boolean(props.sortable && props.field && !isSelectionColumn);\n const isActiveSort = isSortable && sortField === props.field;\n const iconNode = resolveSortIcon(Boolean(isActiveSort), sortOrder);\n return (\n <th\n key={`header-${index}`}\n className={cx(\n \"solid-data-table-th text-left text-foreground whitespace-nowrap\",\n props.frozen ? \"solid-tree-sticky-cell\" : undefined,\n props.frozen && props.alignFrozen === \"right\" ? \"solid-tree-sticky-cell-right\" : undefined,\n props.frozen && props.alignFrozen !== \"right\" ? \"solid-tree-sticky-cell-left\" : undefined,\n isSelectionColumn ? \"solid-data-table-selection-col\" : undefined,\n props.headerClassName\n )}\n style={getFrozenCellStyle(props, { ...props.style, ...props.headerStyle }, true)}\n >\n {isSelectionColumn ? (\n <input\n type=\"checkbox\"\n checked={allSelected}\n onChange={(e) => toggleSelectAll(e.currentTarget.checked)}\n aria-label=\"Select all rows\"\n />\n ) : (\n <button\n type=\"button\"\n className={cx(\"solid-table-header-button\", isSortable ? \"is-sortable\" : undefined)}\n onClick={() => {\n if (!isSortable) return;\n const nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);\n onSort?.({\n sortField: nextOrder === 0 ? undefined : props.field,\n sortOrder: nextOrder,\n });\n }}\n >\n {renderHeaderNode(props.header)}\n {isSortable ? iconNode : null}\n </button>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {pageRows.length === 0 ? (\n <tr>\n <td className=\"px-3 py-6 text-center text-muted-foreground\" colSpan={Math.max(columns.length, 1)}>\n {emptyMessage || \"No records found\"}\n </td>\n </tr>\n ) : (\n pageRows.map((rowData: any) => {\n const key = String(rowData?.[dataKey]);\n const rowSelected = selectedKeys.has(key);\n return (\n <tr\n key={key}\n className={cx(\"solid-data-table-row\", rowClassName?.(rowData))}\n onClick={(event) => {\n const target = event.target as HTMLElement;\n if (target.closest(\"button,a,input,label,[data-no-row-click='true']\")) return;\n onRowClick?.({ data: rowData });\n }}\n >\n {columns.map((column, index) => {\n const props = column.props;\n const isSelectionColumn = props.selectionMode === \"multiple\";\n const content = isSelectionColumn\n ? (\n <input\n type=\"checkbox\"\n checked={rowSelected}\n onChange={(e) => toggleRowSelection(rowData, e.currentTarget.checked)}\n onClick={(e) => e.stopPropagation()}\n aria-label=\"Select row\"\n />\n )\n : props.body\n ? props.body(rowData)\n : props.field\n ? rowData?.[props.field]\n : null;\n return (\n <td\n key={`cell-${key}-${index}`}\n className={cx(\n \"solid-data-table-td align-top text-foreground\",\n props.frozen ? \"solid-tree-sticky-cell\" : undefined,\n props.frozen && props.alignFrozen === \"right\" ? \"solid-tree-sticky-cell-right\" : undefined,\n props.frozen && props.alignFrozen !== \"right\" ? \"solid-tree-sticky-cell-left\" : undefined,\n isSelectionColumn ? \"solid-data-table-selection-col\" : undefined,\n props.className\n )}\n style={getFrozenCellStyle(props, props.style)}\n >\n {content}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {typeof onPage === \"function\" ? (\n <div\n className={cx(\"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\", paginatorClassName)}\n >\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={rows}\n onChange={(e) => onPage({ first: 0, rows: Number(e.target.value) })}\n className=\"solid-paginator-select\"\n >\n {rowsPerPageOptions.map((option) => (\n <option key={option} value={option}>{option}</option>\n ))}\n </select>\n <span className=\"solid-paginator-report\">{report}</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={() => onPage({ first: Math.max(0, first - rows), rows })}\n disabled={currentPage <= 1}\n >\n Previous\n </button>\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.min((totalPages - 1) * rows, first + rows), rows })}\n disabled={currentPage >= totalPages}\n >\n Next\n </button>\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidDataTable.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { ArrowDownWideNarrow, ArrowUpDown, ArrowUpWideNarrow } from \"lucide-react\";\nimport { SolidSelect } from \"../../shad-cn-ui/SolidSelect\";\n\nexport type DataTableStateEvent = {\n sortField?: string;\n sortOrder?: 1 | -1 | 0;\n};\n\ntype HeaderRenderer = React.ReactNode | (() => React.ReactNode);\ntype BodyRenderer = (rowData: any) => React.ReactNode;\n\nexport type SolidColumnProps = {\n field?: string;\n header?: HeaderRenderer;\n body?: BodyRenderer;\n sortable?: boolean;\n selectionMode?: \"multiple\" | \"single\" | null;\n headerStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n className?: string;\n headerClassName?: string;\n frozen?: boolean;\n alignFrozen?: \"left\" | \"right\";\n frozenBackground?: string;\n [key: string]: any;\n};\n\nexport function Column(_props: SolidColumnProps) {\n return null;\n}\n\ntype SolidDataTableProps = {\n value: any[];\n children: React.ReactNode;\n size?: \"small\" | \"normal\" | \"large\";\n viewportHeight?: string;\n dataKey?: string;\n emptyMessage?: React.ReactNode;\n rows?: number;\n first?: number;\n totalRecords?: number;\n rowsPerPageOptions?: number[];\n onPage?: (event: { first: number; rows: number }) => void;\n onSort?: (event: DataTableStateEvent) => void;\n sortField?: string;\n sortOrder?: 1 | -1 | 0;\n removableSort?: boolean;\n selection?: any[];\n selectionMode?: \"checkbox\" | null;\n onSelectionChange?: (event: { value: any[] }) => void;\n onRowClick?: (event: { data: any }) => void;\n rowClassName?: (rowData: any) => string;\n tableClassName?: string;\n paginatorClassName?: string;\n currentPageReportTemplate?: string;\n [key: string]: any;\n};\n\nconst cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(\" \");\n\nfunction renderHeaderNode(header?: HeaderRenderer) {\n if (typeof header === \"function\") return header();\n return header ?? null;\n}\n\nfunction normalizeColumns(children: React.ReactNode): React.ReactElement<SolidColumnProps>[] {\n return React.Children.toArray(children).filter((child): child is React.ReactElement<SolidColumnProps> => {\n return React.isValidElement(child);\n });\n}\n\nfunction resolveSortIcon(active: boolean, order: 1 | -1 | 0): React.ReactNode {\n if (!active || order === 0) return <ArrowUpDown size={14} aria-hidden=\"true\" />;\n return order === 1\n ? <ArrowUpWideNarrow size={14} aria-hidden=\"true\" />\n : <ArrowDownWideNarrow size={14} aria-hidden=\"true\" />;\n}\n\nfunction nextSortOrder(active: boolean, order: 1 | -1 | 0, removableSort = true): 1 | -1 | 0 {\n if (!active || order === 0) return 1;\n if (order === 1) return -1;\n return removableSort ? 0 : 1;\n}\n\nfunction getFrozenCellStyle(\n props: SolidColumnProps,\n baseStyle?: React.CSSProperties,\n isHeader: boolean = false\n): React.CSSProperties {\n if (!props.frozen) return baseStyle ?? {};\n\n const stickyStyle: React.CSSProperties = {\n position: \"sticky\",\n zIndex: isHeader ? 12 : 3,\n background: props.frozenBackground ?? \"var(--card)\",\n };\n\n if (props.alignFrozen === \"right\") {\n stickyStyle.right = 0;\n } else {\n stickyStyle.left = 0;\n }\n\n return { ...baseStyle, ...stickyStyle };\n}\n\nexport function SolidDataTable({\n value,\n children,\n size = \"normal\",\n viewportHeight,\n dataKey = \"id\",\n emptyMessage,\n rows = 25,\n first = 0,\n totalRecords = 0,\n rowsPerPageOptions = [10, 25, 50, 100],\n onPage,\n onSort,\n sortField,\n sortOrder = 0,\n removableSort = true,\n selection = [],\n selectionMode,\n onSelectionChange,\n onRowClick,\n rowClassName,\n tableClassName,\n paginatorClassName,\n currentPageReportTemplate = \"{first} - {last} of {totalRecords}\",\n}: SolidDataTableProps) {\n const columns = normalizeColumns(children);\n const pageRows = value ?? [];\n\n const selectedKeys = new Set((selection || []).map((row: any) => String(row?.[dataKey])));\n const allSelected = pageRows.length > 0 && pageRows.every((row: any) => selectedKeys.has(String(row?.[dataKey])));\n\n const start = totalRecords === 0 ? 0 : first + 1;\n const end = Math.min(first + rows, totalRecords);\n const currentPage = rows > 0 ? Math.floor(first / rows) + 1 : 1;\n const totalPages = rows > 0 ? Math.max(1, Math.ceil(totalRecords / rows)) : 1;\n\n const report = currentPageReportTemplate\n .replace(\"{first}\", String(start))\n .replace(\"{last}\", String(end))\n .replace(\"{totalRecords}\", String(totalRecords));\n\n const emitSelection = (nextSelection: any[]) => {\n onSelectionChange?.({ value: nextSelection });\n };\n\n const toggleSelectAll = (checked: boolean) => {\n if (!checked) {\n const pageKeys = new Set(pageRows.map((row: any) => String(row?.[dataKey])));\n emitSelection((selection || []).filter((row: any) => !pageKeys.has(String(row?.[dataKey]))));\n return;\n }\n const merged = [...(selection || [])];\n const mergedKeys = new Set(merged.map((row: any) => String(row?.[dataKey])));\n pageRows.forEach((row: any) => {\n const key = String(row?.[dataKey]);\n if (!mergedKeys.has(key)) merged.push(row);\n });\n emitSelection(merged);\n };\n\n const toggleRowSelection = (rowData: any, checked: boolean) => {\n const key = String(rowData?.[dataKey]);\n if (!checked) {\n emitSelection((selection || []).filter((row: any) => String(row?.[dataKey]) !== key));\n return;\n }\n emitSelection([...(selection || []), rowData]);\n };\n\n const densityClass =\n size === \"small\"\n ? \"solid-table-density-compact\"\n : size === \"large\"\n ? \"solid-table-density-comfortable\"\n : \"solid-table-density-cozy\";\n\n return (\n <div\n className={cx(\"solid-data-table-root w-full min-h-0\", densityClass)}\n style={{\n height: viewportHeight || \"100%\",\n maxHeight: viewportHeight || \"100%\",\n }}\n >\n <div className=\"solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background\">\n <table className={cx(\"w-full text-sm border-collapse\", tableClassName)}>\n <thead className=\"solid-data-table-head\" style={{ position: \"sticky\", top: 0, zIndex: 11 }}>\n <tr>\n {columns.map((column, index) => {\n const props = column.props;\n const isSelectionColumn = props.selectionMode === \"multiple\";\n const isSortable = Boolean(props.sortable && props.field && !isSelectionColumn);\n const isActiveSort = isSortable && sortField === props.field;\n const iconNode = resolveSortIcon(Boolean(isActiveSort), sortOrder);\n return (\n <th\n key={`header-${index}`}\n className={cx(\n \"solid-data-table-th text-left text-foreground whitespace-nowrap\",\n props.frozen ? \"solid-tree-sticky-cell\" : undefined,\n props.frozen && props.alignFrozen === \"right\" ? \"solid-tree-sticky-cell-right\" : undefined,\n props.frozen && props.alignFrozen !== \"right\" ? \"solid-tree-sticky-cell-left\" : undefined,\n isSelectionColumn ? \"solid-data-table-selection-col\" : undefined,\n props.headerClassName\n )}\n style={getFrozenCellStyle(props, { ...props.style, ...props.headerStyle }, true)}\n >\n {isSelectionColumn ? (\n <input\n type=\"checkbox\"\n checked={allSelected}\n onChange={(e) => toggleSelectAll(e.currentTarget.checked)}\n aria-label=\"Select all rows\"\n />\n ) : (\n <button\n type=\"button\"\n className={cx(\"solid-table-header-button\", isSortable ? \"is-sortable\" : undefined)}\n onClick={() => {\n if (!isSortable) return;\n const nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);\n onSort?.({\n sortField: nextOrder === 0 ? undefined : props.field,\n sortOrder: nextOrder,\n });\n }}\n >\n {renderHeaderNode(props.header)}\n {isSortable ? iconNode : null}\n </button>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {pageRows.length === 0 ? (\n <tr>\n <td className=\"px-3 py-6 text-center text-muted-foreground\" colSpan={Math.max(columns.length, 1)}>\n {emptyMessage || \"No records found\"}\n </td>\n </tr>\n ) : (\n pageRows.map((rowData: any) => {\n const key = String(rowData?.[dataKey]);\n const rowSelected = selectedKeys.has(key);\n return (\n <tr\n key={key}\n className={cx(\"solid-data-table-row\", rowClassName?.(rowData))}\n onClick={(event) => {\n const target = event.target as HTMLElement;\n if (target.closest(\"button,a,input,label,[data-no-row-click='true']\")) return;\n onRowClick?.({ data: rowData });\n }}\n >\n {columns.map((column, index) => {\n const props = column.props;\n const isSelectionColumn = props.selectionMode === \"multiple\";\n const content = isSelectionColumn\n ? (\n <input\n type=\"checkbox\"\n checked={rowSelected}\n onChange={(e) => toggleRowSelection(rowData, e.currentTarget.checked)}\n onClick={(e) => e.stopPropagation()}\n aria-label=\"Select row\"\n />\n )\n : props.body\n ? props.body(rowData)\n : props.field\n ? rowData?.[props.field]\n : null;\n return (\n <td\n key={`cell-${key}-${index}`}\n className={cx(\n \"solid-data-table-td align-top text-foreground\",\n props.frozen ? \"solid-tree-sticky-cell\" : undefined,\n props.frozen && props.alignFrozen === \"right\" ? \"solid-tree-sticky-cell-right\" : undefined,\n props.frozen && props.alignFrozen !== \"right\" ? \"solid-tree-sticky-cell-left\" : undefined,\n isSelectionColumn ? \"solid-data-table-selection-col\" : undefined,\n props.className\n )}\n style={getFrozenCellStyle(props, props.style)}\n >\n {content}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {typeof onPage === \"function\" ? (\n <div\n className={cx(\"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-2 sm:px-3 py-1.5 bg-background\", paginatorClassName)}\n >\n <div className=\"solid-paginator-meta flex items-center gap-2 sm:ml-auto\">\n <span className=\"solid-paginator-label\">Rows</span>\n <SolidSelect\n value={rows}\n onChange={(event) => onPage({ first: 0, rows: Number(event.value) })}\n className=\"solid-paginator-select\"\n options={rowsPerPageOptions.map((option) => ({ label: String(option), value: option }))}\n native={false}\n />\n <span className=\"solid-paginator-report\">{report}</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={() => onPage({ first: Math.max(0, first - rows), rows })}\n disabled={currentPage <= 1}\n >\n Previous\n </button>\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.min((totalPages - 1) * rows, first + rows), rows })}\n disabled={currentPage >= totalPages}\n >\n Next\n </button>\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ArrowDownWideNarrow, ArrowUpDown, ArrowUpWideNarrow } from "lucide-react";
|
|
3
|
+
import { SolidSelect } from "../../shad-cn-ui/SolidSelect";
|
|
3
4
|
|
|
4
5
|
export type DataTableStateEvent = {
|
|
5
6
|
sortField?: string;
|
|
@@ -306,19 +307,17 @@ export function SolidDataTable({
|
|
|
306
307
|
|
|
307
308
|
{typeof onPage === "function" ? (
|
|
308
309
|
<div
|
|
309
|
-
className={cx("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", paginatorClassName)}
|
|
310
|
+
className={cx("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-2 sm:px-3 py-1.5 bg-background", paginatorClassName)}
|
|
310
311
|
>
|
|
311
|
-
<div className="solid-paginator-meta flex items-center gap-2 ml-auto">
|
|
312
|
+
<div className="solid-paginator-meta flex items-center gap-2 sm:ml-auto">
|
|
312
313
|
<span className="solid-paginator-label">Rows</span>
|
|
313
|
-
<
|
|
314
|
+
<SolidSelect
|
|
314
315
|
value={rows}
|
|
315
|
-
onChange={(
|
|
316
|
+
onChange={(event) => onPage({ first: 0, rows: Number(event.value) })}
|
|
316
317
|
className="solid-paginator-select"
|
|
317
|
-
|
|
318
|
-
{
|
|
319
|
-
|
|
320
|
-
))}
|
|
321
|
-
</select>
|
|
318
|
+
options={rowsPerPageOptions.map((option) => ({ label: String(option), value: option }))}
|
|
319
|
+
native={false}
|
|
320
|
+
/>
|
|
322
321
|
<span className="solid-paginator-report">{report}</span>
|
|
323
322
|
</div>
|
|
324
323
|
<div className="solid-paginator-actions flex items-center gap-2">
|