/// /** * 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;