catreact
Version:
Catavolt Core React Components
103 lines (102 loc) • 5.9 kB
TypeScript
/**
* Created by rburson on 3/18/16.
*/
import * as React from 'react';
import { CvState, CvProps, CvContext, CvEvent, CvNavigationResult, CvActionFiredResult, CvStateChangeResult } from './../core/catreact-core';
import { PaneContext, ListContext, DetailsContext, FormContext, MapContext, GraphContext, CalendarContext, ImagePickerContext, GeoFixContext, GeoLocationContext, BarcodeScanContext } from 'catavolt-sdk';
import ReactElement = React.ReactElement;
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<CvNavigationResult>) => void>;
/**
* Register to receive {@link CvEvent}s of type {@link CvActionFiredResult}
*/
actionListeners?: Array<(event: CvEvent<CvActionFiredResult>) => 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<CvStateChangeResult>) => 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;
}
/**
* 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<any>>) => ReactElement<any>;
getChildFormComponentRenderer?(): (formContext: FormContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
getDetailsComponentRenderer?(): (detailsContext: DetailsContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
getGraphComponentRenderer?(): (graphContext: GraphContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
getListComponentRenderer?(): (listContext: ListContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
getMapComponentRenderer?(): (mapContext: MapContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
getCalendarComponentRenderer?(): (calendarContext: CalendarContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
getImagePickerComponentRenderer?(): (imagePickerContext: ImagePickerContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
getGeoFixComponentRenderer?(): (geoFixContext: GeoFixContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
getGeoLocationComponentRenderer?(): (geoLocationContext: GeoLocationContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
getBarcodeScanComponentRenderer?(): (barcodeScanContext: BarcodeScanContext, stateChangeListener: (event: CvEvent<CvStateChangeResult>) => void) => {};
}
/**
* Renders a FormContext, utilizing a series of composite, component renderers
* These may be overriden via {@link CvFormComponentProvider}
*/
export declare var CvFormPanel: React.ClassicComponentClass<CvFormPanelProps>;
export interface CvFormItemPanelProps extends CvProps {
displayElement: ReactElement<any>;
menuElement: ReactElement<any>;
paneContext: PaneContext;
}
export declare var CvFormItemPanel: React.ClassicComponentClass<CvFormItemPanelProps>;
export interface CvFormLayoutState extends CvState {
}
export interface CvFormLayoutProps extends CvProps {
formComponents: Array<ReactElement<any>>;
formContext: FormContext;
navigationListeners?: Array<(event: CvEvent<CvNavigationResult>) => void>;
actionListeners?: Array<(event: CvEvent<CvActionFiredResult>) => void>;
navTarget?: string;
}
export declare var CvFormLayout: {
formComponents: () => ReactElement<any>[];
formContext: () => FormContext;
};
/**
* Tabbed Form Layout
*/
export interface CvTabbedFormMenuProps extends CvFormLayoutProps {
tabSelectionListener: (selectedItem: number) => void;
}
export declare var CvTabbedFormMenu: React.ClassicComponentClass<CvTabbedFormMenuProps>;
export interface CvTabbedFormPanelState extends CvFormLayoutState {
activeItem: number;
}
export declare var CvTabbedFormPanel: React.ClassicComponentClass<CvFormLayoutProps>;
export declare var CvFormOptionsLayoutPane: React.ClassicComponentClass<CvFormLayoutProps>;
export declare var CvFormRightSplitPane: React.ClassicComponentClass<CvFormLayoutProps>;
export declare var CvFormLeftSplitPane: React.ClassicComponentClass<CvFormLayoutProps>;
export declare var CvFormBottomSplitPane: React.ClassicComponentClass<CvFormLayoutProps>;
export declare var CvFormTopSplitPane: React.ClassicComponentClass<CvFormLayoutProps>;
export declare var CvFormFourBoxSplitPane: React.ClassicComponentClass<CvFormLayoutProps>;
export declare var CvVerticalLayoutFormPane: React.ClassicComponentClass<CvFormLayoutProps>;