bolesa-apitables 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -0
- package/dist/index.cjs +2361 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +329 -0
- package/dist/index.d.ts +329 -0
- package/dist/index.js +2308 -0
- package/dist/index.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config/context.tsx","../src/table-providers/slices/tableColumnsSlice.ts","../src/shims/next-intl.ts","../src/shims/i18n-navigation.tsx","../src/shims/createComponent.tsx","../src/shims/components.ts","../src/general-components/ColumnCellTypes.tsx","../src/table-utils/errorHandling.ts","../src/table-providers/slices/tableCoreSlice.ts","../src/table-providers/slices/bulkActionsSlice.ts","../src/table-providers/slices/rowActionsSlice.ts","../src/table-providers/useUtilsProvider.tsx","../src/shims/loading-button.ts","../src/general-components/RowActionsElements.tsx","../src/core/TableRowActions.tsx","../src/host/storage.ts","../src/table-utils/utils.tsx","../src/core/AppliedFilters.tsx","../src/table-utils/useUtilTranslator.ts","../src/shims/tags-input.ts","../src/core/TableFilters.tsx","../src/general-components/Checkbox.tsx","../src/general-components/Loaders.tsx","../src/core/ExpandedRow.tsx","../src/shims/useSecureLS.ts","../src/shims/app-currency.ts","../src/core/TableCustomElements.tsx","../src/core/TableBody.tsx","../src/shims/custom-pagination.ts","../src/core/TablePagination.tsx","../src/core/TableSorting.tsx","../src/core/TablePageSize.tsx","../src/core/ColumnsVisibility.tsx","../src/core/ActionsOfSelection.tsx","../src/shims/popup.ts","../src/table-modals/ColumnsStaticModals.tsx","../src/table-modals/RowActionsModals.tsx","../src/table-modals/ApiTablesModals.tsx","../src/core/TableBulkActions.tsx","../src/core/FilterTrigger.tsx","../src/ApiTablesComponent.tsx","../src/hooks/useTableFetcher.ts","../src/table-providers/store.tsx","../src/ApiTablesController.tsx","../src/ApiTablesProvider.tsx","../src/ReactApiTable.tsx","../src/hooks/useTableStructure.ts"],"names":["jsx","toast","error","initialState","createSlice","action","useDispatch","useSelector","jsxs","row","Fragment","typedValue","useState","useEffect","Checkbox","React","useMemo","TableBody","selectedRows","X","tableName","IoCopy","index","requireModal","FiChevronDown","API_TABLES_PAGE_SIZE_KEY","Card","FullPageTableLoader","useLocale"],"mappings":"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","file":"index.js","sourcesContent":["'use client';\n\nimport { createContext, useContext, type ReactNode } from 'react';\nimport { clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\nimport type { ApiTablesConfig } from './types';\n\nconst ApiTablesConfigContext = createContext<ApiTablesConfig | null>(null);\n\nlet runtimeConfig: ApiTablesConfig | null = null;\n\n/** For non-React modules (error handlers, utils) */\nexport function getApiTablesRuntimeConfig(): ApiTablesConfig | null {\n return runtimeConfig;\n}\n\nexport type ApiTablesHostProviderProps = {\n config: ApiTablesConfig;\n children: ReactNode;\n};\n\nexport function ApiTablesHostProvider({ config, children }: ApiTablesHostProviderProps) {\n const merged: ApiTablesConfig = {\n cn: (...classes) => twMerge(clsx(classes)),\n storage: {\n get: (key) => {\n try {\n const raw = localStorage.getItem(key);\n return raw ? JSON.parse(raw) : null;\n } catch {\n return null;\n }\n },\n set: (key, value) => localStorage.setItem(key, JSON.stringify(value)),\n },\n ...config,\n components: config.components,\n };\n\n runtimeConfig = merged;\n\n return (\n <ApiTablesConfigContext.Provider value={merged}>{children}</ApiTablesConfigContext.Provider>\n );\n}\n\nexport function useApiTablesConfig(): ApiTablesConfig {\n const config = useContext(ApiTablesConfigContext);\n if (!config) {\n throw new Error('useApiTablesConfig must be used within <ApiTablesHostProvider>');\n }\n return config;\n}\n\nexport function useApiTablesComponent<K extends keyof ApiTablesConfig['components']>(\n name: K,\n): NonNullable<ApiTablesConfig['components'][K]> {\n const { components } = useApiTablesConfig();\n const component = components[name];\n if (!component) {\n throw new Error(\n `ApiTablesConfig.components.${String(name)} is required but was not provided`,\n );\n }\n return component;\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { formatTableColumns } from \"../../table-utils/utils\";\n\nconst initialState = {\n tableColumns: [] as any[],\n visibleColumns: [] as any[],\n selectedRows: [] as any[],\n selectedIds: [] as any[],\n toggledClearRows: false,\n rowSelectedModal: null,\n};\n\nconst tableColumnsSlice = createSlice({\n name: \"tableColumns\",\n initialState,\n reducers: {\n _setSelectedRows: (state, action) => {\n state.selectedRows = action?.payload;\n state.selectedIds = action?.payload?.length > 0 ? action?.payload?.map((row: any) => row?.id) : [];\n },\n _setToggledClearRow: (state, action) => {\n state.toggledClearRows = action?.payload;\n },\n _setVisibleColumns: (state, action) => {\n state.visibleColumns = action?.payload;\n state.tableColumns = state.tableColumns?.map((col) => ({\n ...col,\n omit: action?.payload?.indexOf(col?.data_src) === -1,\n }));\n },\n _setRowSelectedModal: (state, action) => {\n state.rowSelectedModal = action?.payload;\n },\n _setTableColumns: (state, action) => {\n state.tableColumns = action?.payload?.update ? action?.payload?.cols : formatTableColumns(action?.payload?.cols, action?.payload?.tbData);\n },\n _resetTableColumns: (state) => {\n state.tableColumns = [];\n state.visibleColumns = [];\n state.selectedRows = [];\n state.selectedIds = [];\n state.toggledClearRows = false;\n state.rowSelectedModal = null;\n },\n },\n});\n\nexport const { _setSelectedRows, _setToggledClearRow, _setVisibleColumns, _setRowSelectedModal, _setTableColumns, _resetTableColumns } =\n tableColumnsSlice.actions;\n\nexport default tableColumnsSlice.reducer;\n","'use client';\n\nimport { getApiTablesRuntimeConfig } from '../config/context';\n\nexport function useTranslations(namespace: string) {\n const translate = getApiTablesRuntimeConfig()?.useTranslations?.(namespace);\n return translate ?? ((key: string) => key);\n}\n\nexport function useLocale() {\n return getApiTablesRuntimeConfig()?.useLocale?.() ?? 'en';\n}\n","'use client';\n\nimport type { ComponentType } from 'react';\nimport { useApiTablesConfig } from '../config/context';\nimport type { ApiTablesLinkProps } from '../config/types';\n\nexport function Link(props: ApiTablesLinkProps) {\n const { Link: HostLink } = useApiTablesConfig();\n if (!HostLink) {\n throw new Error('ApiTablesConfig.Link is required for redirect row actions');\n }\n const Comp = HostLink as ComponentType<ApiTablesLinkProps>;\n return <Comp {...props} />;\n}\n","'use client';\n\nimport type { ComponentType, ReactNode } from 'react';\nimport { useApiTablesConfig } from '../config/context';\n\nexport function createHostComponent(name: string) {\n const HostComponent = (props: Record<string, unknown>) => {\n const { components } = useApiTablesConfig();\n const Comp = components[name] as ComponentType<Record<string, unknown>>;\n if (!Comp) {\n throw new Error(`ApiTablesConfig.components.${name} is required`);\n }\n return <Comp {...props} />;\n };\n HostComponent.displayName = `ApiTablesHost(${name})`;\n return HostComponent;\n}\n\nexport function createHostDefaultExport(name: string) {\n return createHostComponent(name);\n}\n","'use client';\n\nimport { createHostComponent } from './createComponent';\n\nexport const Button = createHostComponent('Button');\nexport const Badge = createHostComponent('Badge');\nexport const Card = createHostComponent('Card');\nexport const Skeleton = createHostComponent('Skeleton');\nexport const Switch = createHostComponent('Switch');\nexport const Label = createHostComponent('Label');\nexport const Input = createHostComponent('Input');\nexport const InputWrapper = createHostComponent('InputWrapper');\nexport const Checkbox = createHostComponent('Checkbox');\nexport const Popover = createHostComponent('Popover');\nexport const PopoverContent = createHostComponent('PopoverContent');\nexport const PopoverTrigger = createHostComponent('PopoverTrigger');\nexport const Select = createHostComponent('Select');\nexport const SelectContent = createHostComponent('SelectContent');\nexport const SelectGroup = createHostComponent('SelectGroup');\nexport const SelectItem = createHostComponent('SelectItem');\nexport const SelectTrigger = createHostComponent('SelectTrigger');\nexport const SelectValue = createHostComponent('SelectValue');\nexport const Tooltip = createHostComponent('Tooltip');\nexport const TooltipContent = createHostComponent('TooltipContent');\nexport const TooltipTrigger = createHostComponent('TooltipTrigger');\nexport const Sheet = createHostComponent('Sheet');\nexport const SheetContent = createHostComponent('SheetContent');\nexport const SheetDescription = createHostComponent('SheetDescription');\nexport const SheetHeader = createHostComponent('SheetHeader');\nexport const SheetTitle = createHostComponent('SheetTitle');\nexport const SheetTrigger = createHostComponent('SheetTrigger');\nexport const DropdownMenu = createHostComponent('DropdownMenu');\nexport const DropdownMenuContent = createHostComponent('DropdownMenuContent');\nexport const DropdownMenuItem = createHostComponent('DropdownMenuItem');\nexport const DropdownMenuTrigger = createHostComponent('DropdownMenuTrigger');\nexport const Table = createHostComponent('Table');\nexport const TableBody = createHostComponent('TableBody');\nexport const TableCell = createHostComponent('TableCell');\nexport const TableFooter = createHostComponent('TableFooter');\nexport const TableHead = createHostComponent('TableHead');\nexport const TableHeader = createHostComponent('TableHeader');\nexport const TableRow = createHostComponent('TableRow');\nexport const MultiSelect = createHostComponent('MultiSelect');\nexport const MultiSelectContent = createHostComponent('MultiSelectContent');\nexport const MultiSelectGroup = createHostComponent('MultiSelectGroup');\nexport const MultiSelectItem = createHostComponent('MultiSelectItem');\nexport const MultiSelectTrigger = createHostComponent('MultiSelectTrigger');\nexport const MultiSelectValue = createHostComponent('MultiSelectValue');\n\nexport const LoadingButton = createHostComponent('LoadingButton');\nexport const AppCurrency = createHostComponent('AppCurrency');\nexport const DatePicker = createHostComponent('DatePicker');\nexport const TagsInput = createHostComponent('TagsInput');\nexport const CustomPagination = createHostComponent('CustomPagination');\nexport const Popup = createHostComponent('Popup');\nexport const FullPageTableLoader = createHostComponent('FullPageTableLoader');\n","\"use client\";\n\nimport React from \"react\";\nimport { copyToClipboard } from \"../table-utils/utils\";\nimport { useDispatch } from \"react-redux\";\nimport { _setRowSelectedModal } from \"../table-providers/slices/tableColumnsSlice\";\nimport { IoMdExpand } from \"react-icons/io\";\nimport { PhotoProvider, PhotoView } from \"react-photo-view\";\nimport \"react-photo-view/dist/react-photo-view.css\";\nimport { useLocale, useTranslations } from \"next-intl\";\nimport { Link as NextLink } from \"@/i18n/navigation\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\n\nexport function TextCell({ col, row }: any) {\n return col?.values_formating &&\n Object.keys(col?.values_formating)?.filter((key) => row[col?.data_src] === col?.values_formating[key][\"showValue\"])?.length > 0 ? (\n Object.keys(col?.values_formating)\n ?.filter((key) => row[col?.data_src] === col?.values_formating[key][\"showValue\"])\n ?.map((key, index) => (\n <span\n className={`status text-capitalize ${\n col?.values_formating[key][\"style\"] === \"success\"\n ? \"active\"\n : col?.values_formating[key][\"style\"] === \"danger\"\n ? \"in-active\"\n : col?.values_formating[key][\"style\"] === \"info\" && \"info\"\n }`}\n key={index}\n >\n {row[col?.data_src]}\n </span>\n ))\n ) : row[col?.data_src] === \"CR\" || row[col?.data_src] === \"approved\" ? (\n <span className=\"status active\">{row[col?.data_src]}</span>\n ) : row[col?.data_src] === \"DR\" || row[col?.data_src] === \"pending\" ? (\n <span className=\"status in-active\">{row[col?.data_src]}</span>\n ) : (\n <p className=\"mb-0 text-wrap\">{row[col?.data_src]}</p>\n );\n}\n\nexport function LinkCell({ col, row }: any) {\n const tApiTables = useTranslations(\"ApiTables\");\n\n return (\n <>\n {col?.linkStyle === \"text\" ? (\n <Button asChild variant=\"outline\" size=\"sm\" className=\"text-[12px]\">\n <NextLink\n href={row[col?.data_src]?.value || row[col?.data_src]}\n className={`text-${col?.linkColor} ${\n row[col?.data_src] === \"!#\" || row[col?.data_src]?.value === \"!#\" || !row[col?.data_src]\n ? \"disabled pointer-events-none\"\n : \"\"\n }`}\n target=\"_blank\"\n >\n {row[col?.data_src]?.label || col?.linkText}\n </NextLink>\n </Button>\n ) : (\n col?.linkStyle === \"button\" && (\n <Button asChild variant=\"outline\" size=\"sm\" className=\"text-[12px]\">\n <NextLink color=\"primary\" href={row[col?.data_src]?.value || row[col?.data_src]} target=\"_blank\">\n {col?.linkText}\n </NextLink>\n </Button>\n )\n )}\n\n {col?.showCopyBtn && (\n <Button variant=\"outline\" type=\"button\" size=\"sm\" className=\"text-[12px]\" onClick={() => copyToClipboard(row[col?.data_src])}>\n {tApiTables(\"copy_link\")}\n </Button>\n )}\n </>\n );\n}\n\nexport function BooleanCell({ row, col }: any) {\n if (row[col?.data_src] === true) {\n return (\n <Badge\n variant=\"outline\"\n className=\"inline-flex items-center border-green-500/5 px-3 py-[2px] text-green-800 dark:border-green-300/40 dark:text-green-100 bg-green-400/5 gap-1\"\n >\n <div className=\"w-2 h-2 rounded-full bg-green-400\"></div>\n {col?.values_formating?.trueLabel}\n </Badge>\n );\n }\n\n return (\n <Badge\n variant=\"outline\"\n className=\"inline-flex items-center border-red-500/5 dark:border-red-300/40 px-3 py-[2px] text-red-800 dark:text-red-50 bg-red-400/5 gap-1\"\n >\n <div className=\"w-2 h-2 rounded-full bg-red-400\"></div>\n {col?.values_formating?.falseLabel}\n </Badge>\n );\n}\n\nexport function HTMLCell({ col, row }: any) {\n const dispatch = useDispatch();\n const tApiTables = useTranslations(\"ApiTables\");\n\n return (\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => {\n dispatch(\n _setRowSelectedModal({\n label: col?.label,\n value: row[col?.data_src],\n })\n );\n }}\n >\n {tApiTables(\"show\")}\n </Button>\n );\n}\n\nexport function DataListCell({ col, row }: any) {\n const dispatch = useDispatch();\n\n return (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n dispatch(\n _setRowSelectedModal({\n label: col?.label,\n value: row[col?.data_src],\n })\n );\n }}\n >\n <IoMdExpand />\n {col?.linkText}\n </Button>\n );\n}\n\nexport function BarcodeCell({ col, row }: any) {\n return (\n <>\n <PhotoProvider>\n <PhotoView src={`data:image/png;base64,${row[col?.data_src]}`}>\n <img src={`data:image/png;base64,${row[col?.data_src]}`} alt=\"Barcode\" className=\"w-auto max-w-[50px] cursor-pointer\" />\n </PhotoView>\n </PhotoProvider>\n </>\n );\n}\n","import { getApiTablesRuntimeConfig } from '../config/context';\n\ntype ResponseData = {\n success?: boolean;\n errors?: string[] | string | Record<string, string[]>;\n message?: string;\n data?: {\n success?: boolean;\n errors?: string[] | string | Record<string, string[]>;\n message?: string;\n };\n};\n\ntype ErrorResponse = {\n response?: {\n status?: number;\n data?: { error?: string | string[]; success?: boolean };\n };\n code?: string;\n message?: string;\n};\n\nfunction getToast() {\n return getApiTablesRuntimeConfig()?.toast ?? null;\n}\n\nexport function handleResponseErrors(\n response: ResponseData,\n message: string | undefined,\n successCallback: (() => void) | undefined,\n errorCallback: (() => void) | undefined,\n): void {\n const toast = getToast();\n\n if (response?.data?.success) {\n successCallback?.();\n if (message && toast) toast.success(message);\n }\n\n if (!response?.data?.success && !response?.data?.errors && response?.data?.message) {\n toast?.error(response.data.message);\n }\n\n if (!response?.data?.success && response?.data?.errors) {\n const errors = response.data.errors;\n if (Array.isArray(errors) && errors.length > 0) {\n errors.forEach((item) => toast?.error(item));\n } else if (typeof errors === 'string' && errors.length > 0) {\n toast?.error(errors);\n } else if (errors && typeof errors === 'object') {\n Object.keys(errors).forEach((key) => {\n const value = (errors as Record<string, string[]>)[key];\n if (Array.isArray(value)) toast?.error(value.join(','));\n });\n }\n errorCallback?.();\n } else if (!response?.data?.success && !response?.data?.errors) {\n errorCallback?.();\n }\n}\n\nexport async function handleNetworkErrors(err: ErrorResponse): Promise<void> {\n console.log(err);\n const config = getApiTablesRuntimeConfig();\n const toast = config?.toast ?? null;\n\n if (err?.response?.status === 401) {\n try {\n if (config?.onUnauthorized) {\n await config.onUnauthorized();\n } else if (config?.axiosAuth) {\n const res = await config.axiosAuth.delete('/api/delete-auth');\n if (res?.data?.success) {\n window.location.href = '/login';\n localStorage.removeItem('FCM_ERRIM');\n }\n }\n } catch (error) {\n console.log(error);\n }\n }\n\n if (err?.code === 'ERR_CANCELED') return;\n\n const error = err?.response?.data?.error;\n if (error && typeof error === 'string' && error.length > 0) {\n toast?.error(error);\n } else if (error && Array.isArray(error) && error.length > 0) {\n toast?.error(error.join(','));\n } else {\n toast?.error(err?.message || 'Something went wrong!');\n }\n}\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nconst initialState = {\n tableName: null,\n structureColumns: null,\n structureFilters: null,\n customElement: null as string | null,\n appliedFilters: [],\n renderedFilters: [],\n tableSorting: {},\n tableData: [],\n tableBindings: null,\n currentPage: 1,\n pageSize: 25,\n tablePagination: null,\n tableFetchingLoading: false,\n tableRefresher: 0,\n};\n\nconst tableCoreSlice = createSlice({\n name: \"tableCore\",\n initialState,\n reducers: {\n _getTableComponents: (state, action) => {\n state.tableName = action?.payload?.tableName;\n state.structureColumns = action?.payload?.columns;\n state.structureFilters = action?.payload?.filters;\n state.customElement = action?.payload?.customElement ?? null;\n },\n _setAppliedFilters: (state, action) => {\n state.appliedFilters = action?.payload?.reduce((acc: any, curr: any) => {\n acc[curr.key] = curr;\n return acc;\n }, {});\n },\n _setRenderedFilters: (state, action) => {\n state.renderedFilters = action?.payload;\n },\n _getTableData: (state, action) => {\n state.tableData = action?.payload;\n },\n _getTablePagination: (state, action) => {\n state.tablePagination = action?.payload;\n },\n _getTableBindings: (state, action) => {\n state.tableBindings = action?.payload;\n },\n _setTableLoading: (state, action) => {\n state.tableFetchingLoading = action?.payload;\n },\n _setCurrentPage: (state, action) => {\n state.currentPage = action?.payload;\n },\n _setTableSorting: (state, action) => {\n state.tableSorting = action?.payload;\n },\n _changePageSize: (state, action) => {\n state.pageSize = action?.payload;\n },\n _triggerTableReload: (state) => {\n state.tableRefresher = state.tableRefresher + 1;\n },\n _resetTableCore: (state) => {\n state.tableName = null;\n state.structureColumns = null;\n state.structureFilters = null;\n state.customElement = null;\n state.appliedFilters = [];\n state.renderedFilters = [];\n state.tableSorting = {};\n state.tableData = [];\n state.tableBindings = null;\n state.currentPage = 1;\n state.pageSize = 25;\n state.tablePagination = null;\n state.tableFetchingLoading = false;\n state.tableRefresher = 0;\n },\n },\n});\n\nexport const {\n _getTableComponents,\n _setAppliedFilters,\n _setRenderedFilters,\n _getTableData,\n _getTablePagination,\n _getTableBindings,\n _setTableLoading,\n _setCurrentPage,\n _setTableSorting,\n _changePageSize,\n _triggerTableReload,\n _resetTableCore,\n} = tableCoreSlice.actions;\n\nexport default tableCoreSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { objectToArrayValue } from \"../../table-utils/utils\";\n\nconst initialState = {\n bulkActions: [] as any[],\n selectedBulkAction: null,\n bulkActionPostLoading: false,\n bulkActionPostResponse: null,\n};\n\nconst bulkActionsSlice = createSlice({\n name: \"bulkActions\",\n initialState,\n reducers: {\n _getStructureBulkActions: (state, action) => {\n state.bulkActions = objectToArrayValue(action?.payload);\n },\n _getSelectedBulkAction: (state, action) => {\n state.selectedBulkAction = action?.payload;\n },\n _bulkActionPostLoading: (state, action) => {\n state.bulkActionPostLoading = action?.payload;\n },\n _bulkActionPostResponse: (state, action) => {\n state.bulkActionPostResponse = action?.payload;\n },\n _resetTableBulkActions: (state) => {\n state.bulkActions = [];\n state.selectedBulkAction = null;\n state.bulkActionPostLoading = false;\n state.bulkActionPostResponse = null;\n },\n },\n});\n\nexport const { _getStructureBulkActions, _getSelectedBulkAction, _bulkActionPostLoading, _bulkActionPostResponse, _resetTableBulkActions } =\n bulkActionsSlice.actions;\n\nexport default bulkActionsSlice.reducer;\n","import { createSlice } from \"@reduxjs/toolkit\";\nimport { objectToArrayValue } from \"../../table-utils/utils\";\n\nconst initialState = {\n structureRowActions: [] as any[],\n selectedRowActions: [] as any[],\n clickedRowAction: null,\n rowActionPostLoading: false,\n clickedRowActionResponse: null,\n customControlAction: null,\n actionsInRegularCells: false,\n clickedRowActionId: null,\n};\n\nconst rowActionsSlice = createSlice({\n name: \"rowActions\",\n initialState,\n reducers: {\n _getStructureRowActions: (state, action) => {\n state.structureRowActions = objectToArrayValue(action?.payload);\n },\n _checkActionsInRegularCells: (state, action) => {\n state.actionsInRegularCells = action.payload;\n },\n _getSelectedRowActions: (state, action) => {\n state.selectedRowActions = objectToArrayValue(action?.payload)?.filter((action: any) => action?.applicableAsBulkAction);\n },\n _setRowActionPostLoading: (state, action) => {\n state.rowActionPostLoading = action?.payload;\n },\n _getClickedRowAction: (state, action) => {\n state.clickedRowAction = action?.payload;\n },\n _getClickedRowActionId: (state, action) => {\n state.clickedRowActionId = action?.payload;\n },\n _getClickedRowActionResponse: (state, action) => {\n state.clickedRowActionResponse = action?.payload;\n },\n _getCustomControlRequest: (state, action) => {\n state.customControlAction = action?.payload;\n },\n _resetTableRowActions: (state) => {\n state.structureRowActions = [];\n state.selectedRowActions = [];\n state.clickedRowAction = null;\n state.rowActionPostLoading = false;\n state.clickedRowActionResponse = null;\n state.customControlAction = null;\n state.actionsInRegularCells = false;\n state.clickedRowActionId = null;\n },\n },\n});\n\nexport const {\n _getStructureRowActions,\n _checkActionsInRegularCells,\n _getSelectedRowActions,\n _setRowActionPostLoading,\n _getClickedRowAction,\n _getClickedRowActionId,\n _getClickedRowActionResponse,\n _getCustomControlRequest,\n _resetTableRowActions,\n} = rowActionsSlice.actions;\n\nexport default rowActionsSlice.reducer;\n","'use client';\n\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useApiTablesConfig } from '../config/context';\nimport { handleNetworkErrors, handleResponseErrors } from '../table-utils/errorHandling';\nimport { downloadURL } from '../table-utils/utils';\nimport { _getTableData, _triggerTableReload } from './slices/tableCoreSlice';\nimport {\n _bulkActionPostLoading,\n _bulkActionPostResponse,\n _getSelectedBulkAction,\n} from './slices/bulkActionsSlice';\nimport {\n _getClickedRowAction,\n _getClickedRowActionId,\n _getClickedRowActionResponse,\n _getCustomControlRequest,\n _setRowActionPostLoading,\n} from './slices/rowActionsSlice';\nimport { _setSelectedRows, _setToggledClearRow } from './slices/tableColumnsSlice';\n\ninterface RootState {\n tableCore: { tableData: Record<string, unknown>[] };\n tableColumns: { toggledClearRows: boolean };\n}\n\ninterface Action {\n onSuccess?: string;\n onBulkSuccess?: string;\n isBulk?: boolean;\n action_key?: string;\n}\n\ninterface LoaderInfo {\n msg?: string;\n icon?: string | null;\n}\n\ninterface ResponseData {\n data?: Record<string, unknown> & {\n row?: Record<string, unknown>;\n url?: string;\n filename?: string;\n invoice_number?: string;\n cart?: { total_items_count?: number };\n };\n items?: Record<string, unknown>[];\n message?: string;\n cart?: { total_items_count?: number };\n}\n\nexport default function useUtilsProvider() {\n const dispatch = useDispatch();\n const config = useApiTablesConfig();\n const { axiosTable, usePathname, getExternalStore, onBulkActionSuccess, setMainLoader } = config;\n const { downloadBlob, downloadPDF, generatePDF } = config;\n const { tableData } = useSelector((state: RootState) => state.tableCore);\n const { toggledClearRows } = useSelector((state: RootState) => state.tableColumns);\n const pathname = usePathname?.() ?? '';\n const externalStore = getExternalStore?.();\n\n function triggerTableReload(): void {\n dispatch(_triggerTableReload());\n }\n\n function handleBulkActionReponse(\n action: Action,\n response?: ResponseData,\n payload?: { selected_ids?: string[] },\n ): void {\n onBulkActionSuccess?.(action as Record<string, unknown>, response as Record<string, unknown>, payload);\n if (action?.onSuccess === 'deleteRow' || action.onSuccess === 'reload') {\n triggerTableReload();\n dispatch(_getSelectedBulkAction(null));\n }\n }\n\n async function bulkActionsPostHandler(\n method: string,\n url: string,\n payload: Record<string, unknown>,\n loaderInfo: LoaderInfo,\n action: Action,\n ): Promise<void> {\n dispatch(_bulkActionPostLoading(true));\n if (loaderInfo && setMainLoader) {\n setMainLoader({ status: true, msg: loaderInfo?.msg, icon: loaderInfo?.icon ?? null });\n }\n\n try {\n const response = await axiosTable({\n method,\n url,\n data: { ...payload },\n ...(action?.action_key === 'export-excel-blob' && { responseType: 'blob' }),\n });\n\n if (action?.action_key === 'export-excel-blob') {\n downloadBlob?.(response?.data as Blob);\n dispatch(_getSelectedBulkAction(null));\n } else {\n handleResponseErrors(\n response,\n response?.data?.message as string | undefined,\n () => {\n dispatch(_bulkActionPostResponse(response?.data));\n handleBulkActionReponse(action, response?.data as ResponseData, payload as { selected_ids?: string[] });\n },\n undefined,\n );\n }\n } catch (err) {\n console.log(err);\n } finally {\n dispatch(_bulkActionPostLoading(false));\n dispatch(_getSelectedBulkAction(null));\n if (setMainLoader) setMainLoader({ status: false, msg: '', icon: null });\n }\n }\n\n function resetClickedRowAction(): void {\n dispatch(_getClickedRowAction(null));\n dispatch(_getClickedRowActionResponse(null));\n dispatch(_getCustomControlRequest(null));\n dispatch(_setToggledClearRow(!toggledClearRows));\n dispatch(_setSelectedRows([]));\n }\n\n function handleCommonCases(type: string, response: ResponseData): void {\n if (pathname === '/packing/materials' && type === 'reload' && externalStore) {\n onBulkActionSuccess?.(\n { onSuccess: 'reload' },\n response as Record<string, unknown>,\n undefined,\n );\n }\n if (type === 'deleteRow' || type === 'reload') {\n triggerTableReload();\n resetClickedRowAction();\n } else if (type === 'refetchData') {\n dispatch(\n _getTableData(\n tableData?.map((item) => {\n const matchingItem = response?.items?.find(\n (entry) => (entry as { id?: string }).id === (item as { id?: string })?.id,\n );\n return matchingItem ?? item;\n }),\n ),\n );\n resetClickedRowAction();\n } else if (type === 'refetchRow') {\n dispatch(\n _getTableData(\n tableData?.map((item) => {\n if ((item as { id?: string })?.id !== response?.data?.row?.id) return item;\n return response?.data?.row;\n }),\n ),\n );\n resetClickedRowAction();\n } else if (type === 'downloadData') {\n downloadURL(response?.data?.url ?? '', response?.data?.filename ?? '');\n resetClickedRowAction();\n } else if (type === 'download_pdf') {\n void downloadPDF?.(response?.data?.url ?? '', response?.data?.filename ?? '');\n resetClickedRowAction();\n } else if (type === 'generatePdf' || type === 'downloadPdf') {\n void generatePDF?.(\n (response?.data ?? {}) as Record<string, unknown>,\n 'Invoice',\n (response?.data?.invoice_number as string) ?? 'invoice.pdf',\n );\n resetClickedRowAction();\n }\n }\n\n function handleRowActionRepsonse(action: Action, response: ResponseData): void {\n if (action?.isBulk) {\n handleCommonCases(action?.onBulkSuccess || '', response);\n } else {\n handleCommonCases(action?.onSuccess || '', response);\n }\n }\n\n async function rowActionsPostHandler(\n method: string,\n url: string,\n payload: unknown,\n action: Action,\n customHeader?: Record<string, string>,\n ): Promise<void> {\n dispatch(_setRowActionPostLoading(true));\n dispatch(_getClickedRowAction(action));\n\n try {\n const response = await axiosTable({\n method,\n url,\n data: payload instanceof FormData ? payload : { ...(payload as Record<string, unknown>) },\n ...(customHeader && { headers: { ...customHeader } }),\n ...((action?.action_key === 'export-excel-blob' || action?.action_key === 'export_failed_excel') && {\n responseType: 'blob',\n }),\n });\n\n if (action?.action_key === 'export-excel-blob' || action?.action_key === 'export_failed_excel') {\n downloadBlob?.(response?.data as Blob);\n resetClickedRowAction();\n } else {\n handleResponseErrors(\n response,\n response?.data?.message as string | undefined,\n () => {\n if (action?.onSuccess !== 'OpenModalForm') {\n dispatch(_getClickedRowActionResponse(response?.data));\n } else {\n dispatch(_getCustomControlRequest(response?.data));\n }\n handleRowActionRepsonse(action, response?.data as ResponseData);\n },\n undefined,\n );\n }\n } catch (err) {\n console.log(err);\n resetClickedRowAction();\n await handleNetworkErrors(err as Record<string, unknown>);\n } finally {\n dispatch(_setRowActionPostLoading(false));\n dispatch(_getClickedRowActionId(null));\n }\n }\n\n return { triggerTableReload, bulkActionsPostHandler, rowActionsPostHandler, resetClickedRowAction };\n}\n","import { LoadingButton } from './components';\n\nexport default LoadingButton;\n","\"use client\";\n\n/**\n * This module contains components for rendering different types of row action elements in tables\n */\n\nimport { Link } from \"@/i18n/navigation\";\nimport React, { useId, useState } from \"react\";\nimport { copyToClipboard } from \"../table-utils/utils\";\nimport useUtilsProvider from \"../table-providers/useUtilsProvider\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { _getClickedRowAction, _getClickedRowActionId } from \"../table-providers/slices/rowActionsSlice\";\nimport { IoCopy } from \"react-icons/io5\";\nimport { MdInsertLink } from \"react-icons/md\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { Label } from \"@/components/ui/label\";\nimport Button from \"@/components/ui/custom/button\";\nimport { Button as ButtonUI } from \"@/components/ui/button\";\nimport { ImSpinner6 } from \"react-icons/im\";\n\n/**\n * Checks if an action requires a modal form\n * @param action - The action configuration object\n * @returns boolean indicating if modal is required\n */\nconst requireModal = (action: any) => {\n return action?.need_confirmation || action?.action_type === \"custom_control\";\n};\n\n/**\n * Component for rendering a toggle switch row action\n * Features:\n * - Toggleable switch with label\n * - Visual feedback for current state\n * - Handles both bulk and single row actions\n */\nexport const ToggleRowActionElement = ({ action, isBulk }: any) => {\n const { rowActionsPostHandler } = useUtilsProvider();\n const dispatch = useDispatch();\n const { selectedIds } = useSelector((state: any) => state?.tableColumns);\n const id = useId();\n\n function fireRowAction(action: any) {\n if (requireModal(action)) {\n dispatch(_getClickedRowAction({ ...action, ...(isBulk && { isBulk: false }) }));\n } else {\n rowActionsPostHandler(\n action?.method,\n isBulk ? action?.action?.api?.replace(\"/api\", \"\") : action?.action.api?.replace(\"/api\", \"\"),\n { selected_ids: selectedIds },\n { ...action, ...(isBulk && { isBulk: true }) }\n );\n }\n }\n\n return (\n <div className=\"flex items-center space-x-2 w-full\">\n <Label\n htmlFor={`tableRowSwitch_${id}`}\n className={`cursor-pointer w-full flex items-center gap-2 px-4 py-2 rounded-lg border transition-colors\n ${action?.toggle_current_value\n ? \"border-orange-500 dark:border-orange-700 text-orange-800 dark:text-orange-200 bg-orange-300/10 dark:bg-orange-300/5\"\n : \"border-muted-foreground/40\"\n }\n `}\n >\n <Switch\n defaultChecked={action?.toggle_current_value || false}\n id={`tableRowSwitch_${id}`}\n checked={action?.toggle_current_value}\n onCheckedChange={() => fireRowAction(action)}\n className=\"cursor-pointer\"\n />\n <span>{action?.button?.label}</span>\n </Label>\n </div>\n );\n};\n\n/**\n * Component for rendering an internal redirect link action\n * Features:\n * - Loading state feedback\n * - Uses Next.js Link for client-side navigation\n */\nexport const RedirectRowActionElement = ({ action }: any) => {\n const [fired, setFired] = useState(false);\n\n // This handler will be fired when the Link's default navigation would start.\n // We'll use onClick on the Link to setFired when navigation is really about to happen.\n // Prevent default on modifier click so fired only sets for standard navigation.\n const handleLinkClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n // Allow open-in-new-tab and similar\n if (e.defaultPrevented || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || (e.button && e.button !== 0)) {\n return;\n }\n setFired(true);\n };\n\n return (\n <ButtonUI disabled={fired} variant=\"outline\" className=\"w-full p-0!\">\n <Link\n className=\"flex items-center w-full justify-center gap-1 py-2 px-3!\"\n href={action?.redirect_routes?.api?.replace(/^\\/api/, \"\")}\n onClick={handleLinkClick}\n >\n {fired ? <ImSpinner6 className=\"animate-spin\" /> : <MdInsertLink />}\n {fired ? \"Redirecting...\" : action?.button?.label}\n </Link>\n </ButtonUI>\n );\n};\n\n/**\n * Component for rendering an external redirect link action\n * Features:\n * - Opens in new tab\n * - Visual indication of external link\n */\nexport const ExternalRedirectRowActionElement = ({ action }: any) => {\n return (\n <ButtonUI asChild variant=\"default\" className=\"w-full\">\n <a target=\"_blank\" className=\"inline-flex items-center gap-1 w-full\" href={action?.redirect_routes?.api?.replace(/^\\/api/, \"\")}>\n <MdInsertLink />\n {action?.button?.label}\n </a>\n </ButtonUI>\n );\n};\n\n/**\n * Component for rendering a copy text action\n * Features:\n * - Copies text to clipboard on click\n * - Visual feedback with icon\n */\nexport const CopyTextRowActionElement = ({ action }: any) => {\n return (\n <Button\n variant=\"outline\"\n onClick={() => {\n copyToClipboard(action?.copy_value);\n }}\n >\n <IoCopy />\n {action?.button?.label}\n </Button>\n );\n};\n\n/**\n * Component for rendering a general purpose row action\n * Features:\n * - Handles both bulk and single row actions\n * - Loading state feedback\n * - Modal support for confirmations\n * - Custom control handling\n */\nexport const GeneralRowActionElement = ({ action, isBulk }: any) => {\n const id = useId();\n\n const { rowActionsPostHandler } = useUtilsProvider();\n const dispatch = useDispatch();\n const { clickedRowAction, clickedRowActionId, rowActionPostLoading } = useSelector((state: any) => state?.rowActions);\n const { selectedIds } = useSelector((state: any) => state?.tableColumns);\n\n function fireRowAction(action: any) {\n dispatch(_getClickedRowActionId(id));\n if (requireModal(action)) {\n dispatch(_getClickedRowAction({ ...action, ...(isBulk && { isBulk: false }) }));\n if (action?.action_type === \"custom_control\") {\n rowActionsPostHandler(\n action?.method,\n isBulk ? action?.action?.api?.replace(/^\\/api/, \"\") : action?.action.api?.replace(/^\\/api/, \"\"),\n { selected_ids: selectedIds },\n action\n );\n }\n } else {\n rowActionsPostHandler(\n action?.method,\n isBulk ? action?.action?.api?.replace(/^\\/api/, \"\") : action?.action.api?.replace(/^\\/api/, \"\"),\n { selected_ids: selectedIds },\n { ...action, ...(isBulk && { isBulk: true }) }\n );\n }\n }\n\n return (\n <Button\n variant=\"secondary\"\n className=\"w-full text-[13px] h-auto py-1.5 border\"\n onClick={() => {\n fireRowAction(action);\n }}\n isLoading={clickedRowAction?.action_key === action?.action_key && rowActionPostLoading && clickedRowActionId === id}\n >\n {action?.button?.label}\n </Button>\n );\n};\n","\"use client\";\n\n/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useMemo } from \"react\";\nimport { PiDotsThreeOutlineVerticalBold } from \"react-icons/pi\";\nimport {\n CopyTextRowActionElement,\n ExternalRedirectRowActionElement,\n GeneralRowActionElement,\n RedirectRowActionElement,\n ToggleRowActionElement,\n} from \"../general-components/RowActionsElements\";\nimport { getIntersectedRowActions, objectToArrayValue } from \"../table-utils/utils\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { _getSelectedRowActions } from \"../table-providers/slices/rowActionsSlice\";\n\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\n\nfunction TableRowActions({ row, col, isActionCol = false }: any) {\n const { selectedRows } = useSelector((state: any) => state?.tableColumns);\n const { actionsInRegularCells } = useSelector((state: any) => state?.rowActions);\n const dispatch = useDispatch();\n\n const rowActions = useMemo(() => {\n if (actionsInRegularCells) {\n const filteredColActions = row?.actions[col?.name];\n return objectToArrayValue(filteredColActions);\n } else {\n return objectToArrayValue(row?.actions);\n }\n }, [row, actionsInRegularCells, col]);\n\n console.log('🚀 actionsInRegularCells 👉', actionsInRegularCells, '✨');\n\n useEffect(() => {\n if (selectedRows?.length > 0) {\n dispatch(_getSelectedRowActions(objectToArrayValue(getIntersectedRowActions(selectedRows?.map((row: any) => row?.actions)))));\n } else {\n dispatch(_getSelectedRowActions([]));\n }\n }, [selectedRows]);\n\n return (\n <>\n {!col?.separated_action && (\n <>\n {rowActions?.filter((action) => action)?.length > 0 ? (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"icon\">\n <PiDotsThreeOutlineVerticalBold className=\"!w-3 !h-3\" />\n </Button>\n </PopoverTrigger>\n\n <PopoverContent align=\"end\" className=\"inline-flex min-w-[160px] p-2 z-100!\">\n <div className=\"flex flex-col gap-2 w-full\">\n {rowActions\n ?.filter((action) => action)\n ?.map((action: any) => (\n <div key={action?.action_key} className=\"w-full\">\n {action?.action_type === \"toggle\" ? (\n <ToggleRowActionElement action={action} />\n ) : action?.action_type === \"redirect\" ? (\n <RedirectRowActionElement action={action} />\n ) : action?.action_type === \"external_redirect\" ? (\n <ExternalRedirectRowActionElement action={action} />\n ) : action?.action_type === \"copy\" ? (\n <CopyTextRowActionElement action={action} />\n ) : (\n <GeneralRowActionElement action={action} />\n )}\n </div>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n ) : (\n <Badge variant=\"secondary\">غير مفعل</Badge>\n )}\n </>\n )}\n\n {col?.separated_action && (\n <div className=\"flex flex-col gap-2 w-full\">\n {rowActions\n ?.filter((action) => action)\n ?.map((action: any) => (\n <div key={action?.action_key} className=\"w-full\">\n {action?.action_type === \"toggle\" ? (\n <ToggleRowActionElement action={action} />\n ) : action?.action_type === \"redirect\" ? (\n <RedirectRowActionElement action={action} />\n ) : action?.action_type === \"external_redirect\" ? (\n <ExternalRedirectRowActionElement action={action} />\n ) : action?.action_type === \"copy\" ? (\n <CopyTextRowActionElement action={action} />\n ) : (\n <GeneralRowActionElement action={action} />\n )}\n </div>\n ))}\n </div>\n )}\n </>\n );\n}\n\nexport default TableRowActions;\n","import { getApiTablesRuntimeConfig } from '../config/context';\n\nexport function getHostStorage() {\n const config = getApiTablesRuntimeConfig();\n if (config?.useSecureLS) {\n return config.useSecureLS();\n }\n return config?.storage ?? { get: () => null, set: () => undefined };\n}\n","/**\n * Utility functions for table operations and data manipulation\n */\n\nimport React from \"react\";\nimport { BarcodeCell, BooleanCell, DataListCell, HTMLCell, LinkCell, TextCell } from \"../general-components/ColumnCellTypes\";\nimport TableRowActions from \"../core/TableRowActions\";\nimport lsSecure from \"@/helpers/lsSecure\";\nimport { toast } from \"sonner\";\n\n/**\n * Copies text to clipboard and shows optional toast notification\n * @param value - Text to copy\n * @param noToast - Whether to suppress toast notification\n * @param msg - Custom toast message\n */\nexport const copyToClipboard = (value: string, noToast?: boolean, msg?: string): void => {\n navigator.clipboard\n .writeText(value)\n .then(function () {\n console.log(\"\");\n })\n .catch(function (err) {\n console.error(\"Failed to copy text: \", err);\n });\n if (!noToast) {\n toast.success(msg || \"تم النسخ\");\n }\n};\n\n/**\n * Truncates string from start if longer than specified length\n * @param fullStr - String to truncate\n * @param strLen - Maximum length before truncation\n * @param separator - Truncation indicator (default \"...\")\n */\nexport function truncateStart(fullStr: string, strLen: number, separator?: string): string {\n if (fullStr?.length <= strLen) return fullStr;\n separator = separator || \"...\";\n let charsToShow = strLen,\n frontChars = Math.ceil(charsToShow);\n return fullStr?.substr(0, frontChars) + separator;\n}\n\n/**\n * Updates objects in large array with matching objects from small array based on ID\n * @param largeArr - Array to update\n * @param smallArr - Array containing update objects\n */\nexport function replaceObjects(largeArr: any[], smallArr: any[]): void {\n if (largeArr && smallArr) {\n return smallArr.forEach((smallObj: any) => {\n const index = largeArr?.findIndex((largeObj: any) => largeObj?.id === smallObj?.id);\n if (index !== -1) {\n largeArr[index] = { ...largeArr[index], ...smallObj };\n }\n });\n }\n}\n\n/**\n * Toggles column visibility and updates localStorage\n * @param value - Visibility state\n * @param name - Column name\n * @param visibleCols - Currently visible columns\n * @param LSKey - localStorage key\n * @param callback - Function to call with updated columns\n */\nexport function toggleColumnVisibility(value: boolean, name: string, visibleCols: string[], LSKey: string, callback: (cols: string[]) => void): void {\n let columns = [...visibleCols];\n if (value === true) {\n columns = [...visibleCols, name];\n } else {\n columns = columns.filter((col) => col !== name);\n }\n callback(columns);\n lsSecure?.set(LSKey, JSON.stringify(columns));\n}\n\n/**\n * Formats date as DD/MM/YYYY\n * @param timestamp - Date timestamp\n */\nexport function formatDateNoTime(timestamp: string | number): string {\n const date = new Date(timestamp);\n const day = date.getDate().toString().padStart(2, \"0\");\n const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\n const year = date.getFullYear();\n return `${day}/${month}/${year}`;\n}\n\n/**\n * Converts object values to array\n * @param obj - Source object\n */\nexport function objectToArrayValue<T>(obj: Record<string, T>): T[] {\n return obj ? Object.keys(obj).map((key) => obj[key]) : [];\n}\n\n/**\n * Converts object keys to array\n * @param obj - Source object\n */\nexport function objectToArrayKey(obj: Record<string, any>): string[] {\n return obj ? Object.keys(obj).map((key) => key) : [];\n}\n\n/**\n * Converts object to array of key-value pairs\n * @param obj - Source object\n */\nexport function objectToArrayKeyVal(obj: Record<string, any>): Array<{ key: any; value: string }> {\n return obj\n ? Object.keys(obj).map((key) => ({\n key: obj[key],\n value: key,\n }))\n : [];\n}\n\n/**\n * Downloads file from URL\n * @param url - File URL\n * @param name - Download filename\n */\nexport function downloadURL(url: string, name: string): void {\n const link = document.createElement(\"a\");\n link.href = url;\n link.download = `${name}`;\n document.body.appendChild(link);\n link.setAttribute(\"target\", \"_blank\");\n link.click();\n URL.revokeObjectURL(url);\n document.body.removeChild(link);\n}\n\ninterface ActionObject {\n action_key: string;\n [key: string]: any;\n}\n\n/**\n * Gets intersection of row actions across multiple objects\n * @param arrayOfObjects - Array of objects containing actions\n */\nexport function getIntersectedRowActions(arrayOfObjects: Record<string, ActionObject>[]): Record<string, ActionObject> {\n if (arrayOfObjects.length === 0) return {};\n\n // Initialize the result object with the keys from the first object\n const result: Record<string, ActionObject> = {};\n\n // Iterate over each key in the first object\n for (const key in arrayOfObjects[0]) {\n const actionKey = arrayOfObjects[0][key].action_key;\n\n // Check if this action_key exists in every object in the array\n const isCommon = arrayOfObjects.every((obj) => obj[key] && obj[key].action_key === actionKey);\n\n // If it exists in all objects, add it to the result\n if (isCommon) {\n result[key] = arrayOfObjects[0][key];\n }\n }\n\n return result;\n}\n\n/**\n * Validates phone number starts with 5\n * @param number - Phone number to validate\n */\nexport function validatePhoneNumber(number: string): string | undefined {\n if (Number(number[0]) !== 5) {\n return \"رقم الجوال يجب أن يبدأ بالرقم 5\";\n }\n}\n\n/**\n * Prevents typing beyond character limit in input fields\n * @param chars - Maximum characters allowed\n */\nexport function preventTyping(chars: number): void {\n const inputEls = document.querySelectorAll(\".limited-chars\");\n\n function limitChars(event: Event, inputEl: HTMLInputElement): void {\n const inputValue = inputEl.value.trim();\n const labelEl = inputEl.nextElementSibling?.nextElementSibling as HTMLElement;\n\n if (event instanceof KeyboardEvent) {\n let key = event.keyCode;\n if (key === 32) {\n event.preventDefault();\n }\n }\n\n if (!/^\\d*$/.test(inputValue)) {\n // If the input contains non-digit characters, remove them\n inputEl.value = inputValue.replace(/\\D/g, \"\");\n }\n\n if (inputValue.length === chars) {\n labelEl.classList.add(\"d-block\");\n }\n\n if (inputValue.length >= chars) {\n event.preventDefault();\n } else if (inputValue.length === chars) {\n labelEl.classList.add(\"d-block\");\n } else {\n labelEl.classList.remove(\"d-block\");\n }\n }\n\n inputEls.forEach(function (inputEl) {\n const typedInputEl = inputEl as HTMLInputElement;\n typedInputEl.addEventListener(\"input\", function (event) {\n limitChars(event, typedInputEl);\n });\n typedInputEl.addEventListener(\"keypress\", function (event) {\n limitChars(event, typedInputEl);\n });\n typedInputEl.addEventListener(\"paste\", function (event) {\n limitChars(event, typedInputEl);\n });\n typedInputEl.addEventListener(\"keyup\", function (event) {\n limitChars(event, typedInputEl);\n });\n });\n}\n\ninterface InputObject {\n value: string;\n operator?: string;\n [key: string]: any;\n}\n\n/**\n * Transforms object by merging operator fields into base fields\n * @param input - Object to transform\n */\nexport function transformObject(input: Record<string, InputObject>): Record<string, InputObject> {\n const result: Record<string, InputObject> = { ...input };\n\n // Iterate over the keys in the input object\n Object.keys(input).forEach((key) => {\n if (key.endsWith(\"_operator\")) {\n // Extract the base key without '_operator'\n const baseKey = key.replace(\"_operator\", \"\");\n\n // Check if the base key exists in the result object\n if (result[baseKey]) {\n // Add the operator value to the base key object\n result[baseKey].operator = input[key].value;\n\n // Optionally, remove the '_operator' key if no longer needed\n delete result[key];\n }\n }\n });\n\n return result;\n}\n\n/**\n * Filters out operator keys from object\n * @param input - Object to filter\n */\nexport function filterOutOperatorKeys(input: Record<string, any>): Record<string, any> {\n const result: Record<string, any> = {};\n\n // Iterate over the keys in the input object\n Object.keys(input).forEach((key) => {\n // Exclude keys that contain '_operator'\n if (!key.includes(\"_operator\")) {\n result[key] = input[key];\n }\n });\n\n return result;\n}\n\ninterface Filter {\n filter_name: string;\n label: string;\n type: string;\n props?: {\n select_options?: Record<string, string>;\n operators?: string[];\n };\n}\n\ninterface FilterValue {\n fieldValue: string;\n operator?: string;\n}\n\n/**\n * Restructures selected filters into standardized format\n * @param data - Filter data\n * @param dirtyFields - Modified fields\n * @param structureFilters - Filter structure definitions\n */\nexport function restructureSelectedFilters(\n data: Record<string, FilterValue | string>,\n dirtyFields: Record<string, any>,\n structureFilters: Filter[]\n): Array<{\n key: string;\n value: string;\n label?: string;\n type?: string;\n valueLable?: string;\n operator?: string;\n props?: any;\n}> {\n const submittedData = objectToArrayKey(dirtyFields);\n const filteredObject = Object.fromEntries(\n Object.entries(data)?.filter(([key, value]) => {\n if (typeof value === \"string\") {\n const typedValue = value as string;\n return submittedData?.includes(key) && typedValue?.trim() !== \"\" && typedValue;\n }\n const typedValue = value as FilterValue;\n return submittedData?.includes(key) && typedValue?.fieldValue !== \"\" && typedValue?.fieldValue;\n })\n );\n\n const renderedFilters = Object.keys(filteredObject)?.map((key) => {\n const targetFilter = structureFilters?.find((filter) => filter?.filter_name === key);\n const value = typeof filteredObject[key] === \"string\" ? (filteredObject[key] as string) : (filteredObject[key] as FilterValue).fieldValue;\n\n return {\n key: key,\n value: value,\n label: targetFilter?.label,\n type: targetFilter?.type,\n valueLable: targetFilter?.props?.select_options ? targetFilter?.props?.select_options[value] : value,\n operator: targetFilter?.type === \"date\" ? targetFilter?.props?.operators?.[0] : (filteredObject[key] as FilterValue)?.operator,\n props: targetFilter?.props,\n };\n });\n\n return renderedFilters;\n}\n\n/**\n * Gets human readable label for operator\n * @param operator - Operator symbol\n */\nexport function getOperatorLabel(operator: string): string {\n if (operator === \"=\") {\n return \"Exact Match\";\n }\n if (operator === \"like\") {\n return \"Like\";\n }\n if (operator === \">=\") {\n return \"Equal Or Greater\";\n }\n if (operator === \"<=\") {\n return \"Less Or EQual\";\n }\n return \"\";\n}\n\n/**\n * Handles cases where no column action element exists\n * @param action - Action type\n */\nexport function handleNoColumnActionElement(action: string): React.ReactElement | string {\n if (action === \"bank_account\") {\n return <span className=\"badge bg-secondary\">Not Available</span>;\n }\n return \"-\";\n}\n\n/**\n * Calculates minimum width for table column\n * @param content - Cell content\n * @param title - Column title\n * @param type - Column type\n */\nexport const calculateMinWidth = (content: string, title: string, type: string): string => {\n const charWidth = 8;\n const padding = 34;\n const headPadding = 60;\n const cellContent = content?.length * charWidth + padding;\n const headContent = title?.length * charWidth + headPadding;\n return type === \"link\" ? \"200px\" : `${Math.max(cellContent, headContent)}px`;\n};\n\n/**\n * Finds row with longest value in specified field\n * @param data - Table data\n * @param field - Field to check\n */\nexport const rowWithLongestField = (data: any[], field: string): string => {\n return data?.reduce((longest: string, current: any) => {\n return current[field]?.length > longest?.length ? current[field] : longest;\n }, \"\");\n};\n\n/**\n * Calculates minimum column width based on content and title\n * @param content - Cell content\n * @param title - Column title\n */\nexport const calculateColMinWidth = (content: string, title: string): string => {\n const charWidth = 8;\n const padding = 34;\n const headPadding = 60;\n const cellContent = content?.length * charWidth + padding;\n const headContent = title?.length * charWidth + headPadding;\n\n return Math.max(cellContent, headContent) <= 500 ? `${Math.max(cellContent, headContent) + 20}px` : \"500px\";\n};\n\n/**\n * Finds table row with longest value in specified field\n * @param data - Table data\n * @param field - Field to check\n */\nexport const tableRowWithLongestField = (data: any[], field: string): string => {\n return data?.reduce((longest: string, current: any) => {\n return current[field]?.length > longest?.length ? current[field] : longest;\n }, \"\");\n};\n\ninterface Column {\n label: string;\n sortable: boolean;\n showable: boolean;\n data_src: string;\n type: string;\n}\n\ninterface Row {\n id: string | number;\n actions?: Record<string, any>;\n [key: string]: any;\n}\n\n/**\n * Formats table columns with cell rendering and width calculations\n * @param cols - Column definitions\n * @param tbData - Table data\n */\nexport function formatTableColumns(\n cols: Column[],\n tbData: Row[]\n): Array<{\n name: string;\n sortable: boolean;\n colIdentifier: string;\n data_src: string;\n type: string;\n minWidth: string;\n selector: (row: Row) => any;\n cell: (row: Row) => React.ReactElement;\n}> {\n return cols\n ?.filter((col) => col?.showable)\n ?.map((col) => {\n return {\n name: col?.label,\n sortable: col?.sortable,\n colIdentifier: col?.data_src,\n data_src: col?.data_src,\n type: col?.type,\n minWidth:\n col?.type !== \"link\" && col?.type !== \"barcode\"\n ? calculateColMinWidth(tableRowWithLongestField(tbData, col?.data_src), col?.label)\n : \"250px\",\n selector: (row: Row) => row[col?.data_src],\n cell: (row: Row) => {\n return (\n <div data-row={JSON.stringify(row)} className=\"text-sm tabel-col-cell w-full\">\n {row[col?.data_src] === null ? (\n <p className=\"mb-0\">-</p>\n ) : (\n row[col?.data_src] !== null && (\n <>\n {col?.type === \"text\" ? (\n <TextCell col={col} row={row} />\n ) : col?.type === \"text_truncate\" ? (\n <p className=\"mb-0 text-wrap\">{truncateStart(row[col?.data_src], 20, \"...\")}</p>\n ) : col?.type === \"link\" ? (\n <LinkCell col={col} row={row} />\n ) : col?.type === \"boolean\" ? (\n <BooleanCell col={col} row={row} />\n ) : col?.type === \"html\" ? (\n <HTMLCell col={col} row={row} />\n ) : col?.type === \"datalist\" || col?.type === \"dataList\" ? (\n <DataListCell col={col} row={row} />\n ) : col?.type === \"barcode\" ? (\n <BarcodeCell col={col} row={row} />\n ) : (\n col?.type === \"actions\" &&\n row?.actions &&\n Object.keys(row?.actions)?.length > 0 && <TableRowActions isActionCol={true} row={row} col={col} />\n )}\n </>\n )\n )}\n </div>\n );\n },\n };\n });\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { formatDateNoTime } from \"../table-utils/utils\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { _setAppliedFilters, _setCurrentPage, _setRenderedFilters } from \"../table-providers/slices/tableCoreSlice\";\nimport { nanoid } from \"@reduxjs/toolkit\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"@/components/ui/button\";\nimport { useTranslations } from \"next-intl\";\n\ninterface Filter {\n key: string;\n label: string;\n type: string;\n value: string;\n valueLable: string;\n props?: {\n operators: string[];\n };\n}\n\ninterface TableCoreState {\n tableCore: {\n renderedFilters: Filter[];\n };\n}\n\ninterface AppliedFiltersProps {\n setValue: (name: string, value: any, options?: object) => void;\n resetField: (name: string) => void;\n}\n\nfunction AppliedFilters({ setValue, resetField }: AppliedFiltersProps) {\n const t = useTranslations(\"ApiTables\");\n const { renderedFilters } = useSelector((state: TableCoreState) => state.tableCore);\n const dispatch = useDispatch();\n\n function handleClearRenderedFilters(key: string, props: Filter[\"props\"], type: string) {\n const filteredRenderedFilters = renderedFilters?.filter((filter: Filter) => filter?.key !== key);\n if (type !== \"date\") {\n setValue(`${key}.fieldValue`, \"\", { shouldDirty: true, shouldValidate: true });\n setValue(`${key}.operator`, props?.operators[0], { shouldDirty: true, shouldValidate: true });\n } else {\n resetField(`${key}.fieldValue`);\n }\n\n dispatch(_setRenderedFilters(filteredRenderedFilters));\n dispatch(_setAppliedFilters(filteredRenderedFilters));\n dispatch(_setCurrentPage(1));\n }\n\n return (\n <>\n {renderedFilters?.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-3 p-0 mb-1 my-5\">\n <div className=\"text-sm font-bold me-2\">{t(\"filterBy\")}</div>\n {renderedFilters?.map((filter: Filter) => (\n <div className=\"mb-1\" key={nanoid()}>\n <Badge variant=\"secondary\" className=\"ps-2 pe-0.5 rounded-full border !border-foreground/30 dark:border-foreground/10\">\n <strong className=\"me-1\">{filter?.label}:</strong>\n <span>{filter?.type !== \"date\" ? filter?.valueLable : formatDateNoTime(filter?.value)}</span>\n\n <Button\n variant=\"default\"\n className=\"p-0 ms-3 !px-0 h-5 w-5 max-w-5 rounded-full hover:bg-destructive/10 dark:hover:bg-destructive/10 hover:text-destructive bg-foreground dark:bg-foreground/10\"\n onClick={() => handleClearRenderedFilters(filter?.key, filter?.props, filter?.type)}\n >\n <X className=\"size-3\" />\n </Button>\n </Badge>\n </div>\n ))}\n </div>\n )}\n </>\n );\n}\n\nexport default AppliedFilters;\n","\"use client\";\n\nimport { useTranslations } from \"next-intl\";\n\n/**\n * A custom hook that provides translation utilities for table operators\n *\n * This hook uses next-intl for internationalization and provides a function\n * to translate common comparison operators into human-readable labels.\n *\n * @returns {Object} An object containing utility functions\n * @returns {Function} getOperatorLabel - Translates operator symbols to readable labels\n *\n * Features:\n * - Translates common comparison operators (=, like, >=, <=)\n * - Uses internationalization through next-intl\n * - Returns human-readable labels from translation keys\n *\n * @example\n * ```tsx\n * const { getOperatorLabel } = useUtilTranslator();\n * const label = getOperatorLabel(\"=\"); // Returns translated \"Exact Match\"\n * ```\n */\nexport default function useUtilTranslator() {\n const t = useTranslations(\"General\");\n\n /**\n * Converts operator symbols to their corresponding translated labels\n *\n * @param {string} operator - The operator symbol to translate\n * @returns {string} The translated label for the operator\n */\n function getOperatorLabel(operator: string) {\n if (operator === \"=\") {\n return t(\"exact\");\n // return 'Exact Match';\n }\n if (operator === \"like\") {\n return t(\"like\");\n // return 'Like';\n }\n if (operator === \">=\") {\n return t(\"greaterOrEqual\");\n // return 'Equal Or Greater';\n }\n if (operator === \"<=\") {\n return t(\"lessOrEqual\");\n // return 'Less Or EQual';\n }\n }\n\n return { getOperatorLabel };\n}\n","import { TagsInput } from './components';\n\nexport default TagsInput;\n","\"use client\";\n\n/* eslint-disable jsx-a11y/aria-proptypes */\n\nimport React, { useEffect, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { objectToArrayKeyVal, restructureSelectedFilters } from \"../table-utils/utils\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport AppliedFilters from \"./AppliedFilters\";\nimport { Input } from \"@/components/ui/input\";\nimport { GoChevronDown, GoChevronUp } from \"react-icons/go\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { _setAppliedFilters, _setCurrentPage, _setRenderedFilters } from \"../table-providers/slices/tableCoreSlice\";\nimport { useTranslations } from \"next-intl\";\nimport useUtilTranslator from \"../table-utils/useUtilTranslator\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/ui/tooltip\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\nimport { format, isValid } from \"date-fns\";\nimport { DatePicker } from \"@/components/DatePicker\";\nimport { Label } from \"@/components/ui/label\";\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger } from \"@/components/ui/sheet\";\nimport {\n MultiSelect,\n MultiSelectContent,\n MultiSelectGroup,\n MultiSelectItem,\n MultiSelectTrigger,\n MultiSelectValue,\n} from \"@/components/ui/multi-select\"\nimport TagsInput from \"@/components/input/tagsInput\";\ninterface TableCoreState {\n tableName: string;\n structureFilters: Array<{\n type: string;\n filter_name: string;\n label: string;\n pair_with?: boolean;\n props?: {\n operators?: string[];\n options?: Record<string, string>;\n select_options?: Record<string, string>;\n selectOptions?: Record<string, string>;\n };\n }>;\n}\n\ninterface RootState {\n tableCore: TableCoreState;\n}\n\n\nfunction TableFilters({ showFilters, setShowFilters }: { showFilters: boolean; setShowFilters: (showFilters: boolean) => void }) {\n const { tableName, structureFilters } = useSelector((state: RootState) => state.tableCore);\n const [expandedFilters, setExpandedFilters] = useState(true);\n const [isSubmitEnabled, setIsSubmitEnabled] = useState(false);\n const dispatch = useDispatch();\n const t = useTranslations(\"General\");\n const tApiTables = useTranslations(\"ApiTables\");\n const {\n handleSubmit,\n control,\n setValue,\n resetField,\n watch,\n formState: { dirtyFields },\n } = useForm();\n const watchFields = watch();\n const { getOperatorLabel } = useUtilTranslator();\n\n useEffect(() => {\n const isAnyFieldFilled = Object.values(watchFields).some((field: any) => {\n const v = field?.fieldValue;\n if (typeof v === \"string\") return v?.trim() !== \"\";\n if (v && typeof v === \"object\" && \"from\" in v) return !!v.from;\n if (v instanceof Date) return true;\n if (Array.isArray(v)) return v.length > 0;\n return false;\n });\n setIsSubmitEnabled(isAnyFieldFilled);\n }, [watchFields]);\n\n const getOperators = (filter: any) => {\n return filter?.props?.operators;\n };\n\n const renderOperator = (filter: any) => {\n return filter?.props?.operators?.length > 1;\n };\n\n /** Format for filter value and label (e.g. 11-02-2026) */\n const DATE_FORMAT = \"dd-MM-yyyy\";\n\n function formatSingleDate(date: Date | undefined): { label: string; value: string } | null {\n if (!date || !isValid(date)) return null;\n const formatted = format(date, DATE_FORMAT);\n return { label: formatted, value: formatted };\n }\n\n function formatDateRangeFromCalendar(range: { from?: Date; to?: Date } | undefined): { label: string; value: [string, string] } | null {\n if (!range?.from || !isValid(range.from)) return null;\n const fromStr = format(range.from, DATE_FORMAT);\n const toDate = range.to && isValid(range.to) ? range.to : range.from;\n const toStr = format(toDate, DATE_FORMAT);\n const label = `${fromStr} - ${toStr}`;\n return { label, value: [fromStr, toStr] };\n }\n\n function submitFiltersHandler(data: Record<string, any>) {\n const updatedForTags = Object.fromEntries(\n Object.entries(data).map(([key, value]: [string, any]) => {\n if (typeof value.fieldValue === \"string\" && value.operator === \"in\") {\n return [key, { ...value, fieldValue: value.fieldValue.split(\",\")?.filter((el: string) => el !== \"\") }];\n }\n if (value.fieldValue instanceof Date) {\n const formatted = formatSingleDate(value.fieldValue);\n if (formatted) return [key, { ...value, fieldValue: formatted.value }];\n }\n if (value.operator === \"between\" && value.fieldValue && typeof value.fieldValue === \"object\" && \"from\" in value.fieldValue) {\n const formatted = formatDateRangeFromCalendar(value.fieldValue);\n if (formatted) return [key, { ...value, fieldValue: formatted.value }];\n }\n return [key, value];\n })\n );\n const updatedForDate = Object.fromEntries(\n Object.entries(data).map(([key, value]: [string, any]) => {\n if (value.fieldValue instanceof Date) {\n const formatted = formatSingleDate(value.fieldValue);\n if (formatted) return [key, { ...value, fieldValue: formatted.label }];\n }\n if (value.operator === \"between\" && value.fieldValue && typeof value.fieldValue === \"object\" && \"from\" in value.fieldValue) {\n const formatted = formatDateRangeFromCalendar(value.fieldValue);\n if (formatted) return [key, { ...value, fieldValue: formatted.label }];\n }\n return [key, value];\n })\n );\n\n dispatch(_setAppliedFilters(restructureSelectedFilters(updatedForTags, dirtyFields, structureFilters)));\n dispatch(_setRenderedFilters(restructureSelectedFilters(updatedForDate, dirtyFields, structureFilters)));\n dispatch(_setCurrentPage(1));\n setShowFilters(false);\n }\n\n return (\n // <div className=\"z-[200]\">\n // <div className=\"flex mb-5 justify-start\">\n // <Button variant=\"outline\" onClick={() => setExpandedFilters((prev) => !prev)}>\n // {expandedFilters ? <GoChevronUp className=\"ms-auto\" /> : <GoChevronDown className=\"ms-auto\" />}\n // {expandedFilters ? tApiTables(\"hide_filters\") : tApiTables(\"show_filters\")}\n // </Button>\n // </div>\n\n // <div className={`${expandedFilters ? \"block\" : \"hidden\"}`}>\n // <form\n // noValidate\n // className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-3 items-end\"\n // onSubmit={handleSubmit(submitFiltersHandler)}\n // >\n // {/* ... Date Type Filters */}\n // {structureFilters\n // ?.filter((filter) => filter?.type === \"date\")\n // ?.map(\n // (filter) =>\n // filter?.pair_with && (\n // <div className=\"m-0 w-full\" key={filter.filter_name}>\n // <Controller\n // name={`${filter?.filter_name}.fieldValue`}\n // control={control}\n // defaultValue={undefined}\n // render={({ field }) => (\n // <Popover>\n // <PopoverTrigger asChild>\n // <Button\n // id=\"date\"\n // variant=\"outline\"\n // className={cn(\n // \"w-[300px] justify-start text-left font-normal bg-background\",\n // !field.value && \"text-muted-foreground\"\n // )}\n // >\n // <CalendarIcon className=\"mr-2 h-4 w-4\" />\n // {field.value?.from ? (\n // field.value.to ? (\n // <>\n // {format(field.value.from, \"LLL dd, y\")} -{\" \"}\n // {format(field.value.to, \"LLL dd, y\")}\n // </>\n // ) : (\n // format(field.value.from, \"LLL dd, y\")\n // )\n // ) : (\n // <span>Pick a date</span>\n // )}\n // </Button>\n // </PopoverTrigger>\n // <PopoverContent className=\"w-auto p-0\" align=\"start\">\n // <Calendar\n // autoFocus\n // mode=\"range\"\n // defaultMonth={field.value?.from}\n // selected={field.value}\n // onSelect={(dates) => field.onChange(dates)}\n // numberOfMonths={1}\n // />\n // </PopoverContent>\n // </Popover>\n // )}\n // />\n // </div>\n // )\n // )}\n\n // {true &&\n // structureFilters\n // ?.filter((filter) => filter?.type !== \"range\" && filter?.type !== \"date\")\n // ?.map((filter) => (\n // <div className=\"space-y-2\" key={filter?.filter_name}>\n // <Label>{filter?.label}</Label>\n // <div className={`${renderOperator(filter) ? \"relative\" : \"\"}`}>\n // <div className={`flex items-stretch`}>\n // <div className=\"m-0 w-full\">\n // {filter?.type === \"text\" && (\n // <Controller\n // name={`${filter?.filter_name}.fieldValue`}\n // control={control}\n // defaultValue=\"\"\n // render={({ field }) => (\n // <Input\n // className={`!focus-visible:ring-0 !focus-visible:shadow-none bg-background ${\n // renderOperator(filter) ? \"border-ee-0 rounded-e-nonee\" : \"\"\n // }`}\n // aria-label={`${filter?.filter_name}`}\n // {...field}\n // type={filter?.type}\n // placeholder={filter?.label}\n // />\n // )}\n // />\n // )}\n\n // {(filter?.type === \"select\" || filter?.type === \"boolean\" || filter?.type === \"null\") && (\n // <Controller\n // name={`${filter?.filter_name}.fieldValue`}\n // control={control}\n // defaultValue={undefined}\n // render={({ field }) => (\n // <Select\n // {...field}\n // onValueChange={field.onChange}\n // defaultValue={field.value}\n // aria-label={`${filter?.filter_name}`}\n // >\n // <SelectTrigger\n // className={`w-full cursor-pointer bg-background\n // ${renderOperator(filter) ? \"border-ee-0 rounded-e-nonee\" : \"\"} `}\n // >\n // <SelectValue placeholder={filter?.label} />\n // </SelectTrigger>\n // <SelectContent>\n // {objectToArrayKeyVal(filter?.props?.select_options || {})\n // ?.sort((a, b) => (a.value === \"\" ? -1 : b.value === \"\" ? 1 : 0))\n // ?.map((opt) => (\n // <SelectItem value={opt?.value} key={opt?.value}>\n // {opt?.key}\n // </SelectItem>\n // ))}\n // </SelectContent>\n // </Select>\n // )}\n // />\n // )}\n\n // {filter?.type === \"number\" && (\n // <Controller\n // name={`${filter?.filter_name}.fieldValue`}\n // control={control}\n // defaultValue=\"\"\n // render={({ field }) => (\n // <Input\n // className={`bg-background ${\n // renderOperator(filter) ? \"border-ee-0 rounded-e-nonee\" : \"\"\n // }`}\n // {...field}\n // aria-label={`${filter?.filter_name}`}\n // type=\"text\"\n // onKeyDown={(e) => {\n // // Allow: backspace, delete, tab, escape, enter, decimal point\n // if (\n // [46, 8, 9, 27, 13, 190, 110].indexOf(e.keyCode) !== -1 ||\n // // Allow: Ctrl+A\n // (e.keyCode === 65 && e.ctrlKey === true) ||\n // // Allow: home, end, left, right\n // (e.keyCode >= 35 && e.keyCode <= 39)\n // ) {\n // return;\n // }\n // // Ensure that it is a number and stop the keypress if not\n // if (\n // (e.shiftKey || e.keyCode < 48 || e.keyCode > 57) &&\n // (e.keyCode < 96 || e.keyCode > 105)\n // ) {\n // e.preventDefault();\n // }\n // }}\n // onChange={(e) => {\n // // Only allow numbers and one decimal point\n // const value = e.target.value.replace(/[^\\d.]/g, \"\");\n // // Prevent multiple decimal points\n // const parts = value.split(\".\");\n // if (parts.length > 2) {\n // return;\n // }\n // field.onChange(value);\n // }}\n // placeholder={filter?.label}\n // />\n // )}\n // />\n // )}\n\n // {filter?.type === \"multi_select\" && !filter?.props?.options && <></>}\n\n // {filter?.type === \"multi_select\" && filter?.props?.options && <></>}\n // </div>\n\n // <Controller\n // name={`${filter.filter_name}.operator`}\n // control={control}\n // defaultValue={getOperators(filter)[0]}\n // render={({ field }) => (\n // <Select\n // {...field}\n // onValueChange={field.onChange}\n // value={field.value || getOperators(filter)[0]}\n // aria-label={`${filter?.filter_name}`}\n // >\n // <Tooltip>\n // <TooltipTrigger asChild>\n // <SelectTrigger\n // className={`bg-muted-foreground/10 absolute top-[3px] end-[3px] min-w-[80px] max-w-[80px] border-none !h-[32px] !cursor-pointer shadow-none ${\n // renderOperator(filter) ? \"\" : \"hidden\"\n // }`}\n // >\n // <SelectValue />\n // </SelectTrigger>\n // </TooltipTrigger>\n // <TooltipContent className=\"dark:text-background\">\n // {getOperatorLabel(watch(`${filter.filter_name}.operator`)) ||\n // getOperatorLabel(getOperators(filter)?.[0])}\n // </TooltipContent>\n // </Tooltip>\n // <SelectContent align={\"end\"}>\n // {getOperators(filter)?.map((operator: string) => (\n // <SelectItem key={operator} value={operator}>\n // {operator}\n // </SelectItem>\n // ))}\n // </SelectContent>\n // </Select>\n // )}\n // />\n // </div>\n // </div>\n // </div>\n // ))}\n\n // {/* Filters Submission */}\n // <div className=\"col\">\n // <Button type=\"submit\" variant=\"primary-opac\" className=\"px-5\" disabled={!isSubmitEnabled}>\n // {t(\"apply\")}\n // </Button>\n // </div>\n // </form>\n // </div>\n\n // <AppliedFilters setValue={setValue} resetField={resetField} />\n // </div>\n <>\n {structureFilters?.length > 0 && (\n <Sheet open={showFilters} onOpenChange={setShowFilters}>\n <SheetTrigger asChild>\n <Button variant=\"outline\" className=\"hidden\"></Button>\n </SheetTrigger>\n <SheetContent className=\"z-[999] rounded-xl overflow-hidden! pb-5\">\n <SheetHeader>\n <SheetTitle>{tApiTables(\"filters\")}</SheetTitle>\n </SheetHeader>\n\n <form\n noValidate\n id=\"tb_filters_form\"\n className=\"flex flex-col h-full overflow-y-auto gap-4 px-4 pb-20 relative\"\n onSubmit={handleSubmit(submitFiltersHandler)}\n >\n {/* ... Date Type Filters (same DatePicker as register) */}\n {structureFilters\n ?.filter((filter) => filter?.type === \"date\")\n ?.map(\n (filter) =>\n filter?.pair_with && (\n <div className=\"m-0 w-full space-y-2\" key={filter.filter_name}>\n <Label>{filter?.label}</Label>\n <Controller\n name={`${filter?.filter_name}.fieldValue`}\n control={control}\n defaultValue={undefined}\n render={({ field }) => (\n <DatePicker\n date={field.value instanceof Date ? field.value : undefined}\n setDate={field.onChange}\n placeholder={filter?.label}\n />\n )}\n />\n </div>\n )\n )}\n\n {true &&\n structureFilters\n ?.filter((filter) => filter?.type !== \"range\" && filter?.type !== \"date\")\n ?.map((filter) => (\n <div className=\"space-y-2\" key={filter?.filter_name}>\n <Label>{filter?.label}</Label>\n <div className={`${renderOperator(filter) ? \"relative\" : \"\"}`}>\n <div className={`flex items-stretch`}>\n <div className=\"m-0 w-full\">\n {filter?.type === \"text\" && (\n <Controller\n name={`${filter?.filter_name}.fieldValue`}\n control={control}\n defaultValue=\"\"\n render={({ field }) => (\n <Input\n className={`!focus-visible:ring-0 !focus-visible:shadow-none bg-background ${renderOperator(filter) ? \"border-ee-0 rounded-e-nonee\" : \"\"\n }`}\n aria-label={`${filter?.filter_name}`}\n {...field}\n type={filter?.type}\n placeholder={filter?.label}\n />\n )}\n />\n )}\n\n {(filter?.type === \"select\" || filter?.type === \"boolean\" || filter?.type === \"null\") && (\n <Controller\n name={`${filter?.filter_name}.fieldValue`}\n control={control}\n defaultValue={undefined}\n render={({ field }) => (\n <Select\n {...field}\n onValueChange={field.onChange}\n defaultValue={field.value}\n aria-label={`${filter?.filter_name}`}\n >\n <SelectTrigger\n className={`w-full cursor-pointer bg-background\n ${renderOperator(filter) ? \"border-ee-0 rounded-e-nonee\" : \"\"} `}\n >\n <SelectValue placeholder={filter?.label} />\n </SelectTrigger>\n <SelectContent>\n {objectToArrayKeyVal(filter?.props?.select_options || {})\n ?.sort((a, b) => (a.value === \"\" ? -1 : b.value === \"\" ? 1 : 0))\n ?.map((opt) => (\n <SelectItem value={opt?.value} key={opt?.value}>\n {opt?.key}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n />\n )}\n\n {filter?.type === \"number\" && (\n <Controller\n name={`${filter?.filter_name}.fieldValue`}\n control={control}\n defaultValue=\"\"\n render={({ field }) => (\n <Input\n className={`bg-background ${renderOperator(filter) ? \"border-ee-0 rounded-e-nonee\" : \"\"\n }`}\n {...field}\n aria-label={`${filter?.filter_name}`}\n type=\"text\"\n onKeyDown={(e) => {\n // Allow: backspace, delete, tab, escape, enter, decimal point\n if (\n [46, 8, 9, 27, 13, 190, 110].indexOf(e.keyCode) !== -1 ||\n // Allow: Ctrl+A\n (e.keyCode === 65 && e.ctrlKey === true) ||\n // Allow: home, end, left, right\n (e.keyCode >= 35 && e.keyCode <= 39)\n ) {\n return;\n }\n // Ensure that it is a number and stop the keypress if not\n if (\n (e.shiftKey || e.keyCode < 48 || e.keyCode > 57) &&\n (e.keyCode < 96 || e.keyCode > 105)\n ) {\n e.preventDefault();\n }\n }}\n onChange={(e) => {\n // Only allow numbers and one decimal point\n const value = e.target.value.replace(/[^\\d.]/g, \"\");\n // Prevent multiple decimal points\n const parts = value.split(\".\");\n if (parts.length > 2) {\n return;\n }\n field.onChange(value);\n }}\n placeholder={filter?.label}\n />\n )}\n />\n )}\n\n {filter?.type === \"multi_select\" && filter?.props?.selectOptions && <>\n\n <Controller\n name={`${filter?.filter_name}.fieldValue`}\n control={control}\n defaultValue={undefined}\n render={({ field }) => (\n <MultiSelect\n {...field}\n onValuesChange={(values) => field.onChange(values)}\n defaultValues={field.value || []}\n aria-label={`${filter?.filter_name}`}\n >\n <MultiSelectTrigger\n className={`w-full cursor-pointer bg-background\n ${renderOperator(filter) ? \"border-ee-0 rounded-e-nonee\" : \"\"} `}\n >\n <MultiSelectValue placeholder={filter?.label} />\n </MultiSelectTrigger>\n <MultiSelectContent>\n {objectToArrayKeyVal(filter?.props?.selectOptions || {})\n ?.sort((a, b) => (a.value === \"\" ? -1 : b.value === \"\" ? 1 : 0))\n ?.map((opt) => (\n <MultiSelectItem value={opt?.value} key={opt?.value}>\n {opt?.key}\n </MultiSelectItem>\n ))}\n </MultiSelectContent>\n </MultiSelect>\n )}\n />\n </>}\n\n {filter?.type === \"multi_select\" && !filter?.props?.selectOptions && <>\n <Controller\n name={`${filter?.filter_name}.fieldValue`}\n control={control}\n defaultValue=\"\"\n render={({ field }) => (\n <TagsInput\n value={field.value || []}\n onChange={(values) => field.onChange(values)}\n placeholder={filter?.label}\n />\n )}\n />\n </>}\n </div>\n\n <Controller\n name={`${filter.filter_name}.operator`}\n control={control}\n defaultValue={getOperators(filter)[0]}\n render={({ field }) => (\n <Select\n {...field}\n onValueChange={field.onChange}\n value={field.value || getOperators(filter)[0]}\n aria-label={`${filter?.filter_name}`}\n >\n <Tooltip>\n <TooltipTrigger asChild>\n <SelectTrigger\n className={`bg-muted-foreground/10 absolute top-[3px] end-[3px] bottom-[3px] min-w-[80px] max-w-[80px] border-none !h-[30px] !cursor-pointer shadow-none ${renderOperator(filter) ? \"\" : \"hidden\"\n }`}\n >\n <SelectValue />\n </SelectTrigger>\n </TooltipTrigger>\n <TooltipContent className=\"dark:text-background\">\n {getOperatorLabel(watch(`${filter.filter_name}.operator`)) ||\n getOperatorLabel(getOperators(filter)?.[0])}\n </TooltipContent>\n </Tooltip>\n <SelectContent align={\"end\"}>\n {getOperators(filter)?.map((operator: string) => (\n <SelectItem key={operator} value={operator}>\n {operator}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n />\n </div>\n </div>\n </div>\n ))}\n\n {/* Filters Submission */}\n </form>\n <div className=\"col absolute bottom-0 p-3 bg-background dark:bg-neutral-800 left-0 right-0\">\n <Button form=\"tb_filters_form\" type=\"submit\" variant=\"primary-opac\" className=\"px-5 w-full\" disabled={!isSubmitEnabled}>\n {t(\"apply\")}\n </Button>\n </div>\n </SheetContent>\n </Sheet>\n )}\n\n <AppliedFilters setValue={setValue} resetField={resetField} />\n </>\n );\n}\n\nexport default TableFilters;\n","\"use client\";\nimport { Checkbox as CheckboxItem } from \"@/components/ui/checkbox\";\nimport React from \"react\";\n\nexport const Checkbox = React.forwardRef(({ onClick, onChange, checked, ...rest }: any, ref: any) => {\n return <CheckboxItem ref={ref} onCheckedChange={onClick} checked={checked} {...rest} />;\n});\n","\"use client\";\n\nimport React from \"react\";\n\nimport { Card } from \"@/components/ui/card\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\nexport function IntegrationLoader() {\n return (\n <Card>\n <div className=\"absolute top-0 end-0 px-1\">\n <Skeleton className=\"h-[25px] w-[4rem] rounded-[0.4rem]\" />\n </div>\n\n <div className=\"flex flex-col items-center mt-3\">\n <Skeleton className=\"h-[40px] w-[100px] mb-[1rem]\" />\n <Skeleton className=\"h-[10px] w-[150px] mb-[1rem]\" />\n <Skeleton className=\"h-[30px] w-[200px]\" />\n </div>\n </Card>\n );\n}\n\nexport function TableLoader({ count }: any) {\n return (\n <div className=\"w-full P-4 bg-neutral-100 dark:bg-neutral-700\">\n <div className=\"mb-0 flex flex-col gap-1 p-2\">\n {Array.from({ length: count }, (_, index) => (\n <Skeleton key={index} className=\"h-[50px] dark:bg-neutral-800 bg-neutral-200 w-full rounded-md\" />\n ))}\n </div>\n </div>\n );\n}\n\nexport function FullPageTableLoader({ count }: any) {\n return (\n <>\n <div className=\"w-full mb-5\">\n <div className=\"mb-4 w-[200px]\">\n <Skeleton className=\"h-[40px]\" />\n </div>\n\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-3\">\n <div className=\"space-y-2\">\n <Skeleton className=\"h-[8px] w-[50%]\" />\n <Skeleton className=\"h-[40px]\" />\n </div>\n <div className=\"space-y-2\">\n <Skeleton className=\"h-[8px] w-[50%]\" />\n <Skeleton className=\"h-[40px]\" />\n </div>\n <div className=\"space-y-2\">\n <Skeleton className=\"h-[8px] w-[50%]\" />\n <Skeleton className=\"h-[40px]\" />\n </div>\n <div className=\"space-y-2\">\n <Skeleton className=\"h-[8px] w-[50%]\" />\n <Skeleton className=\"h-[40px]\" />\n </div>\n <div className=\"space-y-2 d-none d-lg-block\">\n <Skeleton className=\"h-[8px] w-[50%]\" />\n <Skeleton className=\"h-[40px]\" />\n </div>\n <div className=\"space-y-2 d-none d-lg-block\">\n <Skeleton className=\"h-[8px] w-[50%]\" />\n <Skeleton className=\"h-[40px]\" />\n </div>\n <div className=\"space-y-2 d-none d-lg-block\">\n <Skeleton className=\"h-[8px] w-[50%]\" />\n <Skeleton className=\"h-[40px]\" />\n </div>\n <div className=\"space-y-2 d-none d-lg-block\">\n <Skeleton className=\"h-[8px] w-[50%]\" />\n <Skeleton className=\"h-[40px]\" />\n </div>\n </div>\n </div>\n\n <div className=\"p-2 rounded-md border border-dashed\">\n <div className=\"w-full\">\n <div className=\"mb-0\">\n <Skeleton className=\"h-[55px]\" />\n </div>\n </div>\n <div className=\"w-full pt-0\">\n <div className=\"mb-0 py-2\">\n {Array.from({ length: count }, (_, index) => (\n <Skeleton key={index} className=\"h-[50px]\" />\n ))}\n </div>\n </div>\n </div>\n </>\n );\n}\n\nexport function DashboardCardLoader() {\n return (\n <div className=\"w-full P-4\">\n <div className=\"flex items-center justify-between mb-4\">\n <Skeleton className=\"h-[15px] w-[15rem]\" />\n <Skeleton className=\"h-[15px] w-[3rem]\" />\n </div>\n <div className=\"mb-0\">\n {Array.from({ length: 12 }, (_, index) => (\n <Skeleton key={index} className=\"h-[30px] mb-[0.1rem]\" />\n ))}\n </div>\n </div>\n );\n}\n","import { useSelector } from \"react-redux\";\nimport { FaCircle } from \"react-icons/fa\";\n\ninterface TableColumn {\n type?: string;\n name: string;\n cell: (data: any) => React.ReactNode;\n}\n\ninterface RootState {\n tableColumns: {\n tableColumns: TableColumn[];\n };\n}\n\ninterface ExpandedRowProps {\n data: any;\n}\n\nfunction ExpandedRow({ data }: ExpandedRowProps) {\n const { tableColumns } = useSelector((state: RootState) => state.tableColumns);\n\n return (\n <div className=\"bg-neutral-100 dark:bg-neutral-800 dark:text-white\">\n <div style={{ maxWidth: \"500px\" }} className=\"w-full\">\n <div className=\"grid items-center grid-cols-1 lg:grid-cols-12 gap-3 text-end g-4 py-4\">\n {tableColumns?.map((col: TableColumn, index: number) => (\n <div className={`${col?.type === \"actions\" ? \"lg:col-span-9\" : \"lg:col-span-6\"}`} key={index}>\n <div className=\"h-full w-full flex px-3 gap-2 items-start\">\n <FaCircle size={4} className=\"mt-[5px] text-primary flex-shrink-0\" />\n <div className=\"w-full\">\n <h6 className=\"text-[12px] text-start font-semibold mb-1\">{col?.name}</h6>\n <div className=\"text-start\">{col?.cell(data)}</div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default ExpandedRow;\n","'use client';\n\nimport { getHostStorage } from '../host/storage';\n\nexport default function useSecureLS() {\n return getHostStorage();\n}\n","import { AppCurrency } from './components';\n\nexport default AppCurrency;\n","\"use client\";\n\nimport React, { useMemo } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useTranslations } from \"next-intl\";\nimport AppCurrency from \"@/components/ui/custom/AppCurrency\";\nimport { Button } from \"@/components/ui/button\";\nimport { _getSelectedBulkAction } from \"../table-providers/slices/bulkActionsSlice\";\n\ninterface RootState {\n bulkActions: { bulkActions: { action_key?: string }[] };\n}\n\nexport default function CalculateWithdrawalAmount({ selectedRows }: { selectedRows: { dues?: string | number }[] }) {\n const t = useTranslations(\"ApiTables\");\n const dispatch = useDispatch();\n const { bulkActions } = useSelector((state: RootState) => state.bulkActions ?? { bulkActions: [] });\n\n const totalAmountSelected = useMemo(() => {\n return selectedRows?.reduce((total, row) => total + Number(row?.dues), 0) ?? 0;\n }, [selectedRows]);\n\n const withdrawalBulkAction = useMemo(\n () => bulkActions?.find((a) => a?.action_key === \"create_withdrawal_bulk\"),\n [bulkActions]\n );\n\n function openWithdrawalModal() {\n if (withdrawalBulkAction) dispatch(_getSelectedBulkAction(withdrawalBulkAction));\n }\n\n return (\n totalAmountSelected > 0 && (\n\n <div className=\"flex flex-wrap items-center justify-center gap-2 mb-3\">\n <h6 className=\"text-3xl mb-0 lh-1\" style={{ lineHeight: \"1 !important\" }}>\n\n <span className=\"text-sm font-[400] flex items-center gap-1\">{totalAmountSelected?.toFixed(2)} <AppCurrency t={t} className=\"text-sm font-[400]\" /></span>\n </h6>\n {/* {withdrawalBulkAction && (\n <Button type=\"button\" variant=\"default\" size=\"sm\" onClick={openWithdrawalModal}>\n {t(\"storeWithdrawalModalTitle\")}\n </Button>\n )} */}\n </div>\n\n\n )\n );\n}\n\n","/* eslint-disable react-hooks/exhaustive-deps */\n\"use client\";\nimport React, { useEffect } from \"react\";\nimport DataTable from \"react-data-table-component\";\nimport { Checkbox } from \"../general-components/Checkbox\";\nimport { TableLoader } from \"../general-components/Loaders\";\nimport { HiChevronUpDown } from \"react-icons/hi2\";\n\nimport ExpandedRow from \"./ExpandedRow\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { _setTableSorting } from \"../table-providers/slices/tableCoreSlice\";\nimport { _setSelectedRows, _setTableColumns, _setVisibleColumns } from \"../table-providers/slices/tableColumnsSlice\";\nimport { useTranslations } from \"next-intl\";\nimport useSecureLS from \"@/hooks/useSecureLS\";\nimport CalculateWithdrawalAmount from \"./TableCustomElements\";\n\ninterface Column {\n name: string;\n colIdentifier: string;\n showable?: boolean;\n data_src: string;\n}\n\ninterface Action {\n applicableAsBulkAction?: boolean;\n}\n\ninterface RootState {\n bulkActions: {\n bulkActions: any[];\n };\n rowActions: {\n structureRowActions: Action[];\n actionsInRegularCells: any;\n };\n tableColumns: {\n tableColumns: any[];\n toggledClearRows: boolean;\n selectedRows: any[];\n };\n tableCore: {\n tableData: any[];\n tableFetchingLoading: boolean;\n pageSize: number;\n structureColumns: Column[];\n tableName: string;\n customElement: string | null;\n };\n}\n\nfunction TableBody() {\n const { bulkActions } = useSelector((state: RootState) => state.bulkActions);\n const { structureRowActions, actionsInRegularCells } = useSelector((state: RootState) => state.rowActions);\n const { tableColumns, toggledClearRows, selectedRows } = useSelector((state: RootState) => state.tableColumns);\n const { tableData, tableFetchingLoading, pageSize, structureColumns, tableName, customElement } = useSelector((state: RootState) => state.tableCore);\n const dispatch = useDispatch();\n const tApiTables = useTranslations(\"ApiTables\");\n const { get } = useSecureLS();\n\n function sortingTableHandler(column: Column, sortDirection: string) {\n dispatch(_setTableSorting({ label: column?.name, direction: sortDirection, [column?.colIdentifier]: sortDirection }));\n }\n\n useEffect(() => {\n dispatch(_setTableColumns({ cols: structureColumns?.filter((col: Column) => col?.showable), tbData: tableData }));\n if (!get(`${tableName}_tb`)) {\n dispatch(_setVisibleColumns(structureColumns?.map((col: Column) => col?.data_src)));\n } else {\n dispatch(_setVisibleColumns(JSON.parse(get(`${tableName}_tb`))));\n }\n }, [structureColumns, tableData]);\n\n\n return (\n <>\n {customElement === \"withdrawal_requests\" && (\n <>\n <CalculateWithdrawalAmount selectedRows={selectedRows ?? []} />\n </>\n )}\n <div className=\"rdt-table-holder static\">\n <div className={`table-scrollable-holder text-nowrap static`}>\n <DataTable\n className=\"text-nowrap\"\n columns={tableColumns}\n data={tableData}\n expandableRows\n expandableRowsComponent={ExpandedRow}\n responsive\n progressPending={tableFetchingLoading}\n progressComponent={<TableLoader count={Number(pageSize)} />}\n sortIcon={<HiChevronUpDown className=\"me-1\" />}\n selectableRowsComponent={Checkbox as any}\n sortServer\n onSort={sortingTableHandler as any}\n noDataComponent={\n <div className=\"py-4 text-foreground bg-neutral-100 dark:bg-neutral-800 px-4 w-full text-start lg:text-center\">\n {tApiTables(\"no_results\")}\n </div>\n }\n persistTableHead={true}\n selectableRows={\n !tableFetchingLoading &&\n (bulkActions.length > 0 || structureRowActions?.filter((action: Action) => action?.applicableAsBulkAction)?.length > 0)\n ? true\n : false\n }\n onSelectedRowsChange={({ selectedRows }) => dispatch(_setSelectedRows(selectedRows))}\n clearSelectedRows={!toggledClearRows}\n />\n </div>\n </div>\n </>\n );\n}\n\nexport default TableBody;\n","import { CustomPagination } from './components';\n\nexport default CustomPagination;\n","\"use client\";\n\nimport React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { _setCurrentPage } from \"../table-providers/slices/tableCoreSlice\";\nimport { useTranslations } from \"next-intl\";\nimport CustomPagination from \"@/components/TablePagination\";\n\ninterface PaginationLink {\n url: string | null;\n label: string;\n page: number | null;\n active: boolean;\n}\n\ninterface TableCoreState {\n tableCore: {\n tablePagination: {\n current_page: number;\n from: number | null;\n last_page: number;\n links: PaginationLink[];\n next_page_url: string | null;\n path: string;\n per_page: number;\n prev_page_url: string | null;\n to: number | null;\n total: number;\n } | null;\n currentPage: number;\n };\n}\n\nfunction TablePagination() {\n const { tablePagination, currentPage } = useSelector((state: TableCoreState) => state.tableCore);\n const dispatch = useDispatch();\n const tApiTables = useTranslations(\"ApiTables\");\n\n function setCurrentPageHandler(link: number) {\n dispatch(_setCurrentPage(Number(link)));\n }\n\n // Use current_page from pagination if available, otherwise fall back to currentPage state\n const currentPageNumber = tablePagination?.current_page ?? currentPage;\n\n return (\n <div className=\"grid grid-cols-1 gap-4 lg:grid-cols-2 mt-5 text-center lg:text-end\">\n <div className=\"col\">\n {tablePagination && tablePagination.total > 0 && (\n <CustomPagination\n currentPage={currentPageNumber}\n totalPages={tablePagination.last_page}\n onPageChange={(page: number) => {\n setCurrentPageHandler(page);\n }}\n />\n )}\n </div>\n <div className=\"text-muted-foreground text-center lg:text-end text-sm\">\n <span> {tApiTables(\"show_results\")} </span>\n <strong className=\"mx-1\">{tablePagination?.from ?? 0}</strong>\n <span>{tApiTables(\"to_results\")} </span>\n <strong className=\"mx-1\">{tablePagination?.to ?? 0}</strong>\n <span> {tApiTables(\"from_results\")}</span>\n <strong className=\"mx-1\">{tablePagination?.total ?? 0}</strong>\n <span> {tApiTables(\"results\")}</span>\n </div>\n </div>\n );\n}\n\nexport default TablePagination;\n","\"use client\";\n\nimport React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { _setTableSorting } from \"../table-providers/slices/tableCoreSlice\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Button } from \"@/components/ui/button\";\nimport { X } from \"lucide-react\";\n\nfunction TableSorting() {\n const { tableSorting } = useSelector((state: any) => state?.tableCore);\n const dispatch = useDispatch();\n\n function resetTableSorting() {\n dispatch(_setTableSorting({}));\n }\n\n return (\n <>\n {Object.keys(tableSorting)?.length > 0 && (\n <div className=\"my-3\">\n <div className=\"flex flex-wrap items-center gap-1 p-0 mb-1 pt-3\">\n <div className=\"text-sm font-bold me-2\">Sorted By </div>\n <Badge variant=\"secondary\" className=\"ps-4 pe-0.5 rounded-full border !border-foreground/30 dark:border-foreground/10\">\n {tableSorting?.label}: {tableSorting?.direction}\n <Button\n variant=\"default\"\n className=\"p-0 ms-3 h-6 w-6 rounded-full hover:bg-destructive/10 dark:hover:bg-destructive/10 hover:text-destructive bg-foreground dark:bg-foreground/10\"\n onClick={resetTableSorting}\n >\n <X className=\"size-3\" />\n </Button>\n </Badge>\n </div>\n </div>\n )}\n </>\n );\n}\n\nexport default TableSorting;\n","\"use client\";\n\nimport React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { _changePageSize, _setCurrentPage } from \"../table-providers/slices/tableCoreSlice\";\nimport useSecureLS from \"@/hooks/useSecureLS\";\n\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";\n\nconst API_TABLES_PAGE_SIZE_KEY = \"api_tables_page_size\";\n\ninterface TableCoreState {\n tableCore: {\n pageSize: number;\n };\n}\n\nfunction TablePageSize() {\n const { pageSize } = useSelector((state: TableCoreState) => state.tableCore);\n const dispatch = useDispatch();\n const { set: setStored } = useSecureLS();\n\n function changePageSize(value: number) {\n setStored(API_TABLES_PAGE_SIZE_KEY, String(value));\n dispatch(_changePageSize(value));\n dispatch(_setCurrentPage(1));\n }\n\n return (\n <div className=\"w-full sm:w-[90px]\">\n <Select onValueChange={(value) => changePageSize(Number(value))} value={`${pageSize}`}>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder=\"Page Size\" />\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>\n <SelectItem value={\"10\"}>10</SelectItem>\n <SelectItem value={\"25\"}>25</SelectItem>\n <SelectItem value={\"50\"}>50</SelectItem>\n <SelectItem value={\"100\"}>100</SelectItem>\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n );\n}\n\nexport default TablePageSize;\n","\"use client\";\n\nimport React from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { _setVisibleColumns } from \"../table-providers/slices/tableColumnsSlice\";\nimport { FiChevronDown } from \"react-icons/fi\";\nimport { RiEyeCloseFill } from \"react-icons/ri\";\nimport { useTranslations } from \"next-intl\";\n\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { Button } from \"@/components/ui/button\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport useSecureLS from \"@/hooks/useSecureLS\";\n\ninterface TableColumn {\n data_src: string;\n name: string;\n}\n\ninterface RootState {\n tableCore: {\n tableName: string;\n };\n tableColumns: {\n tableColumns: TableColumn[];\n visibleColumns: string[];\n };\n}\n\nfunction ColumnsVisibility() {\n const { tableName } = useSelector((state: RootState) => state.tableCore);\n const { tableColumns, visibleColumns } = useSelector((state: RootState) => state.tableColumns);\n const dispatch = useDispatch();\n const tApiTables = useTranslations(\"ApiTables\");\n const { set } = useSecureLS();\n\n function toggleColumnVisibility(value: boolean, data_src: string, tableName: string) {\n let columns = [...visibleColumns];\n if (value === true) {\n columns = [...visibleColumns, data_src];\n } else {\n columns = columns.filter((col) => col !== data_src);\n }\n dispatch(_setVisibleColumns(columns));\n set(`${tableName}_tb`, JSON.stringify(columns));\n }\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button className=\"w-full sm:w-auto\" variant=\"outline\">\n <RiEyeCloseFill />\n {tApiTables(\"columns\")}\n <FiChevronDown className=\"ms-auto\" />\n </Button>\n </PopoverTrigger>\n\n <PopoverContent align=\"start\" className=\"p-4 flex flex-col gap-1 max-h-[min(90vh,400px)] overflow-y-auto w-auto min-w-[--radix-popover-trigger-width]\">\n {tableColumns?.map((col: TableColumn, index: number) => {\n return (\n <div className=\"flex items-center gap-2\" key={index}>\n <Checkbox\n className=\"cursor-pointer\"\n checked={visibleColumns?.indexOf(col.data_src) !== -1}\n onCheckedChange={(checked) => toggleColumnVisibility(checked as boolean, col.data_src, tableName)}\n id={col.data_src}\n />\n <label htmlFor={col.data_src} className=\"text-sm cursor-pointer\">\n {col.name}\n </label>\n </div>\n );\n })}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport default ColumnsVisibility;\n","\"use client\";\n\nimport React from \"react\";\nimport {\n ExternalRedirectRowActionElement,\n GeneralRowActionElement,\n RedirectRowActionElement,\n ToggleRowActionElement,\n} from \"../general-components/RowActionsElements\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport useUtilsProvider from \"../table-providers/useUtilsProvider\";\nimport { _getSelectedBulkAction } from \"../table-providers/slices/bulkActionsSlice\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface Action {\n action_key: string;\n action_type: string;\n label: string;\n method: string;\n action?: {\n bulk_action_url?: {\n api: string;\n };\n api?: string;\n };\n payload_keys?: string[];\n need_confirmation?: boolean;\n}\n\ninterface RootState {\n tableColumns: {\n selectedRows: any[];\n selectedIds: string[];\n };\n tableCore: {\n appliedFilters: any;\n };\n bulkActions: {\n bulkActions: Action[];\n };\n rowActions: {\n selectedRowActions: Action[];\n };\n}\n\nfunction ActionsOfSelections() {\n const { selectedRows, selectedIds } = useSelector((state: RootState) => state.tableColumns);\n const { appliedFilters } = useSelector((state: RootState) => state.tableCore);\n const { bulkActions } = useSelector((state: RootState) => state.bulkActions);\n const { selectedRowActions } = useSelector((state: RootState) => state.rowActions);\n const { bulkActionsPostHandler } = useUtilsProvider();\n const dispatch = useDispatch();\n\n const requireModal = (action: any) => {\n return action?.payload_keys?.filter((key: string) => key !== \"filters\" && key !== \"selected_ids\")?.length > 0 || action?.need_confirmation;\n };\n\n function fireBulkAction(action: Action) {\n if (requireModal(action)) {\n dispatch(_getSelectedBulkAction(action));\n } else {\n bulkActionsPostHandler(\n action.method,\n action.action?.bulk_action_url\n ? action.action.bulk_action_url.api.replace(\"/api\", \"\")\n : action.action?.api?.replace(\"/api\", \"\") || \"\",\n { filters: appliedFilters, selected_ids: selectedIds },\n {\n msg: action.action_key === \"export_excel\" ? \"جاري تصدير ملف الاكسل\" : \"جاري معالجة البيانات\",\n icon: \"excel\",\n },\n action\n );\n }\n }\n\n return (\n <>\n {selectedRows?.length > 0 && (\n <div className=\"flex flex-wrap items-center justify-center gap-2 mb-4\">\n {selectedRowActions?.map((action: Action) => (\n <div className=\"flex flex-grow-1 md:flex-grow-0 items-center\" key={action.action_key}>\n {action.action_type === \"toggle\" ? (\n <ToggleRowActionElement action={action} isBulk={true} />\n ) : action.action_type === \"redirect\" ? (\n <RedirectRowActionElement action={action} isBulk={true} />\n ) : action.action_type === \"external_redirect\" ? (\n <ExternalRedirectRowActionElement action={action} isBulk={true} />\n ) : (\n <GeneralRowActionElement action={action} isBulk={true} />\n )}\n </div>\n ))}\n\n {/* {bulkActions?.map((action: Action) => (\n <div className=\"flex flex-grow-1 md:flex-grow-0 items-center\" key={action.action_key}>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full\"\n onClick={() => {\n fireBulkAction(action);\n }}\n >\n {action.label}\n </Button>\n </div>\n ))} */}\n </div>\n )}\n </>\n );\n}\n\nexport default ActionsOfSelections;\n","import { Popup } from './components';\n\nexport default Popup;\n","\"use client\";\n\n/**\n * This module contains modal components for displaying column data in different formats\n */\n\nimport parse from \"html-react-parser\";\nimport { useSelector } from \"react-redux\";\nimport { Button } from \"@/components/ui/button\";\n\n/**\n * Props for all modal components\n */\ninterface ModalProps {\n closeModal: () => void;\n}\n\n/**\n * Redux state interface for table columns\n */\ninterface TableColumnsState {\n tableColumns: {\n rowSelectedModal: {\n label: string;\n value: {\n value: string[] | Record<string, string[]>;\n };\n };\n };\n}\n\n/**\n * Modal component for displaying array data in a list format\n *\n * Features:\n * - Displays data as numbered list items\n * - Each item has neutral background and rounded corners\n * - Handles text wrapping and whitespace\n * - Includes dismiss button\n *\n * @param closeModal - Function to close the modal\n */\nexport function DatalistModal({ closeModal }: ModalProps) {\n const { rowSelectedModal } = useSelector((state: TableColumnsState) => state.tableColumns);\n return (\n <>\n <div className=\"text-center mb-4\">\n <h5 className=\"font-bold\">{rowSelectedModal?.label}</h5>\n </div>\n <ol className=\"mb-4 overflow-hidden\">\n {Array.isArray(rowSelectedModal?.value?.value) &&\n rowSelectedModal?.value?.value?.map((item: string, index: number) => (\n <li className=\"p-3 text-wrap whitespace-normal bg-neutral-100 dark:bg-neutral-800 text-sm rounded-md mb-2\" key={index}>\n {item}\n </li>\n ))}\n </ol>\n <Button variant=\"outline\" className=\"w-full\" onClick={closeModal}>\n Dismiss\n </Button>\n </>\n );\n}\n\n/**\n * Modal component for displaying object data in a key-value list format\n *\n * Features:\n * - Shows object keys and values in a two-column layout\n * - Keys are bold and values are plain text\n * - Both columns have neutral background and rounded corners\n * - Values are joined with dashes if arrays\n * - Includes dismiss button\n *\n * @param closeModal - Function to close the modal\n */\nexport function DatalistObjModal({ closeModal }: ModalProps) {\n const { rowSelectedModal } = useSelector((state: TableColumnsState) => state.tableColumns);\n\n const obj = rowSelectedModal?.value?.value as Record<string, string[]>;\n\n return (\n <>\n <div className=\"text-center mb-6\">\n <h5>{rowSelectedModal?.label}</h5>\n </div>\n <ol className=\"mb-4\">\n {obj &&\n Object.keys(obj)?.map((key: string, index: number) => (\n <li className=\"flex items-center gap-2 mb-2\" key={index}>\n <strong className=\"py-2 px-3 bg-neutral-100 dark:bg-neutral-800 w-full rounded-md\">{key}</strong>\n <span className=\"py-2 px-3 bg-neutral-100 dark:bg-neutral-800 w-full rounded-md\">{obj[key]?.join(\" - \")}</span>\n </li>\n ))}\n </ol>\n <Button variant=\"outline\" className=\"w-full\" onClick={closeModal}>\n Dismiss\n </Button>\n </>\n );\n}\n\n/**\n * Modal component for displaying HTML content\n *\n * Features:\n * - Parses and renders HTML strings safely\n * - Shows modal title above content\n * - Only processes string values\n */\nexport function HTMLParsedModal() {\n const { rowSelectedModal } = useSelector((state: TableColumnsState) => state.tableColumns);\n\n return (\n <>\n <div className=\"text-center mb-4\">\n <h5>{rowSelectedModal?.label}</h5>\n </div>\n {rowSelectedModal?.value?.value && typeof rowSelectedModal?.value?.value === \"string\" && parse(rowSelectedModal?.value?.value)}\n </>\n );\n}\n","\"use client\";\n\n/**\n * This module contains modal components for handling row actions in API tables\n */\n\nimport React, { useMemo } from \"react\";\nimport { useTranslations } from \"next-intl\";\nimport { copyToClipboard } from \"../table-utils/utils\";\nimport { Button } from \"@/components/ui/button\";\nimport LoadingButton from \"@/components/ui/custom/button\";\nimport { IoCopy } from \"react-icons/io5\";\nimport { useSelector } from \"react-redux\";\nimport useUtilsProvider from \"../table-providers/useUtilsProvider\";\nimport { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow } from \"@/components/ui/table\";\n\n/**\n * Props for the ViewRowData component\n */\ninterface ViewRowDataProps {\n data: {\n data:\n | Array<{\n [key: string]: {\n label: string;\n value: string | string[] | number;\n type?: string;\n };\n }>\n | {\n [key: string]: {\n label: string;\n value: string | string[] | number;\n type?: string;\n };\n };\n };\n}\n\n/**\n * Props for the ConfirmationModal component\n */\ninterface ConfirmationModalProps {\n closeModal: () => void;\n confirmationFor: \"rowAction\" | \"bulkAction\";\n}\n\n/**\n * Redux state interface for the table components\n */\ninterface RootState {\n rowActions: {\n clickedRowAction: {\n method: string;\n bulk_actions_url?: { api: string };\n action: { api: string };\n isBulk?: boolean;\n };\n rowActionPostLoading: boolean;\n };\n tableCore: {\n appliedFilters: any;\n };\n bulkActions: {\n bulkActionsPostHandler: any;\n selectedBulkAction: {\n method: string;\n action: { api: string };\n };\n bulkActionPostLoading: boolean;\n };\n tableColumns: {\n selectedIds: string[];\n };\n}\n\n/**\n * Component for displaying detailed row data in a modal\n *\n * Features:\n * - Displays data in either table or grid format based on structure\n * - Handles array and object data types\n * - Supports copy-to-clipboard functionality\n * - Responsive layout with different column spans\n *\n * @param data - The row data to display\n */\nexport function ViewRowData({ data }: ViewRowDataProps) {\n const modalData = useMemo(() => {\n return data?.data;\n }, [data]) as any;\n\n return (\n <div className=\"grid grid-cols-1 xl:grid-cols-12 items-stretch gap-1 pt-7\">\n {modalData && modalData?.barcode && (\n <div className=\"xl:col-span-12 flex flex-col items-center justify-center p-4\">\n <h6 className=\"mb-2 font-[400] text-md\">{modalData.barcode?.label || \"Barcode\"}</h6>\n {modalData.barcode && (\n <img\n src={`data:image/png;base64,${modalData.barcode}`}\n alt=\"Barcode\"\n className=\"max-w-full h-auto mb-2 border rounded bg-white\"\n style={{ maxHeight: \"50vh\" }}\n />\n )}\n {modalData.barcode && (\n <Button variant=\"outline\" onClick={() => copyToClipboard(String(modalData.barcodeValue))} className=\"mt-2\">\n <IoCopy size={17} />\n Copy Barcode\n </Button>\n )}\n </div>\n )}\n {modalData && Array.isArray(modalData) && (\n <div className=\"xl:col-span-12\">\n <Table className=\"border\">\n <TableHeader className=\"bg-muted\">\n <TableRow>\n {Object.keys(modalData?.at(0) ?? {}).map((key: any, idx: number) => (\n <TableHead className=\"px-3\" key={idx}>\n {modalData?.at(0)?.[key]?.label}\n </TableHead>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {modalData?.map((item, index) => (\n <TableRow key={index} className={Object.keys(item)?.length > 2 ? (index % 2 === 0 ? \"\" : \"bg-muted/50\") : \"\"}>\n {Object.keys(item)?.map((key: any, idx: number) => (\n <TableCell className=\"font-medium px-3\">\n <p>{item[key]?.value}</p>\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n\n {modalData &&\n !modalData?.barcode &&\n !Array.isArray(modalData) &&\n Object.keys(modalData)?.map((key, index) => (\n <div key={index} className=\"2xl:col-span-4 xl:col-span-6\">\n <div className=\"bg-neutral-100 dark:bg-neutral-800 h-full p-3 rounded-md\">\n <h6 className=\"mb-0 font-[400] text-[13px]\">{modalData[key]?.label}</h6>\n {modalData[key]?.type === \"copy_value\" ? (\n modalData[key]?.value && modalData[key]?.value !== \"#!\" && modalData[key]?.value !== \"!#\" ? (\n <Button variant=\"outline\" onClick={() => copyToClipboard(String(modalData[key]?.value))}>\n <IoCopy size={17} />\n Copy Link\n </Button>\n ) : (\n <p className=\"mb-0 text-muted-foreground text-wrap\">No share Link</p>\n )\n ) : Array.isArray(modalData[key]?.value) ? (\n <ul className=\"mb-0 mt-3 pe-4 text-[13px]\">\n {modalData[key]?.value?.map((item: string, index: number) => (\n <li key={index}>{item}</li>\n ))}\n </ul>\n ) : (\n (typeof modalData[key]?.value === \"string\" || typeof modalData[key]?.value === \"number\") && (\n <p className=\"text-muted-foreground text-wrap mb-0 text-[14px] mt-2\">{modalData[key]?.value || \"----\"}</p>\n )\n )}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\n/**\n * Modal component for confirming row/bulk actions\n *\n * Features:\n * - Handles both single row and bulk actions\n * - Shows loading state during action execution\n * - Provides confirm/dismiss options\n * - Integrates with Redux state management\n *\n * @param closeModal - Function to close the modal\n * @param confirmationFor - Type of action requiring confirmation\n */\nexport function ConfirmationModal({ closeModal, confirmationFor }: ConfirmationModalProps) {\n const t = useTranslations(\"ApiTables\");\n const { clickedRowAction, rowActionPostLoading } = useSelector((state: RootState) => state.rowActions);\n const { appliedFilters } = useSelector((state: RootState) => state.tableCore);\n const { bulkActionsPostHandler, selectedBulkAction, bulkActionPostLoading } = useSelector((state: RootState) => state.bulkActions);\n const { selectedIds } = useSelector((state: RootState) => state.tableColumns);\n const { rowActionsPostHandler } = useUtilsProvider();\n\n function fireRowAction() {\n if (confirmationFor === \"rowAction\")\n rowActionsPostHandler(\n clickedRowAction?.method,\n clickedRowAction?.isBulk ? clickedRowAction?.bulk_actions_url?.api ?? \"\" : clickedRowAction?.action?.api?.replace(/^\\/api/, \"\") ?? \"\",\n { selected_ids: selectedIds },\n clickedRowAction\n );\n if (confirmationFor === \"bulkAction\") {\n bulkActionsPostHandler(\n selectedBulkAction?.method,\n selectedBulkAction?.action.api,\n { filters: appliedFilters, selected_ids: selectedIds },\n null,\n selectedBulkAction\n );\n }\n }\n\n return (\n <div className=\"text-center\">\n <h4 className=\"mb-1 font-bold text-2xl\">{t(\"confirmActionTitle\")}</h4>\n <p className=\"h6 mb-4 text-sm pb-6\">{t(\"confirmActionMessage\")}</p>\n <div className=\"grid grid-cols-2 ms-auto max-w-[200px] gap-2\">\n <div className=\"col\">\n <LoadingButton\n variant=\"default\"\n className=\"w-full h-9!\"\n onClick={fireRowAction}\n disabled={rowActionPostLoading || bulkActionPostLoading}\n isLoading={rowActionPostLoading || bulkActionPostLoading}\n >\n {t(\"confirm\")}\n </LoadingButton>\n </div>\n <div className=\"col\">\n <Button variant=\"outline\" className=\"w-full\" onClick={closeModal}>\n {t(\"dismiss\")}\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport Popup from '@/components/Popup';\nimport { useApiTablesConfig } from '../config/context';\nimport { DatalistModal, DatalistObjModal, HTMLParsedModal } from './ColumnsStaticModals';\nimport { ConfirmationModal, ViewRowData } from './RowActionsModals';\nimport { _getClickedRowAction, _getClickedRowActionResponse, _getCustomControlRequest } from '../table-providers/slices/rowActionsSlice';\nimport { _getSelectedBulkAction } from '../table-providers/slices/bulkActionsSlice';\nimport { _setRowSelectedModal } from '../table-providers/slices/tableColumnsSlice';\n\ninterface ApiTablesModalsState {\n bulkActions?: { selectedBulkAction?: Record<string, unknown> };\n tableColumns?: { rowSelectedModal?: Record<string, unknown> };\n rowActions?: {\n clickedRowAction?: Record<string, unknown>;\n clickedRowActionResponse?: Record<string, unknown>;\n customControlAction?: Record<string, unknown> & {\n url?: { api?: string; web?: string };\n };\n };\n}\n\nfunction matchUrl(\n customControlAction: ApiTablesModalsState['rowActions']['customControlAction'],\n match: string | RegExp,\n) {\n const api = customControlAction?.url?.api ?? '';\n const web = customControlAction?.url?.web ?? '';\n const haystack = `${api} ${web}`;\n return typeof match === 'string' ? haystack.includes(match) : match.test(haystack);\n}\n\nfunction ApiTablesModals() {\n const { selectedBulkAction } = useSelector((state: ApiTablesModalsState) => state?.bulkActions ?? {});\n const { rowSelectedModal } = useSelector((state: ApiTablesModalsState) => state?.tableColumns ?? {});\n const { clickedRowAction, clickedRowActionResponse, customControlAction } = useSelector(\n (state: ApiTablesModalsState) => state?.rowActions ?? {},\n );\n const { customControls = [], bulkActionModals = [], rowActionModals = [] } = useApiTablesConfig();\n const dispatch = useDispatch();\n\n function handleCloseModal() {\n dispatch(_getClickedRowActionResponse(null));\n dispatch(_getSelectedBulkAction(null));\n dispatch(_getClickedRowAction(null));\n dispatch(_getCustomControlRequest(null));\n }\n\n function handleCloseStaticModals() {\n dispatch(_setRowSelectedModal(null));\n }\n\n const bulkActionKey = (selectedBulkAction as { action_key?: string })?.action_key;\n const bulkModal = bulkActionModals.find((entry) => entry.actionKey === bulkActionKey);\n const isCustomBulkModal = !!bulkModal;\n const showConfirmation =\n !!(clickedRowAction as { need_confirmation?: boolean })?.need_confirmation ||\n (!!(selectedBulkAction as { need_confirmation?: boolean })?.need_confirmation && !isCustomBulkModal);\n\n return (\n <>\n <Popup\n status={clickedRowActionResponse}\n closeModal={handleCloseModal}\n isVisible={!!clickedRowActionResponse}\n >\n {(clickedRowAction as { onSuccess?: string })?.onSuccess === 'DisplayOnModal' && (\n <ViewRowData data={clickedRowActionResponse as Record<string, unknown>} />\n )}\n {rowActionModals.map(({ match, component: RowModal }) => {\n const response = clickedRowActionResponse as Record<string, unknown> | undefined;\n const api = String(\n (clickedRowAction as { action?: { api?: string } })?.action?.api ??\n (response as { url?: { api?: string } })?.url?.api ??\n '',\n );\n const matched = typeof match === 'string' ? api.includes(match) : match.test(api);\n return matched && response ? <RowModal key={String(match)} data={response} /> : null;\n })}\n </Popup>\n\n <Popup\n status={showConfirmation}\n closeModal={handleCloseModal}\n containerClass=\"max-w-xl\"\n isVisible={showConfirmation}\n >\n <ConfirmationModal\n closeModal={handleCloseModal}\n confirmationFor={clickedRowAction ? 'rowAction' : selectedBulkAction ? 'bulkAction' : 'rowAction'}\n />\n </Popup>\n\n {bulkModal && (\n <Popup\n status={bulkActionKey}\n closeModal={handleCloseModal}\n isVisible={!!selectedBulkAction}\n >\n <bulkModal.component closeModal={handleCloseModal} action={selectedBulkAction} />\n </Popup>\n )}\n\n <Popup\n status={rowSelectedModal}\n containerClass=\"max-w-lg\"\n closeModal={handleCloseStaticModals}\n isVisible={!!rowSelectedModal}\n >\n {Array.isArray((rowSelectedModal as { value?: { value?: unknown } })?.value?.value) ? (\n <DatalistModal closeModal={handleCloseStaticModals} />\n ) : (rowSelectedModal as { value?: { value?: unknown } })?.value?.value &&\n Array.isArray(Object.keys((rowSelectedModal as { value: { value: object } }).value.value)) ? (\n <DatalistObjModal closeModal={handleCloseStaticModals} />\n ) : (\n <HTMLParsedModal />\n )}\n </Popup>\n\n <Popup\n status={customControlAction}\n closeModal={handleCloseModal}\n containerClass=\"lg:min-w-4xl\"\n isVisible={!!customControlAction}\n >\n {customControls.map(({ match, component: Control }) =>\n matchUrl(customControlAction, match) ? (\n <Control\n key={String(match)}\n action={customControlAction as Record<string, unknown>}\n closeModal={handleCloseModal}\n />\n ) : null,\n )}\n </Popup>\n </>\n );\n}\n\nexport default ApiTablesModals;\n","\"use client\";\n\nimport React, { useEffect, useMemo } from \"react\";\nimport { downloadURL } from \"../table-utils/utils\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport useUtilsProvider from \"../table-providers/useUtilsProvider\";\nimport { _bulkActionPostResponse, _getSelectedBulkAction } from \"../table-providers/slices/bulkActionsSlice\";\nimport { FiChevronDown } from \"react-icons/fi\";\nimport { PiGearFill } from \"react-icons/pi\";\nimport { useTranslations } from \"next-intl\";\n\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"@/components/ui/dropdown-menu\";\nimport { Button } from \"@/components/ui/button\";\n\ninterface Action {\n action_key: string;\n label: string;\n method: string;\n action: {\n api: string;\n };\n payload_keys?: string[];\n need_confirmation?: boolean;\n}\n\ninterface RootState {\n tableColumns: {\n selectedIds: string[];\n };\n bulkActions: {\n bulkActions: Action[];\n bulkActionPostResponse: {\n success: boolean;\n type: string;\n data: {\n url: string;\n };\n file_name: string;\n onSuccess: string;\n } | null;\n };\n tableCore: {\n tableData: any[];\n tableFetchingLoading: boolean;\n appliedFilters: any;\n triggerTableReload: () => void;\n };\n}\n\nfunction TableBulkActions() {\n const { selectedIds } = useSelector((state: RootState) => state.tableColumns);\n const { bulkActions, bulkActionPostResponse } = useSelector((state: RootState) => state.bulkActions);\n const { tableData, tableFetchingLoading, appliedFilters, triggerTableReload } = useSelector((state: RootState) => state.tableCore);\n const { bulkActionsPostHandler } = useUtilsProvider();\n const dispatch = useDispatch();\n const tApiTables = useTranslations(\"ApiTables\");\n\n // ... 🐼 Disable Bulk Actions Indicator\n const disableBulkActions = useMemo(() => {\n return !tableData || tableData?.length === 0 || tableFetchingLoading;\n }, [tableData, tableFetchingLoading]);\n\n // ... 🐼 Check if the bulk action needs a custom modal (store_with_drawal_bulk)\n const requireModal = (action: Action) => action?.action_key === \"store_with_drawal_bulk\" || action?.action_key === \"create_withdrawal_bulk\";\n\n // ... 🐼 Handle bulk action response\n useEffect(() => {\n if (bulkActionPostResponse?.success && bulkActionPostResponse?.type === \"stream\") {\n downloadURL(bulkActionPostResponse?.data?.url, bulkActionPostResponse?.file_name);\n }\n if (bulkActionPostResponse?.success && bulkActionPostResponse?.onSuccess === \"refetchData\") {\n triggerTableReload();\n }\n if (bulkActionPostResponse?.success && bulkActionPostResponse?.onSuccess === \"reload\") {\n triggerTableReload();\n }\n dispatch(_bulkActionPostResponse(null));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [bulkActionPostResponse]);\n\n // ... 🐼 Bulk Action API Post Handler\n function fireBulkAction(action: Action) {\n if (requireModal(action)) {\n dispatch(_getSelectedBulkAction(action));\n } else {\n bulkActionsPostHandler(\n action?.method,\n action?.action.api?.replace(\"/api\", \"\"),\n { filters: appliedFilters, selected_ids: selectedIds, ...(action?.payload_keys && { ...action?.payload_keys }) },\n {\n msg: action?.action_key === \"export-excel-blob\" ? tApiTables(\"exporting_excel\") : tApiTables(\"processing_data\"),\n icon: \"excel\",\n },\n action\n );\n }\n }\n\n return (\n <>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button className=\"w-full sm:w-auto\" variant=\"outline\">\n <PiGearFill />\n {tApiTables(\"bulk_actions\")}\n <FiChevronDown className=\"ms-auto\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"min-w-[var(--radix-dropdown-menu-trigger-width)]\">\n {bulkActions?.map((action: Action, index: number) => {\n return (\n <DropdownMenuItem disabled={disableBulkActions} asChild key={index}>\n <Button variant=\"ghost\" className=\"w-full text-[14px] cursor-pointer\" onClick={() => fireBulkAction(action)}>\n {action?.label}\n </Button>\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n </>\n );\n}\n\nexport default TableBulkActions;\n","\"use client\";\nimport { Button } from \"@/components/ui/button\";\nimport { MdFilterListAlt } from \"react-icons/md\";\n\nimport { useTranslations } from \"next-intl\";\n\nexport default function FilterTrigger({ showFilters, setShowFilters }: { showFilters: boolean; setShowFilters: (showFilters: boolean) => void }) {\n const tApiTables = useTranslations(\"ApiTables\");\n return (\n <>\n <Button variant=\"outline\" onClick={() => setShowFilters(!showFilters)}>\n <MdFilterListAlt />\n {tApiTables(\"show_filters\")}\n </Button>\n </>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport TableFilters from \"./core/TableFilters\";\nimport TableBody from \"./core/TableBody\";\nimport TablePagination from \"./core/TablePagination\";\nimport TableSorting from \"./core/TableSorting\";\nimport TablePageSize from \"./core/TablePageSize\";\nimport ColumnsVisibility from \"./core/ColumnsVisibility\";\nimport ActionsOfSelections from \"./core/ActionsOfSelection\";\nimport ApiTablesModals from \"./table-modals/ApiTablesModals\";\nimport { useSelector } from \"react-redux\";\nimport TableBulkActions from \"./core/TableBulkActions\";\nimport FilterTrigger from \"./core/FilterTrigger\";\n\n/**\n * ApiTablesComponent is a comprehensive data table component that provides advanced functionality\n * for displaying and managing tabular data.\n *\n * Features:\n * - Filtering: Allows users to filter table data using customizable filter conditions\n * - Sorting: Enables column-based sorting of table data\n * - Bulk Actions: Supports performing actions on multiple selected rows\n * - Column Visibility: Users can show/hide specific columns\n * - Pagination: Breaks down large datasets into manageable pages\n * - Page Size Control: Allows users to adjust number of rows per page\n * - Custom Elements: Supports injection of custom UI elements\n *\n * @component\n * @param {Object} props - Component props\n * @param {React.ReactNode} props.customElement - Optional custom element to render above the table\n *\n * @example\n * ```jsx\n * <ApiTablesComponent customElement={<CustomHeader />} />\n * ```\n */\nfunction ApiTablesComponent({ customElement }: any) {\n // Redux selectors for accessing global state\n const { bulkActions } = useSelector((state: any) => state?.bulkActions);\n const { structureFilters } = useSelector((state: any) => state?.tableCore);\n const { selectedRows } = useSelector((state: any) => state?.tableColumns);\n\n // Local state for managing filters visibility\n const [showFilters, setShowFilters] = useState(false);\n\n return (\n <>\n {/* Render filters panel if filters are configured */}\n {structureFilters && structureFilters?.length > 0 && <TableFilters showFilters={showFilters} setShowFilters={setShowFilters} />}\n\n {/* Table sorting controls */}\n <TableSorting />\n\n <div className=\"flex mb-4 items-end justify-center lg:justify-between pt-5\">\n <ul className=\"flex w-full flex-col sm:flex-row sm:justify-between items-center gap-3\">\n <div className=\"w-full grid grid-cols-1 sm:grid-cols-3 gap-2 sm:w-auto\">\n {/* Render bulk actions if available */}\n {bulkActions?.length > 0 && <TableBulkActions />}\n <ColumnsVisibility />\n {structureFilters?.length > 0 && <FilterTrigger showFilters={showFilters} setShowFilters={setShowFilters} />}\n </div>\n\n {/* Page size selector */}\n <li className=\"w-full sm:w-fit\">\n <TablePageSize />\n </li>\n </ul>\n </div>\n\n {/* Render custom element if provided (only when it's a React node, not a string identifier) */}\n {React.isValidElement(customElement) && <div className=\"py-2\"> {customElement} </div>}\n\n {/* Show selected rows count */}\n {selectedRows.length > 0 && (\n <div className=\"text-center text-sm text-muted mb-1\">\n <strong className=\"fw-bold mx-1\">{selectedRows?.length}</strong>\n </div>\n )}\n\n {/* Actions for selected rows */}\n <ActionsOfSelections />\n\n {/* Main table content */}\n <TableBody />\n\n {/* Pagination controls */}\n <TablePagination />\n\n {/* Modal dialogs for table operations */}\n <ApiTablesModals />\n </>\n );\n}\n\nexport default ApiTablesComponent;\n","'use client';\n\nimport axios from 'axios';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useApiTablesConfig } from '../config/context';\nimport { handleNetworkErrors } from '../table-utils/errorHandling';\nimport { calculateMinWidth, rowWithLongestField } from '../table-utils/utils';\nimport {\n _getTableBindings,\n _getTableData,\n _getTablePagination,\n _setTableLoading,\n} from '../table-providers/slices/tableCoreSlice';\nimport {\n _setSelectedRows,\n _setTableColumns,\n _setToggledClearRow,\n} from '../table-providers/slices/tableColumnsSlice';\n\ninterface TableColumn {\n data_src: string;\n name: string;\n type: string;\n style?: { width: string };\n}\n\ninterface TableState {\n tableColumns: {\n tableColumns: TableColumn[];\n toggledClearRows: boolean;\n };\n}\n\ninterface TableFetcherParams {\n tableName: string;\n signal: AbortSignal;\n pageSize: number;\n currentPage: number;\n appliedFilters: Record<string, unknown>;\n tableSorting: Record<string, unknown>;\n params?: Record<string, unknown>;\n tbData: unknown[];\n}\n\nconst useTableFetcher = () => {\n const dispatch = useDispatch();\n const { axiosTable } = useApiTablesConfig();\n const { tableColumns, toggledClearRows } = useSelector((state: TableState) => state.tableColumns);\n\n async function tableFetchingHandler({\n tableName,\n signal,\n pageSize,\n currentPage,\n appliedFilters,\n tableSorting,\n params,\n tbData,\n }: TableFetcherParams) {\n dispatch(_setSelectedRows([]));\n dispatch(_setTableLoading(true));\n dispatch(_getTableData([]));\n dispatch(_setToggledClearRow(!toggledClearRows));\n try {\n const response = await axiosTable({\n method: 'POST',\n url: `/api-table/control-tables/query-table/${tableName}`,\n data: {\n perPage: pageSize,\n page: currentPage,\n filters: appliedFilters,\n sorts: tableSorting,\n ...(params ? { params } : {}),\n },\n signal,\n });\n if (tableColumns) {\n dispatch(\n _setTableColumns({\n update: true,\n cols: tableColumns?.map((col: TableColumn) => ({\n ...col,\n style: {\n width: calculateMinWidth(\n rowWithLongestField(response?.data?.items, col?.data_src),\n col?.name,\n col?.type,\n ),\n },\n })),\n tbData,\n }),\n );\n }\n dispatch(_getTableData(response?.data?.items));\n dispatch(_getTablePagination(response?.data?.pagination));\n dispatch(_getTableBindings(response?.data?.bindings));\n dispatch(_setTableLoading(false));\n } catch (err) {\n handleNetworkErrors(err as Record<string, unknown>);\n if (axios.isCancel(err)) {\n dispatch(_setTableLoading(true));\n } else {\n dispatch(_setTableLoading(false));\n }\n }\n }\n\n return { tableFetchingHandler };\n};\n\nexport default useTableFetcher;\n","import { configureStore } from '@reduxjs/toolkit';\nimport tableCoreSlice from './slices/tableCoreSlice';\nimport bulkActionsSlice from './slices/bulkActionsSlice';\nimport rowActionsSlice from './slices/rowActionsSlice';\nimport tableColumnsSlice from './slices/tableColumnsSlice';\n\nexport const createTableStore = () => {\n return configureStore({\n reducer: {\n tableCore: tableCoreSlice,\n bulkActions: bulkActionsSlice,\n rowActions: rowActionsSlice,\n tableColumns: tableColumnsSlice,\n },\n devTools: true,\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware({\n serializableCheck: false,\n }),\n });\n};\n\nexport type TableStore = ReturnType<typeof createTableStore>;\nexport type TableRootState = ReturnType<TableStore['getState']>;\n\nlet externalStoreGetter: (() => { getState: () => unknown }) | null = null;\n\n/** Called once from host setup — replaces direct @/store/store import */\nexport function setExternalStoreGetter(getter: () => { getState: () => unknown }) {\n externalStoreGetter = getter;\n}\n\nexport const getExternalState = () => {\n if (!externalStoreGetter) {\n return {};\n }\n return externalStoreGetter().getState();\n};\n","'use client';\n\nimport React, { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport ApiTablesComponent from './ApiTablesComponent';\nimport useTableFetcher from './hooks/useTableFetcher';\nimport { useApiTablesConfig } from './config/context';\nimport { getHostStorage } from './host/storage';\nimport { getExternalState } from './table-providers/store';\nimport {\n _changePageSize,\n _getTableComponents,\n _resetTableCore,\n} from './table-providers/slices/tableCoreSlice';\nimport { _getStructureBulkActions, _resetTableBulkActions } from './table-providers/slices/bulkActionsSlice';\nimport {\n _checkActionsInRegularCells,\n _getStructureRowActions,\n _resetTableRowActions,\n} from './table-providers/slices/rowActionsSlice';\nimport { _resetTableColumns } from './table-providers/slices/tableColumnsSlice';\n\nconst API_TABLES_PAGE_SIZE_KEY = 'api_tables_page_size';\nconst DEFAULT_PAGE_SIZE = 25;\nconst VALID_PAGE_SIZES = [10, 25, 50, 100];\n\nfunction flattenMultiCellsActions(rowActions: Record<string, unknown> | null | undefined) {\n if (rowActions && Object.keys(rowActions)?.filter((key) => key === 'general_actions')?.length > 0) {\n return Object.values(rowActions)\n ?.map((object) => Object.values(object as Record<string, unknown>))\n ?.reduce((acc: unknown[], val: unknown) => acc?.concat(val as unknown[]), []);\n }\n return rowActions;\n}\n\nfunction checkActionsInRegularCells(rowActions: Record<string, unknown> | null | undefined) {\n return rowActions && Object.keys(rowActions)?.filter((key) => key === 'general_actions')?.length > 0;\n}\n\nfunction ApiTablesController({\n table,\n params,\n customElement,\n}: {\n table: Record<string, unknown>;\n params?: Record<string, unknown>;\n customElement?: React.ReactNode;\n}) {\n const dispatch = useDispatch();\n const { get: getStored } = getHostStorage();\n getExternalState();\n const { usePathname } = useApiTablesConfig();\n const pathname = usePathname?.() ?? '';\n const { appliedFilters, currentPage, tableSorting, pageSize, tableName, tableData, tableRefresher } =\n useSelector((state: { tableCore: Record<string, unknown> }) => state?.tableCore);\n const { tableFetchingHandler } = useTableFetcher();\n\n useEffect(() => {\n dispatch(\n _getTableComponents({\n ...table,\n ...(typeof customElement === 'string' && { customElement }),\n }),\n );\n dispatch(_getStructureBulkActions(table?.bulkActions));\n dispatch(_getStructureRowActions(flattenMultiCellsActions(table?.rowActions as Record<string, unknown>)));\n\n if (checkActionsInRegularCells(table?.rowActions as Record<string, unknown>)) {\n dispatch(_checkActionsInRegularCells(true));\n }\n\n return () => {\n dispatch(_resetTableBulkActions());\n dispatch(_resetTableColumns());\n dispatch(_resetTableCore());\n dispatch(_resetTableRowActions());\n };\n }, [table, customElement, dispatch]);\n\n useEffect(() => {\n const stored = getStored(API_TABLES_PAGE_SIZE_KEY);\n const parsed = stored != null ? Number(stored) : NaN;\n const size = VALID_PAGE_SIZES.includes(parsed) ? parsed : DEFAULT_PAGE_SIZE;\n dispatch(_changePageSize(size));\n }, [dispatch, getStored]);\n\n useEffect(() => {\n const controller = new AbortController();\n if (tableName) {\n tableFetchingHandler({\n tableName: tableName as string,\n currentPage: currentPage as number,\n pageSize: pageSize as number,\n appliedFilters: appliedFilters as Record<string, unknown>,\n tableSorting: tableSorting as Record<string, unknown>,\n signal: controller.signal,\n params,\n tbData: tableData as unknown[],\n });\n }\n return () => controller.abort();\n }, [tableName, currentPage, pageSize, appliedFilters, tableSorting, tableRefresher, pathname, params, tableData, tableFetchingHandler]);\n\n return <ApiTablesComponent customElement={customElement} />;\n}\n\nexport default ApiTablesController;\n","'use client';\n\nimport React, { useMemo } from 'react';\nimport { Provider } from 'react-redux';\nimport { useApiTablesConfig } from './config/context';\nimport { createTableStore } from './table-providers/store';\n\nexport default function ApiTablesProvider({ children }: { children: React.ReactNode }) {\n const { useOutScopeRefresher } = useApiTablesConfig();\n const refresher = useOutScopeRefresher?.() ?? 0;\n const tableStore = useMemo(() => createTableStore(), []);\n\n return (\n <div key={String(refresher)}>\n <Provider store={tableStore}>{children}</Provider>\n </div>\n );\n}\n","import React from 'react';\nimport ApiTablesController from './ApiTablesController';\nimport ApiTablesProvider from './ApiTablesProvider';\nimport { useApiTablesConfig } from './config/context';\n\ntype ReactApiTableProps = {\n table: unknown;\n controller?: React.ReactNode;\n children?: React.ReactNode;\n params?: Record<string, unknown>;\n tableStructureLoading?: boolean;\n customElement?: React.ReactNode;\n};\n\nfunction ReactApiTable({\n table,\n controller,\n children,\n params,\n tableStructureLoading,\n customElement,\n}: ReactApiTableProps) {\n const { components } = useApiTablesConfig();\n const Card = components.Card;\n const FullPageTableLoader = components.FullPageTableLoader;\n\n if (!Card || !FullPageTableLoader) {\n throw new Error(\n 'ApiTablesConfig.components.Card and FullPageTableLoader are required',\n );\n }\n\n return (\n <ApiTablesProvider>\n {children}\n {tableStructureLoading ? (\n <Card className=\"p-5 dark:bg-none\">\n <FullPageTableLoader count={20} />\n </Card>\n ) : (\n controller || (\n <ApiTablesController\n table={table as Record<string, unknown>}\n params={params}\n customElement={customElement ?? null}\n />\n )\n )}\n </ApiTablesProvider>\n );\n}\n\nexport default ReactApiTable;\n","'use client';\n\nimport { useCallback, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useApiTablesConfig } from '../config/context';\nimport { _getTableData } from '../table-providers/slices/tableCoreSlice';\n\ninterface TableStructureParams {\n table: string;\n params?: Record<string, unknown>;\n}\n\ninterface TableStructureResponse {\n data: unknown;\n}\n\nexport default function useTableStructure() {\n const [tableStructure, setTableStructure] = useState<unknown>(null);\n const [tableStructureLoading, setTableStructureLoading] = useState(true);\n const { axiosTable, useLocale } = useApiTablesConfig();\n const locale = useLocale?.();\n const dispatch = useDispatch();\n\n const getTableStructure = useCallback(\n async ({ table }: TableStructureParams) => {\n setTableStructureLoading(true);\n dispatch(_getTableData([]));\n try {\n const response = await axiosTable.get<TableStructureResponse>(table, {\n headers: {\n ...(locale && { ln: locale }),\n },\n });\n setTableStructure(response?.data);\n } catch (err) {\n console.log(err);\n } finally {\n setTableStructureLoading(false);\n }\n },\n [axiosTable, dispatch, locale],\n );\n\n return { getTableStructure, tableStructure, tableStructureLoading };\n}\n"]}
|