import * as React from 'react';

type ViewMode = 'VIEW_MODE_DETAILS' | 'VIEW_MODE_FULL';

export type CommonListLayoutProps = {
    className?: string;
    testAutomationId?: string;
    list: React.ReactNode;
    viewMode?: ViewMode;
    details?: React.ReactNode;
    head?: React.ReactNode;
    subhead?: React.ReactNode;
    filters?: React.ReactNode;
    filtersColSize?: number;
    actions?: React.ReactNode;
    actionsColSize?: number;
    listActions?: React.ReactNode;
    hasStoreCounterText?: boolean;
    storeCounterText?: string;
    subFooter?: React.ReactNode;
    withoutToolbarGap?: boolean;
    isTransparent?: boolean;
    hasPagination?: boolean;
    listShortViewCol?: number;
    detailsShortViewCol?: number;
    cancelMinHeight?: boolean;
} & Partial<CommonListLayoutDefaultProps>;

export type CommonListLayoutDefaultProps = {
    testAutomationId: string;
    viewMode: ViewMode;
    filtersColSize: number;
    actionsColSize: number;
    hasStoreCounterText: boolean;
    storeCounterText: React.ReactNode;
    withoutToolbarGap: boolean;
    isTransparent: boolean;
    hasPagination: boolean;
    listShortViewCol: number;
    detailsShortViewCol: number;
    cancelMinHeight: boolean;
}

export abstract class CommonListLayout<P extends CommonListLayoutProps> extends React.Component<P> {
    static VIEW_MODE_DETAILS: 'VIEW_MODE_DETAILS';
    static VIEW_MODE_FULL: 'VIEW_MODE_FULL';
}