import { MutationResult } from "react-apollo"; import { User_permissions } from "./auth/types/User"; import { ConfirmButtonTransitionState } from "./components/ConfirmButton"; import { IFilter } from "./components/Filter"; export interface UserError { field: string; message: string; } export interface DialogProps { open: boolean; onClose: () => void; } export interface ListSettings { columns?: TColumn[]; rowNumber: number; } export enum ListViews { ATTRIBUTE_LIST = "ATTRIBUTE_LIST", CATEGORY_LIST = "CATEGORY_LIST", COLLECTION_LIST = "COLLECTION_LIST", CUSTOMER_LIST = "CUSTOMER_LIST", DRAFT_LIST = "DRAFT_LIST", NAVIGATION_LIST = "NAVIGATION_LIST", ORDER_LIST = "ORDER_LIST", PAGES_LIST = "PAGES_LIST", PLUGINS_LIST = "PLUGIN_LIST", PRODUCT_LIST = "PRODUCT_LIST", PRODUCT_TYPE_LIST = "PRODUCT_TYPE_LIST", SALES_LIST = "SALES_LIST", SHIPPING_METHODS_LIST = "SHIPPING_METHODS_LIST", STAFF_MEMBERS_LIST = "STAFF_MEMBERS_LIST", VOUCHER_LIST = "VOUCHER_LIST", WEBHOOK_LIST = "WEBHOOK_LIST" } export interface ListProps { disabled: boolean; pageInfo?: { hasNextPage: boolean; hasPreviousPage: boolean; }; settings?: ListSettings; onNextPage: () => void; onPreviousPage: () => void; onRowClick: (id: string) => () => void; onUpdateListSettings?: ( key: keyof ListSettings, value: any ) => void; onListSettingsReset?: () => void; } export interface SortPage { sort: Sort; onSort: (field: TSortKey, id?: string) => void; } export interface ListActionsWithoutToolbar { toggle: (id: string) => void; toggleAll: (items: React.ReactNodeArray, selected: number) => void; isChecked: (id: string) => boolean; selected: number; } export type TabListActions< TToolbars extends string > = ListActionsWithoutToolbar & Record; export interface ListActions extends ListActionsWithoutToolbar { toolbar: React.ReactNode | React.ReactNodeArray; } export interface PageListProps extends ListProps { defaultSettings?: ListSettings; onAdd: () => void; } export interface SearchPageProps { initialSearch: string; onSearchChange: (value: string) => void; } export interface FilterPageProps extends SearchPageProps, TabPageProps { currencySymbol: string; onFilterChange: (filter: IFilter) => void; } export interface SearchProps { searchPlaceholder: string; } export interface FilterProps extends FilterPageProps, SearchProps { currencySymbol: string; } export interface TabPageProps { currentTab: number; tabs: string[]; onAll: () => void; onTabChange: (tab: number) => void; onTabDelete: () => void; onTabSave: () => void; } export interface PartialMutationProviderOutput< TData extends {} = {}, TVariables extends {} = {} > { opts: MutationResult & MutationResultAdditionalProps; mutate: (variables: TVariables) => void; } export interface Node { id: string; } export type FormErrors = Partial>; export type Pagination = Partial<{ after: string; before: string; }>; export type Dialog = Partial<{ action: TDialog; }>; export type ActiveTab = Partial<{ activeTab: TTab; }>; export type Filters = Partial< Record >; export type FiltersWithMultipleValues = Partial< Record >; export type SingleAction = Partial<{ id: string; }>; export type Sort = Partial<{ asc: boolean; sort: TSort; }>; export type BulkAction = Partial<{ ids: string[]; }>; export interface ReorderEvent { oldIndex: number; newIndex: number; } export type ReorderAction = (event: ReorderEvent) => void; export interface FetchMoreProps { loading: boolean; hasMore: boolean; onFetchMore: () => void; } export type TabActionDialog = "save-search" | "delete-search"; export interface UserPermissionProps { userPermissions: User_permissions[]; } export interface MutationResultAdditionalProps { status: ConfirmButtonTransitionState; }