import * as React from 'react'; import { ThunkDispatch } from 'redux-thunk'; import { AutoSuggestProps } from '../types/autoSuggestProps'; import { Resource, Questionnaire, QuestionnaireResponseItem, QuestionnaireItem, QuestionnaireResponseItemAnswer, Attachment, ValueSet } from '../types/fhir'; import { OrgenhetHierarki } from '../types/orgenhetHierarki'; import { TextMessage } from '../types/text-message'; import { UploadedFile } from '@helsenorge/file-upload/components/dropzone'; import { FormChild } from '@helsenorge/form/components/form'; import { ValidationProps } from '@helsenorge/form/components/form/validation'; import { NewValueAction } from '../actions/newValue'; import { GlobalState } from '../reducers'; import { RenderContext } from '../util/renderContext'; import { Resources } from '../util/resources'; import { Path } from '../util/skjemautfyller-core'; export interface Props { resources?: Resources; responseItem?: QuestionnaireResponseItem; containedResources?: Resource[]; item?: QuestionnaireItem; questionnaire?: Questionnaire | null; headerTag?: number; pdf?: boolean; language?: string; includeSkipLink?: boolean; promptLoginMessage?: () => void; path?: Array; enable?: boolean; id?: string; answer?: QuestionnaireResponseItemAnswer | Array; addFormComponent?: (component: FormChild) => void; removeFormComponent?: (component: FormChild) => void; onValidated?: (valid: boolean | undefined) => void; optionalLabel?: string; requiredLabel?: string; validateScriptInjection?: boolean; showOptionalLabel?: boolean; showRequiredLabel?: boolean; dispatch?: ThunkDispatch; visibleDeleteButton?: boolean; repeatButton?: JSX.Element; attachmentErrorMessage?: string; attachmentMaxFileSize?: number; attachmentValidTypes?: Array; onRequestAttachmentLink?: (file: string) => string; onOpenAttachment?: (fileId: string) => void; onDeleteAttachment?: (fileId: string, onSuccess: () => void, onError: (errormessage: TextMessage | null) => void) => void; uploadAttachment?: (files: File[], onSuccess: (uploadedFile: UploadedFile, attachment: Attachment) => void, onError: (errormessage: TextMessage | null) => void) => void; onRequestHelpButton?: (item: QuestionnaireItem, itemHelp: QuestionnaireItem, helpType: string, helpText: string, opening: boolean) => JSX.Element; onRequestHelpElement?: (item: QuestionnaireItem, itemHelp: QuestionnaireItem, helpType: string, helpText: string, opening: boolean) => JSX.Element; onAnswerChange?: (newState: GlobalState, path: Array, item: QuestionnaireItem, answer: QuestionnaireResponseItemAnswer) => void; renderContext: RenderContext; isHelpOpen?: boolean; onRenderMarkdown?: (item: QuestionnaireItem, markup: string) => string; fetchValueSet?: (searchString: string, item: QuestionnaireItem, successCallback: (valueSet: ValueSet) => void, errorCallback: (error: string) => void) => void; autoSuggestProps?: AutoSuggestProps; fetchReceivers?: (successCallback: (receivers: Array) => void, errorCallback: () => void) => void; } interface EnhancedProps { renderChildrenItems?: (renderContext: RenderContext) => Array | undefined; renderDeleteButton?: () => JSX.Element | undefined; } interface State { childComponents?: Array>; isHelpVisible: boolean; } export default function withCommonFunctions(WrappedComponent: React.ComponentClass): { new (props: T & ValidationProps & Props): { renderDeleteButton: (className?: string | undefined) => JSX.Element | undefined; renderRepeatButton: (item: QuestionnaireItem, index: number, path?: Path[] | undefined, response?: QuestionnaireResponseItem[] | undefined) => JSX.Element | undefined; hasAnwer(answer: QuestionnaireResponseItemAnswer | QuestionnaireResponseItemAnswer[] | undefined): boolean; toggleHelp: (isOpen: boolean) => void; renderHelpButton: () => JSX.Element | undefined; renderHelpElement: () => JSX.Element | undefined; renderItem: (item: QuestionnaireItem, renderContext: RenderContext) => Array; renderChildrenItems: (renderContext: RenderContext) => Array | undefined; render(): JSX.Element | null; context: any; setState(state: State | ((prevState: Readonly, props: Readonly) => State | Pick | null) | Pick | null, callback?: (() => void) | undefined): void; forceUpdate(callback?: (() => void) | undefined): void; readonly props: Readonly & Readonly<{ children?: React.ReactNode; }>; state: Readonly; refs: { [key: string]: React.ReactInstance; }; componentDidMount?(): void; shouldComponentUpdate?(nextProps: Readonly, nextState: Readonly, nextContext: any): boolean; componentWillUnmount?(): void; componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void; getSnapshotBeforeUpdate?(prevProps: Readonly, prevState: Readonly): any; componentDidUpdate?(prevProps: Readonly, prevState: Readonly, snapshot?: any): void; componentWillMount?(): void; UNSAFE_componentWillMount?(): void; componentWillReceiveProps?(nextProps: Readonly, nextContext: any): void; UNSAFE_componentWillReceiveProps?(nextProps: Readonly, nextContext: any): void; componentWillUpdate?(nextProps: Readonly, nextState: Readonly, nextContext: any): void; UNSAFE_componentWillUpdate?(nextProps: Readonly, nextState: Readonly, nextContext: any): void; }; contextType?: React.Context | undefined; }; export {};