import { DisplayHint, DisplayParent, DisplayParentModel, DisplayViewId, FormValidator, GroupBox, ObjectOrChildModel, StatusOrModel, Widget, WidgetModel } from '../index';
export interface FormModel extends WidgetModel, DisplayParentModel {
    /**
     * Specifies whether the opening of a dialog should be animated.
     *
     * If set to true, the CSS class `animate-open` is added to the form container and a default CSS animation runs.
     * It only has an effect for forms with {@link displayHint} set to {@link Form.DisplayHint.DIALOG}.
     *
     * Default is true.
     */
    animateOpening?: boolean;
    /**
     * Defines if a message box with yes, no and cancel option is shown to the user for confirmation after
     * having made at least one change in the form and then having pressed the cancel button.
     *
     * Default is true.
     */
    askIfNeedSave?: boolean;
    /**
     * Configures the text to be shown on the message box displayed when cancelling a form that has changes, see {@link askIfNeedSave}.
     *
     * If not set, a default text is used (see {@link FormLifecycle.saveChangesQuestionTextKey}.
     */
    askIfNeedSaveText?: string;
    /**
     * The header text to show in message box when the Form validation failed (e.g. on a missing or invalid value).
     *
     * If not set, a default text is used: the text with key 'FormValidationFailedTitle'
     */
    validationFailedText?: string;
    /**
     * Configures the text to show in the Form validation message box for missing mandatory fields.
     *
     * If not set, a default text is used: the text with key 'FormEmptyMandatoryFieldsMessage'.
     */
    emptyMandatoryElementsText?: string;
    /**
     * Configures the text to show in the Form validation message box for fields having invalid values.
     *
     * If not set, a default text is used: the text with key 'FormInvalidFieldsMessage'.
     */
    invalidElementsErrorText?: string;
    /**
     * Configures the text to show in the Form validation message box for fields having a warning status.
     *
     * If not set, a default text is used: the text with key 'FormInvalidFieldsWarningMessage'.
     */
    invalidElementsWarningText?: string;
    /**
     * The data property can be used to store arbitrary data on the form.
     *
     * It is typically mapped to form fields in {@link Form.importData} and exported from the form fields back to the data object in {@link Form.exportData}.
     * Instead of passing the data to the form, you can implement {@link Form.\_load} to load the data when the form opens and {@link Form._save} to store it when the form is saved.
     *
     * Default is {}.
     */
    data?: any;
    /**
     * The exclusive key is used by {@link Desktop.createFormExclusive} to check whether a similar form is already open, and if yes, activate that form instead of opening a new one.
     *
     * The exclusive key can be anything, a primitive, an object or a function returning the key.
     */
    exclusiveKey?: any | (() => any);
    /**
     * Defines where the view will be opened in the {@link DesktopBench} if the {@link displayHint} is set to {@link Form.DisplayHint.VIEW}.
     *
     * By default, views are opened in the center area ({@link DisplayViewId.C}).
     */
    displayViewId?: DisplayViewId;
    /**
     * Defines the way the form should be displayed.
     *
     * - {@link Form.DisplayHint.DIALOG}: The form will be opened as overlay.
     *   It will be as large as its content prefers and can be moved or resized by the user.
     * - {@link Form.DisplayHint.VIEW}: The form will be opened in the {@link DesktopBench} in the area specified by {@link displayViewId}.
     *   The area is in fact a tab box, so each view opened in the same area gets a tab if {@link title}, {@link subTitle} or an {@link icon} is set.
     *   Selecting a tab will activate the corresponding view.
     *   Thew will be as large as the area.
     * - {@link Form.DisplayHint.POPUP_WINDOW}: The form will be opened in a separate browser window.
     *   It will be as large as its content prefers and can be moved or resized by the user.
     *
     * Default is {@link Form.DisplayHint.DIALOG}.
     */
    displayHint?: DisplayHint;
    /**
     * Defines whether a dialog should use the whole window size and therefore cover the whole desktop.
     *
     * It only has an effect for forms with {@link displayHint} set to {@link Form.DisplayHint.DIALOG}.
     *
     * Default is false.
     */
    maximized?: boolean;
    /**
     * The header contains the {@link title}, {@link subtitle}, {@link icon}, {@link saveNeeded} status and close action (controlled by {@link closable}).
     *
     * - If set to true, a header will be shown.
     * - If set to false, no header will be shown.
     * - If set to null, the UI will decide what to do, which means: show a header if {@link displayHint} is set to {@link DisplayHint.DIALOG}, otherwise don't show one.
     *
     * Default is null (= header is visible if the form is a dialog).
     */
    headerVisible?: boolean;
    /**
     * Controls whether the user is allowed to interact with the user interface outside the form.
     *
     * - If set to true, the user can only interact with the form and the rest is blocked.
     * - If set to false, the interaction is not limited to the form.
     * - If set to null, the UI decides whether to use true or false, which means: modal will be true if {@link displayHint} is set to {@link DisplayHint.DIALOG}, otherwise it will be false.
     *
     * What parts of the desktop will be blocked depends on the used {@link displayParent}.
     *
     * Default is null (= form is modal if it is a dialog).
     */
    modal?: boolean;
    /**
     * Defines when the form should be accessible (visible) and which part of the desktop is blocked for interaction if {@link modal} is set to true.
     *
     * Possible parents are {@link Desktop}, {@link Outline} or {@link Form}:
     *
     * - Desktop: The form is always accessible; blocks the entire desktop if modal.
     * - Outline: The form is only accessible when the given outline is active; blocks only the active outline if modal, so changing the outline or using the desktop header in general is still possible.
     * - Form: The form is only accessible when the given form is active; blocks only the form used as display parent if modal.
     *
     * By default, the {@link Desktop} is used as display parent.
     */
    displayParent?: DisplayParent;
    /**
     * Defines whether the form should display a close button [X] in the form header resp. view tab.
     *
     * Default is true.
     */
    closable?: boolean;
    /**
     * If set to true, the bounds (position and size) of the form will be stored in the local storage using {@link cacheBoundsKey}.
     * When a form with the same {@link cacheBoundsKey} is opened again, the bounds will be restored.
     *
     * It only has an effect for forms with {@link displayHint} set to {@link Form.DisplayHint.DIALOG} or {@link Form.DisplayHint.POPUP_WINDOW}.
     *
     * Default is false.
     */
    cacheBounds?: boolean;
    /**
     * The key that is used to store the bounds of a form in the local storage, if {@link cacheBounds} is enabled.
     *
     * By default, the {@link objectType} is used as key.
     */
    cacheBoundsKey?: string;
    /**
     * Configures whether the form can be resized by the user.
     *
     * It only has an effect for forms with {@link displayHint} set to {@link Form.DisplayHint.DIALOG}.
     *
     * Default is true.
     */
    resizable?: boolean;
    /**
     * Configures whether the form can be moved by the user.
     *
     * It only has an effect for forms with {@link displayHint} set to {@link Form.DisplayHint.DIALOG}.
     *
     * Default is true.
     */
    movable?: boolean;
    /**
     * The root group box is the main container inside the form.
     * Every form needs exactly one root group box that can contain one or more {@link FormField}s.
     */
    rootGroupBox?: ObjectOrChildModel<GroupBox>;
    /**
     * Whether a changed form should display the save {@link saveNeeded} state in the form header or tab.
     *
     * Default is true.
     */
    saveNeededVisible?: boolean;
    /**
     * Configure whether to show this {@link Form} once started.
     *
     * If set to true and the {@link Form} is started, it is added to the {@link Desktop} in order to be displayed.
     *
     * Default is true.
     */
    showOnOpen?: boolean;
    /**
     * The widget to be focused initially when the form renders. If not set, the first focusable element will be focused.
     * If an id is provided, the widget will be resolved automatically in the context of the form.
     *
     * Default is null.
     */
    initialFocus?: Widget | string;
    /**
     * Whether this form should render its {@link initialFocus}.
     *
     * Default is true.
     */
    renderInitialFocusEnabled?: boolean;
    /**
     * If set, the title will be displayed in the form header or {@link DesktopTab} tab.
     */
    title?: string;
    /**
     * If set, the subtitle will be displayed in the form header or {@link DesktopTab} tab.
     */
    subTitle?: string;
    /**
     * If set, the icon will be displayed in the form header or {@link DesktopTab} tab.
     *
     * It can either be a font icon identifier or an url pointing to an image.
     */
    iconId?: string;
    /**
     * If set, the status will be displayed in the form header or {@link DesktopTab} tab.
     */
    status?: StatusOrModel;
    /**
     * Configures the validators to be used when the form needs to be validated (e.g. when the form is saved).
     *
     * When the form is validated, every validator is called and has to agree.
     * If one validation fails, the form is considered invalid.
     *
     * By default, the list is empty.
     */
    validators?: FormValidator[];
}
//# sourceMappingURL=FormModel.d.ts.map