UNPKG

catreact

Version:

Catavolt Core React Components

103 lines (102 loc) 5.9 kB
/** * 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>;