///
/**
* Created by rburson on 3/18/16.
*/
import * as React from 'react';
import { CvState, CvProps, CvContext, CvEvent, CvNavigationResult, CvActionFiredResult, CvStateChangeResult } from 'catreact';
import { PaneContext, ListContext, DetailsContext, FormContext, MapContext, GraphContext, CalendarContext, ImagePickerContext, GeoFixContext, GeoLocationContext, BarcodeScanContext, PrintMarkupContext } from 'catavolt-sdk';
import { CvDisplayProperties } from './catreact-html';
import ReactElement = React.ReactElement;
export declare type CvFormLayoutType = 'tab' | 'rsplit' | 'lsplit' | 'bsplit' | 'tsplit' | '4box' | 'opt' | 'vert';
export interface CvFormPanelState extends CvState {
}
export interface CvFormPanelProps extends CvProps {
/**
* The sdk {FormContext} to use for this form panel. If not provided, the
* {@link CvScopeContext} will be upwardly traversed to attempt to find a matching instance.
*/
formContext?: FormContext;
/**
* Register to receive {@link CvEvent}s of type {@link CvNavigationResult}
*/
navigationListeners?: Array<(event: CvEvent) => void>;
/**
* Register to receive {@link CvEvent}s of type {@link CvActionFiredResult}
*/
actionListeners?: Array<(event: CvEvent) => void>;
/**
* Provide a target for any navigations that originate from this component. The navTarget should
* correspond to the 'targetId' value of the coresident {@link CvNavigation} or {@link CvNavigator}.
* This is useful for single page apps where components may be coresident.
*/
navTarget?: string;
/**
* Register to receive {@link CvEvent}s of type {@link CvStateChangeResult}
*/
stateChangeListeners?: Array<(event: CvEvent) => void>;
/**
* A FormLayout component to use instead of the one supplied by the server meta data
*/
layoutOverrideElem?: any;
/**
* Provide a custom renderer for the entire form. See {@link CvFormComponentProvider}
*/
formComponentProvider?: CvFormComponentProvider;
/**
* Mechanism to provide display 'settings' that are not maintained by the catavolt server
*/
displayProperties?: CvDisplayProperties;
/**
* Register to receive notification of changes to display property values
* This is primarily to allow urls to react to these changes and update accordingly
*/
displayPropChangeListeners?: Array<(displayProperties: CvDisplayProperties) => void>;
}
/**
* Allows for overriding some or all of the construction of a {@link CvFormPanel}.
* An object may be provided to the {@link CvFormPanel} that implements any or all of the methods on this interface.
* The form rendering process will use any of the implemented methods on the provided object, and fallback on the defaults for others.
*/
export interface CvFormComponentProvider {
getFormRenderer?(): (cvContext: CvContext, childComponents: Array>) => ReactElement;
getChildFormComponentRenderer?(): (formContext: FormContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getDetailsComponentRenderer?(): (detailsContext: DetailsContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getGraphComponentRenderer?(): (graphContext: GraphContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getListComponentRenderer?(): (listContext: ListContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getMapComponentRenderer?(): (mapContext: MapContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getPrintMarkupComponentRenderer?(): (printMarkupContext: PrintMarkupContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getCalendarComponentRenderer?(): (calendarContext: CalendarContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getImagePickerComponentRenderer?(): (imagePickerContext: ImagePickerContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getGeoFixComponentRenderer?(): (geoFixContext: GeoFixContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getGeoLocationComponentRenderer?(): (geoLocationContext: GeoLocationContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
getBarcodeScanComponentRenderer?(): (barcodeScanContext: BarcodeScanContext, stateChangeListener: (event: CvEvent) => void, index: number) => {};
}
/**
* Renders a FormContext, utilizing a series of composite, component renderers
* These may be overriden via {@link CvFormComponentProvider}
*/
export declare var CvFormPanel: React.ClassicComponentClass;
export declare var CvFormLayoutMenu: React.ClassicComponentClass<{
selectedItem: string;
displayProperties: CvDisplayProperties;
openLeft: boolean;
displayPropChangeListeners?: ((displayProperties: CvDisplayProperties) => void)[];
}>;
export interface CvFormItemPanelProps extends CvProps {
displayElement: ReactElement;
menuElement: ReactElement;
menuElementClassName?: string;
viewMenuElement?: ReactElement;
toolbarElement: ReactElement;
toolbarElementClassName?: string;
paneContext: PaneContext;
initOpen?: boolean;
index?: number;
}
export interface CvFormItemPanelState extends CvProps {
viewLoaded: string;
}
export declare var CvFormItemPanel: React.ClassicComponentClass;
export interface CvFormLayoutState extends CvState {
}
export interface CvFormLayoutProps extends CvProps {
formComponents: Array>;
formContext: FormContext;
navigationListeners?: Array<(event: CvEvent) => void>;
actionListeners?: Array<(event: CvEvent) => void>;
navTarget?: string;
displayProperties?: CvDisplayProperties;
displayPropChangeListeners?: Array<(displayProperties: CvDisplayProperties) => void>;
}
export declare var CvFormLayout: {
displayProperties: () => CvDisplayProperties;
formComponents: () => React.ReactElement[];
formContext: () => FormContext;
};
/**
* Tabbed Form Layout
*/
export interface CvTabbedFormMenuProps extends CvFormLayoutProps {
tabSelectionListener: (selectedItem: number) => void;
selectedItem: number;
}
export declare var CvTabbedFormMenu: React.ClassicComponentClass;
export interface CvTabbedFormPanelProps extends CvFormLayoutProps {
}
export declare var CvTabbedFormPanel: React.ClassicComponentClass;
export declare var CvFormOptionsLayoutPane: React.ClassicComponentClass;
export declare var CvFormRightSplitPane: React.ClassicComponentClass;
export declare var CvFormLeftSplitPane: React.ClassicComponentClass;
export declare var CvFormBottomSplitPane: React.ClassicComponentClass;
export declare var CvFormTopSplitPane: React.ClassicComponentClass;
export declare var CvFormFourBoxSplitPane: React.ClassicComponentClass;
export declare var CvVerticalLayoutFormPane: React.ClassicComponentClass;