import { ModalProps, TabsListProps } from "@mantine/core"; import { RestfulEndpoint } from "@mongez/http"; import { FormControl, FormInterface } from "@mongez/react-form"; import React from "react"; import { CachedRender, Callbacks, OnErrorCallback, ReactiveFormEvent, SaveCallback, SubmitCallback } from "./../types"; import { FormButton } from "./FormButton"; import { FormTab } from "./FormTab"; import { ColSpan, InputBuilder } from "./InputBuilder"; export declare class ReactiveForm { /** * Form Record Object */ protected record: any; /** * React form id */ id: string; /** * Form handler */ form: FormInterface; /** * Service that will be used form saving */ protected _service?: RestfulEndpoint; /** * Buttons list */ protected buttonsList: FormButton[]; /** * Submit handler * Used if service is not provided */ protected _submit?: SubmitCallback; /** * Submit format */ protected _submitFormat: "json" | "formData"; /** * Callbacks list */ protected callbacks: Callbacks; /** * Enable keyboard shortcuts */ protected _enableKeyboardShortcuts: boolean; /** * Default record Parameters * Works only when record is not set or empty */ protected defaultRecordParameters: any; /** * Current wrapper either it is modal or static */ protected wrapper: any; /** * Modal Wrapper */ protected modalWrapper: any; /** * Form Wrapper when not in modal */ protected formStaticWrapper: any; /** * Wrapper props */ protected wrapperProps: any; /** * Whether to ignore empty values */ protected _ignoreEmptyValues?: boolean; /** * Default modal props */ protected defaultModalProps: Partial; /** * Default static form props */ protected defaultStaticFormProps: any; /** * Form Heading * If not set and single name and record are present, it will be translated based on the form type */ protected _heading: React.ReactNode; /** * Form Single name */ protected _singleName: string; /** * Translate with `the` for single name in update */ protected _translateWithThe: boolean; /** * Enable/Disable Close Button */ protected _closeButton: boolean; /** * Trigger button */ protected _triggerButton: React.ReactNode; /** * Close button text */ protected _closeButtonText: React.ReactNode; /** * Determine whether to enable save and clear button */ protected _withSaveAndClearButton: boolean; /** * Determine whether to enable reset button */ protected _withResetButton: boolean; /** * Inputs list */ protected inputs: InputBuilder[]; /** * Auto focus on first input */ protected autoFocusOnFirstInput: boolean; /** * Default col size for inputs */ protected defaultColSize?: ColSpan; /** * Form tabs list */ protected tabs: FormTab[]; /** * Open in modal */ openInModal: boolean; /** * Determine if current form is opened in modal */ opened: boolean; /** * Cached Content of the form */ protected rendered: CachedRender; /** * Record id to determine if it is update or create */ protected _recordId?: number | string; /** * Current active tab name */ activeTab: string | null; /** * Close the form on save */ protected _closeOnSave: boolean; /** * ReRender handler */ protected reRenderer: any; /** * Tabs settings */ tabsSettings: { position: TabsListProps["justify"]; vertical: boolean; }; /** * Set record id */ recordId(id: number | string | undefined): this; /** * Determine whether to ignore empty values */ ignoreEmptyValues(ignore?: boolean): this; /** * Determine whether to enable keyboard shortcuts */ enableKeyboardShortcuts(enable?: boolean): this; /** * Add buttons list */ buttons(buttons: FormButton[]): this; /** * Just add a quick submit button with the given text */ submitButton(text: React.ReactNode): this; /** * Set submit format that will receive data when submitting data with services */ submitFormat(format: "json" | "formData"): this; /** * Determine wether to open in a modal */ inModal(openInModal?: boolean): this; /** * Set the modal trigger button * * This can be used as a button to open the form directly instead of passing open and onClose props */ triggerButton(button: React.ReactNode): this; /** * Set form size */ size(size: any): this; /** * Set shadow */ /** * Set modal size as full screen */ fullScreen(openInFullScreen?: boolean): this; /** * Determine whether to close the modal using Esc key */ closeOnEscape(close?: boolean): this; /** * {@alias} closeOnEscape */ esc(close?: boolean): this; /** * Close when click outside the modal or on the overlay */ closeByOverlay(close?: boolean): this; /** * Get tab by name */ getTab(name: string): FormTab | undefined; /** * Force re-rendering the form */ reRender(): void; /** * Close the form on save */ closeOnSave(closeOnSave?: boolean): this; /** * Set overlay opacity */ overlayOpacity(opacity: number): this; /** * Determine whether to auto center the form */ centered(centered?: boolean): this; /** * Determine whether to center tabs * Works only if tabs are present */ tabsPosition(tabPosition: TabsListProps["justify"]): this; /** * Vertical tabs */ verticalTabs(isVertical?: boolean): this; /** * Set service */ service(service: RestfulEndpoint): this; /** * Add more wrapper props */ addWrapperProps(props: any): this; /** * Add submit handler * Used if service is not set */ submitter(handler: SubmitCallback): this; /** * Set on submit callback */ onSubmit(callback: SubmitCallback): this; /** * Trigger the given event */ trigger(eventName: ReactiveFormEvent, ...args: any[]): any; /** * Listen to the given event */ on(eventName: ReactiveFormEvent, callback: any): import("@mongez/events").EventSubscription; /** * On error callback */ onError(callback: OnErrorCallback): this; /** * On Save callback */ onSave(callback: SaveCallback): this; /** * Determine whether to enable close button beside save button */ withCloseButton(enable?: boolean): this; /** * Determine whether to enable save and clear button */ withSaveAndClearButton(enable?: boolean): this; /** * Determine whether to add a reset button */ withResetButton(enable?: boolean): this; /** * Set form tabs */ setTabs(tabs: FormTab[]): this; /** * Translate with `the` for single name in update */ translateWithThe(translateWithThe?: boolean): this; /** * Set form single name */ singleName(name: string): this; /** * Set form heading */ heading(heading: React.ReactNode): this; /** * Add form tabs */ addTabs(...tabs: FormTab[]): this; /** * Clear cached content */ clearCache(): void; /** * Set form record */ setRecord(record: any): this; /** * Get record object */ getRecord(key?: string, defaultValue?: any): any; /** * Get form input by name */ input(name: string): InputBuilder | undefined; /** * Determine whether to auto focus on first input */ autoFocus(autoFocus?: boolean): this; /** * Set default col size for all inputs */ col(size: ColSpan): this; /** * add inputs to the list */ setInputs(inputs: InputBuilder[]): this; /** * Add input to the list */ addInputs(...inputs: InputBuilder[]): this; /** * Render the inputs */ render(): React.ReactNode; /** * Reset form data */ reset(): void; /** * Save and clear form */ saveAndClear(): void; /** * Focus on first input */ focusOnFirstInput(): void; /** * Trigger form close */ close(): void; /** * Interact with input */ protected interactWithInput(input: InputBuilder, index: number): void; /** * Render form tabs */ protected renderTabs(): React.ReactNode; /** * Go to tab */ goToTab(tabName: string | null): void; /** * Manage form submission */ protected manageSubmitForm(setIslLoading: (loading: boolean) => void, onClose: () => void): ({ form, values, formData }: { form: any; values: any; formData: any; }) => Promise; /** * Render heading */ protected renderHeading(): React.ReactNode; /** * Render heading from single name */ protected renderHeadingFromSingleName(): any; /** * Get translated single name */ protected getTranslatedSingleName(): any; /** * Determine if form Has record id */ hasRecordId(): boolean; /** * Manage form error */ manageFormError(invalidFormControls: FormControl[]): void; /** * Set form component */ setForm(form: FormInterface): void; /** * Trigger form is rendered */ triggerRendered(): void; /** * Get form component wrapper */ getWrapper(): any; /** * Return the form as component */ asComponent(): any; } //# sourceMappingURL=ReactiveForm.d.ts.map