UNPKG

rez-table-listing-mui

Version:

A rez table listing component built on TanStack Table

683 lines (668 loc) 22.6 kB
import * as react_jsx_runtime from 'react/jsx-runtime'; import { SortingState, PaginationState, RowSelectionState, ExpandedState, ColumnPinningState, ColumnDef, Row, Table, ColumnOrderState, Header } from '@tanstack/react-table'; import React$1, { Dispatch, SetStateAction } from 'react'; import { ButtonProps } from '@mui/material'; interface onFilterChangeFunctionProps { updatedFilters?: any; filterMaster?: any; filters?: any; } interface OperationProps { label: string; value: string; } type OperationMapProps = { [key in FilterInputDataTypes]?: OperationProps[]; }; interface FilterOperationListProps { code: string; label: string; value: string; is_shared: boolean; is_editable: boolean; is_owner: boolean; created_by: string; description: string | null; } interface FilterSharedListProps { created_date: string; entity_type: string; id: string; name: string; status: string; parent_type: string | null; parent_id: string | number | null; code: string; created_by: string; modified_by: string | null; modified_date: string | null; enterprise_id: number; organization_id: number; appcode: string | null; level_id: string; level_type: string; mapped_entity_type: string; user_id: number; is_default: boolean; filter_scope: string; is_shared: boolean; is_editable: boolean | string; description: string | null; } type FilterInputDataTypes = "text" | "select" | "multiselect" | "date" | "year" | "number" | "label"; interface FilterColumnsListProps { created_date: string | null; entity_type: string; id: string; name: string; status: string | null; parent_type: string; parent_id: string; code: string | null; created_by: string | null; modified_by: string | null; modified_date: string | null; enterprise_id: string | null; organization_id: string | null; app_code: string | null; mapped_entity_type: string; menu_code: string | null; table_name: string | null; col_position: number; sortable: string | null; searchable: string | null; attribute_key: string; sort_type: string | null; element_type: FilterInputDataTypes; data_source_type: string | null; datasource_list: any | null; visible: string; } interface FilterColumnsDataProps { column_list: FilterColumnsListProps[]; operation_list: OperationMapProps; saved_filter: FilterOperationListProps[]; shared_filter: FilterOperationListProps[]; } interface FilterDropdownDataProps { [key: string]: FilterOperationListProps[]; } interface FilterComponentOptionsMainFilterOptions { showSaveButton?: boolean; showClearAllButton?: boolean; customButtons?: Array<{ label: string; onClick: () => void; } & Partial<ButtonProps>>; } interface FilterComponentOptionsSavedFilterOptions { showBackButton?: boolean; editMode?: boolean; } type ButtonConfig = { primary: string; secondary: string; }; type ModalConfig = { title?: string; description?: string; button?: ButtonConfig; isInputField?: boolean; }; type RecordFilterComponentProps = { save: ModalConfig; edit: ModalConfig; delete: ModalConfig; }; type TabType = "main" | "saved" | "attributes"; interface FilterComponentTabOptions { mainFilter?: FilterComponentOptionsMainFilterOptions; savedFilter?: FilterComponentOptionsSavedFilterOptions; isSingleFilter?: boolean; isSingleEntity?: boolean; showFilter?: TabType; disableShareFilter?: boolean; } type FilterComponentOptions = { showTabs?: true; showMainHeader?: boolean; mainHeaderTitle?: string; showMainFilter?: boolean; showSavedFilter?: boolean; showAttributesFilter?: boolean; isRuleEngine?: boolean; tabOptions?: FilterComponentTabOptions; recordFilterComponentProps?: RecordFilterComponentProps; } | { showTabs?: false; showMainHeader?: boolean; mainHeaderTitle?: string; isRuleEngine?: boolean; tabOptions?: FilterComponentTabOptions; recordFilterComponentProps?: RecordFilterComponentProps; }; interface FilterDrawerProps { tableStates: CraftTableOptionsProps; open?: boolean; onClose?: () => void; onDeleteFilter?: () => void; onSaveFilter?: (name: string) => void; onUpdateFilter?: (name: string) => void; columnsData: FilterColumnsDataProps; dropdownData: FilterDropdownDataProps; defaultFilters?: Array<{ filter_attribute: string; filter_operator: string; filter_value: string; }>; savedFilters?: Array<{ label: string; value: string; }>; tableData?: { entity_list: any[]; }; onChangeFunction: ({ updatedFilters, filterMaster, }: onFilterChangeFunctionProps) => void; filterComponentOptions?: FilterComponentOptions; isFlatJson: boolean; } interface FilterCriteria { columnId: string; value: string | string[]; type: FilterInputDataTypes | undefined; operator?: string | null; dropdown?: { label?: string; value?: string; }; optionList?: { label?: string | undefined; value?: string | undefined; }; attribute_key?: string | undefined; name: string | undefined; } interface FilterStateProps { filter_attribute: string; filter_operator: string; filter_value: string | string[]; filter_attribute_name: string | undefined; filter_attribute_data_type: FilterInputDataTypes | undefined; attribute_key?: string; dropdown_list?: { label?: string; value?: string; }[]; optionList?: { label?: string | undefined; value?: string | undefined; }; filter_entity_type?: string; filter_entity_name?: string; datasource_list?: string | null; } interface OperationOption { label: string; value: string; } interface OperationList { text: OperationOption[]; number: OperationOption[]; date: OperationOption[]; select: OperationOption[]; multiselect: OperationOption[]; year: OperationOption[]; } interface createSavedFilterPayload { name: string; organization_id?: number; enterprise_id?: number; user_id?: number; is_default: boolean; description: string | null; mapped_entity_type: string; status?: string; entity_type: string; filterDetails: FilterStateProps[]; } interface deleteSavedFilterPayload { name: string; is_default: boolean; id: string | number; status?: string; entity_type: string; mapped_entity_type: string; } interface updateSavedFilterPayload { name: string; is_default: boolean; id: string | number; status?: string; entity_type: string; mapped_entity_type: string; filterDetails: FilterStateProps[]; } interface FilterFormComponentProps { columnsData: FilterColumnsDataProps; saved_filter?: any; shared_filter?: any; dropdownData: FilterDropdownDataProps; tableStates: CraftTableOptionsProps; editMode?: boolean; setEditMode?: React.Dispatch<React.SetStateAction<boolean>>; setDeleteFilterModalOpen?: React.Dispatch<React.SetStateAction<boolean>>; onSaveFilterButtonClick?: () => void; tabValue?: number; onChangeFunction: ({ updatedFilters, filterMaster, }: onFilterChangeFunctionProps) => void; filterComponentOptions?: FilterComponentOptions; isFlatJson: boolean; } interface SavedFilterSharingPreference { shareWithTeam?: boolean; allowTeamEdit?: boolean; } interface FilterMasterStateProps { attributes: { selected: string; radio: string[]; }; saved_filters: { selectedId: string; selectedName: string; selectedCode?: string; description?: string; is_shared?: boolean; is_editable?: boolean; is_owner?: boolean; }; activeFilterTabIndex: number; shared_filters_meta?: Record<string, SavedFilterSharingPreference>; } interface AttributesFilterProps { columnsData: FilterColumnsDataProps; tableStates: CraftTableOptionsProps; dropdownData: FilterDropdownDataProps; searchTerm: string; setSearchTerm: React.Dispatch<React.SetStateAction<string>>; tabValue?: number; onChangeFunction: ({ updatedFilters, filterMaster, }: onFilterChangeFunctionProps) => void; isFlatJson: boolean; } interface AttributesFilterSelectProps { columnsData: FilterColumnsDataProps; tableStates: CraftTableOptionsProps; dropdownData: FilterDropdownDataProps; searchTerm: string; setSearchTerm: React.Dispatch<React.SetStateAction<string>>; tabValue?: number; } interface viewSettingsPayload { column: string; sort_by: string; } interface FilterDataMainFilterEntityListProps { value: string; id: string | number; label: string; } interface FilterDataMainFilterEntityWiseCriteriaProps { id: string; name: string; attribute_key: string; element_type: FilterInputDataTypes; datasource_list: any; element_type: FilterInputDataTypes; } interface FilterDataProps { mainFilter?: { entityList?: { data?: FilterDataMainFilterEntityListProps[]; isPending?: boolean; }; entityWiseCriteria?: { data?: FilterDataMainFilterEntityWiseCriteriaProps[]; isPending?: boolean; }; }; } interface QuickFilterModalProps { view?: string; isFlatJson: boolean; show?: boolean; filterSettingStates: craftTableFilterSettingsOptionsProps; onClose?: () => void; columnsData: FilterColumnsDataProps; columnsDataLoading?: boolean; quickTabAttributes?: any[]; quickTabAttributesLoading?: boolean; columnTabAttributes?: any[]; columnTabAttributesLoading?: boolean; sortingTabAttributes?: any[]; sortingTabAttributesLoading?: boolean; tabsApiData?: { label: string; value: string; }[]; tabsApiDataLoading?: boolean; onSaveSettingsData?: (data: any) => void; activeTab?: string; selectAttributeData?: { label: string; value: string; }[]; selectSwinLandData?: { label: string; value: string; }[]; laneHideListData?: { label: string; value: string; }[]; swimLaneHideListData?: { label: string; value: string; }[]; onSaveKanbanSettingsData?: (data: KanbanSettingsDataProps) => void; } type SortingType = "asc" | "desc"; type QuickTabSortingType = "asc" | "dsc" | "count_asc" | "count_dsc" | "custom"; type KanbanSortingType = "asc" | "dsc" | "count_asc" | "count_dsc" | "custom" | "sort_by" | null; interface QuickTabConfigProps { attribute?: string; sorting?: QuickTabSortingType; hide_list?: { label: string; value: string; }[]; show_list?: { label: string; value: string; }[]; isAllSelected?: boolean; isCombineOther?: boolean; } interface LaneTabConfigProps { attribute?: string; sorting?: KanbanSortingType; hide_list?: { label: string; value: string; }[]; show_list?: { label: string; value: string; }[]; isSubLane?: boolean; } interface SwimLameTabConfigProps { attribute?: string; sorting?: KanbanSortingType; hide_list?: { label: string; value: string; }[]; show_list?: { label: string; value: string; }[]; } interface ColumnItem { label: string; value: string; } interface ColumnTab { tab_name: { label: string; value: string; }; show_list: ColumnItem[]; hide_list: ColumnItem[]; } interface SortingConfigSortByProps { column: string; order: SortingType; } interface SortingConfigTabProps { tab_name: { label: string; value: string; }; sortby: SortingConfigSortByProps[]; } interface SortingConfigProps { isDefault?: boolean; sortby?: SortingConfigSortByProps[]; tabs?: SortingConfigTabProps[]; } interface ColumnTabConfigProps { isDefault?: boolean; show_list?: ColumnItem[]; hide_list?: ColumnItem[]; tabs?: ColumnTab[]; } interface SettingsDataProps { isDefault?: boolean; show_list?: ColumnItem[]; hide_list?: ColumnItem[]; tabs?: ColumnTab[]; quick_tab?: QuickTabConfigProps; column?: ColumnTabConfigProps; sorting?: SortingConfigProps; } interface KanbanSettingsDataProps { lane?: LaneTabConfigProps; swim_lane?: SwimLameTabConfigProps; } interface SavedButtonErrorProps { hasError: boolean; messages: { type: string; message: string; }[]; } interface CraftTableOptionsProps { sorting: SortingState; setSorting: Dispatch<SetStateAction<SortingState>>; pagination: PaginationState; setPagination: Dispatch<SetStateAction<PaginationState>>; rowSelection: RowSelectionState; setRowSelection: Dispatch<SetStateAction<RowSelectionState>>; isCompactTable?: boolean; setIsCompactTable?: Dispatch<SetStateAction<boolean>>; expanded: ExpandedState; setExpanded: Dispatch<SetStateAction<ExpandedState>>; wrapColumns: Record<string, boolean>; setWrapColumns: Dispatch<SetStateAction<Record<string, boolean>>>; filters: FilterStateProps[]; setFilters: Dispatch<SetStateAction<FilterStateProps[]>>; savedFilterEditValue: string | number; setSavedFilterEditValue: Dispatch<SetStateAction<string | number>>; filterToDelete: FilterOperationListProps | null; setFilterToDelete: Dispatch<SetStateAction<FilterOperationListProps | null>>; filterSelectedAttributeValue: string; setFilterSelectedAttributeValue: Dispatch<SetStateAction<string>>; filterMaster: FilterMasterStateProps | null; setFilterMaster: Dispatch<SetStateAction<FilterMasterStateProps | null>>; showTableFilter: boolean; setShowTableFilter: Dispatch<SetStateAction<boolean>>; showFilterOptions: boolean; setShowFilterOption: Dispatch<SetStateAction<boolean>>; columnPinning: ColumnPinningState; setColumnPinning: Dispatch<SetStateAction<ColumnPinningState>>; filterData: FilterDataProps | null; setFilterData: Dispatch<SetStateAction<FilterDataProps | null>>; selectedFilterEntity: FilterDataMainFilterEntityListProps | undefined; setSelectedFilterEntity: Dispatch<SetStateAction<FilterDataMainFilterEntityListProps | undefined>>; } interface craftTableFilterSettingsOptionsProps { settingsData: SettingsDataProps; setSettingsData: Dispatch<SetStateAction<SettingsDataProps>>; kanbanSettingsData: KanbanSettingsDataProps; setKanbanSettingsData: Dispatch<SetStateAction<KanbanSettingsDataProps>>; showListViewSettings: boolean; setShowListViewSettings: Dispatch<SetStateAction<boolean>>; quickTabStates: QuickTabConfigProps; setQuickTabStates: Dispatch<SetStateAction<QuickTabConfigProps>>; columnTabState: ColumnTabConfigProps; setColumnTabState: Dispatch<SetStateAction<ColumnTabConfigProps>>; sortingTabState: SortingConfigProps; setSortingTabState: Dispatch<SetStateAction<SortingConfigProps>>; saveButtonError: SavedButtonErrorProps; setSaveButtonError: Dispatch<SetStateAction<SavedButtonErrorProps>>; } interface CraftTableFeatureProps { enableSorting?: boolean; enableServerSidePagination?: boolean; enableServerSideSorting?: boolean; enableRowSelection?: boolean; enableColumnResizing?: boolean; enableColumnReordering?: boolean; enableColumnPinning?: boolean; enableMultiColumnSorting?: boolean; enableTopbar?: boolean; enableWordBreakAll?: boolean; stickyHeader?: boolean; compactTable?: boolean; striped?: boolean; } interface CraftTablePaginationProps { totalRows?: number; rowsPerPageArray?: number[]; showPagination?: boolean; paginationPosition?: "top" | "bottom"; paginationView?: "full" | "compact"; } interface LoadingOptionsProps { isLoading: boolean; loaderText?: string; loadingComponent?: React$1.ReactNode; } interface TopbarOptionsProps { tableStates: CraftTableOptionsProps; leftSideComponent?: React$1.ReactNode; rightSideComponent?: React$1.ReactNode; showColumnToggle?: boolean; showCompactTableToggle?: boolean; showChangeLayoutToggle?: boolean; viewMoreToggle?: boolean; showSearch?: boolean; showSortingToggle?: boolean; showFilterToggle?: boolean; searchValue?: string; onSearchChange?: (val: string) => void; onFilterButtonClick?: () => void; } interface CustomRenderContext<T> { value: unknown; row: Row<T>; table: Row<T>[]; } type CustomRenderFnMap<T> = { [key: string]: (ctx: CustomRenderContext<T>) => React$1.ReactNode; }; type CustomColumnMeta = { type?: "custom"; propName?: string; [key: string]: any; }; type CustomColumnDef<T> = ColumnDef<T> & { meta?: CustomColumnMeta; }; interface CraftTableStyleProps { wrapperStyle?: React$1.CSSProperties; } interface FilterOptionsProps { onClick?: () => void; show?: boolean; component: React$1.ReactNode; } interface settingsOptionsProps { showIcon?: boolean; onClick?: () => void; } interface CraftTableProps<T> { data: T[]; columns: CustomColumnDef<T>[]; tableStates: CraftTableOptionsProps; filterSettingStates: craftTableFilterSettingsOptionsProps; onSaveSettings?: (columnId: string) => void; paginationOptions?: CraftTablePaginationProps; featureOptions?: CraftTableFeatureProps; nestedComponent?: React$1.ComponentType<{ row: Row<T>; }>; loadingOptions?: LoadingOptionsProps; topbarOptions?: TopbarOptionsProps; customRenderFn?: CustomRenderFnMap<T>; shouldHideColumn?: (accessorKey?: string) => boolean; styleOptions?: CraftTableStyleProps; emptyListComponent?: React$1.ReactNode; filterOptions?: FilterOptionsProps; settingsOptions?: settingsOptionsProps; craftTableFilterSettingsOptions?: craftTableFilterSettingsOptionsProps; activeTab?: any; } interface CraftTableComponentProps<T> { table: Table<T>; activeTab?: string; featureOptions: CraftTableFeatureProps; NestedComponent?: React$1.ComponentType<{ row: Row<T>; }>; columnOrder: ColumnOrderState; setColumnOrder: React$1.Dispatch<React$1.SetStateAction<ColumnOrderState>>; isCompactTable: boolean; tableStates: CraftTableOptionsProps; filterSettingStates: craftTableFilterSettingsOptionsProps; onSaveSettings?: (columnId: string) => void; } interface TableHeaderProps<T> { header: Header<T, unknown>; activeTab?: string; featureOptions: CraftTableFeatureProps; tableStates: CraftTableOptionsProps; filterSettingStates?: craftTableFilterSettingsOptionsProps; onSaveSettings?: (columnId: string) => void; } declare function TableWrapper<T>({ data, columns, tableStates, filterSettingStates, onSaveSettings, paginationOptions, featureOptions, topbarOptions, nestedComponent, loadingOptions, customRenderFn, shouldHideColumn, emptyListComponent, filterOptions, activeTab, }: CraftTableProps<T>): react_jsx_runtime.JSX.Element; declare function useCraftTable(paginationPageSize?: number): CraftTableOptionsProps; declare function useCraftTableFilterSettings(): craftTableFilterSettingsOptionsProps; interface TabDataProps { tab_name: string | null; count?: string | number; } interface TableTabsProps { loading?: boolean; tabsData?: TabDataProps[]; activeTab?: TabDataProps; tableStates: CraftTableOptionsProps; onClick: (state: string) => void; settingsOptions?: settingsOptionsProps; } declare function TableTabs({ loading, tabsData, activeTab, onClick, tableStates, settingsOptions, }: TableTabsProps): react_jsx_runtime.JSX.Element; declare function TableFilter({ onClose, columnsData, tableStates, onDeleteFilter, onSaveFilter, onUpdateFilter, dropdownData, onChangeFunction, filterComponentOptions, isFlatJson, }: FilterDrawerProps): react_jsx_runtime.JSX.Element; declare function QuickFilterSettings({ view, isFlatJson, show, filterSettingStates, onClose, columnsData, columnsDataLoading, quickTabAttributes, quickTabAttributesLoading, columnTabAttributes, columnTabAttributesLoading, sortingTabAttributes, sortingTabAttributesLoading, tabsApiData, tabsApiDataLoading, onSaveSettingsData, activeTab, selectAttributeData, selectSwinLandData, laneHideListData, swimLaneHideListData, onSaveKanbanSettingsData, }: QuickFilterModalProps): react_jsx_runtime.JSX.Element; interface TableSearchProps { value: string; onChange: (value: string) => void; } declare const TableSearch: ({ value, onChange, }: TableSearchProps) => JSX.Element; declare const Kanban: ({ metaData, data, kanbanSettingsData, isLoading, KanbanCardComponent, showSettings, onOpenSettings, isFlatJson, entity, }: { metaData: any; data: any; kanbanSettingsData: KanbanSettingsDataProps; isLoading?: boolean; KanbanCardComponent: React$1.ComponentType<{ key: string | number; cardData: any; color?: string; darkColor?: string; darkerColor?: string; }>; showSettings: boolean; onOpenSettings?: () => void; isFlatJson?: boolean; entity?: string; }) => react_jsx_runtime.JSX.Element; export { TableFilter as CraftTableFilter, TableSearch as CraftTableSearch, QuickFilterSettings as CraftTableSettings, TableTabs as CraftTableTabs, Kanban as KanbanWrapper, TableWrapper, useCraftTable, useCraftTableFilterSettings }; export type { AttributesFilterProps, AttributesFilterSelectProps, CraftTableComponentProps, CraftTableFeatureProps, CraftTableOptionsProps, CraftTablePaginationProps, CraftTableProps, CustomRenderContext, CustomRenderFnMap, FilterColumnsDataProps, FilterColumnsListProps, FilterComponentOptions, FilterComponentOptionsMainFilterOptions, FilterComponentOptionsSavedFilterOptions, FilterCriteria, FilterDataMainFilterEntityListProps, FilterDataMainFilterEntityWiseCriteriaProps, FilterDataProps, FilterDrawerProps, FilterDropdownDataProps, FilterFormComponentProps, FilterInputDataTypes, FilterMasterStateProps, FilterOperationListProps, FilterOptionsProps, FilterSharedListProps, FilterStateProps, OperationList, OperationOption, SavedFilterSharingPreference, TableHeaderProps, TopbarOptionsProps, craftTableFilterSettingsOptionsProps, createSavedFilterPayload, deleteSavedFilterPayload, settingsOptionsProps, updateSavedFilterPayload, viewSettingsPayload };