react-declarative-lite
Version:
A lighter version of the react-declarative which exports the <One /> component and dependencies only and as such makes the library slightly faster and smaller. Unlike react-declarative, it doesn't provide any additional overhead like state management. For
1,186 lines (1,180 loc) • 568 kB
TypeScript
// Generated by dts-bundle v0.7.3
// Dependencies for this module:
// ../dayjs
// ../react
// ../@mui/material
// ../@mui/material/TextField
// ../@mui/material/Button
// ../@mui/material/IconButton
// ../@mui/material/Box
declare module "react-declarative-lite" {
export type { ISize } from "react-declarative-lite/model/ISize";
import { TypedField as TypedFieldInternal } from "react-declarative-lite/model/TypedField";
import { IValidation as IValidationInternal } from "react-declarative-lite/model/IValidation";
import { IInvalidField as IInvalidFieldInternal } from "react-declarative-lite/model/IInvalidField";
import { IField as IFieldInternal } from "react-declarative-lite/model/IField";
import { IEntity as IEntityInternal } from "react-declarative-lite/model/IEntity";
import { IManaged as IManagedInternal } from "react-declarative-lite/model/IManaged";
export { TileMode } from "react-declarative-lite/components";
export { FieldType } from "react-declarative-lite/model/FieldType";
export { SelectionMode } from "react-declarative-lite/model/SelectionMode";
import { IOneApi as IOneApiInternal } from "react-declarative-lite/model/IOneApi";
import { IOption as IOptionInternal } from "react-declarative-lite/model/IOption";
export { useItemModal } from "react-declarative-lite/hooks/useItemModal";
export { useChangeDelay } from "react-declarative-lite/hooks/useChangeDelay";
import { OneHandler as OneHandlerInternal } from "react-declarative-lite/model/IOneProps";
import { useActualCallback } from "react-declarative-lite/hooks/useActualCallback";
import { useActualValue } from "react-declarative-lite/hooks/useActualValue";
import { useActualState } from "react-declarative-lite/hooks/useActualState";
import { useActualRef } from "react-declarative-lite/hooks/useActualRef";
import { useRenderWaiter } from "react-declarative-lite/hooks/useRenderWaiter";
import { useAsyncAction } from "react-declarative-lite/hooks/useAsyncAction";
import { useAsyncValue } from "react-declarative-lite/hooks/useAsyncValue";
import { useSinglerunAction } from "react-declarative-lite/hooks/useSinglerunAction";
import { useQueuedAction } from "react-declarative-lite/hooks/useQueuedAction";
import { useMediaContext } from "react-declarative-lite/hooks/useMediaContext";
import { useChangeSubject } from "react-declarative-lite/hooks/useChangeSubject";
import { useDeepChangeSubject } from "react-declarative-lite/hooks/useDeepChangeSubject";
import { useReloadTrigger } from "react-declarative-lite/hooks/useReloadTrigger";
import { useSingleton } from "react-declarative-lite/hooks/useSingleton";
import { useElementSize } from "react-declarative-lite/hooks/useElementSize";
import { useWindowSize } from "react-declarative-lite/hooks/useWindowSize";
import { useSubject } from "react-declarative-lite/hooks/useSubject";
import { useChange } from "react-declarative-lite/hooks/useChange";
export {
ModalManagerProvider,
useModalManager,
} from "react-declarative-lite/components/ModalManager";
export type { IModal } from "react-declarative-lite/components/ModalManager";
export { useElementSize };
export { useWindowSize };
import IAnything from "react-declarative-lite/model/IAnything";
import IRowData, { RowId } from "react-declarative-lite/model/IRowData";
export type { IRowData, RowId };
export type TypedField<
Data = IAnything,
Payload = IAnything,
> = TypedFieldInternal<Data, Payload>;
export type IField<Data = IAnything, Payload = IAnything> = IFieldInternal<
Data,
Payload
>;
export type IFieldEntity<
Data = IAnything,
Payload = IAnything,
> = IEntityInternal<Data, Payload>;
export type IFieldManaged<
Data = IAnything,
Value = IAnything,
> = IManagedInternal<Data, Value>;
export type IInvalidField<
Data = IAnything,
Payload = IAnything,
> = IInvalidFieldInternal<Data, Payload>;
export type IValidation = IValidationInternal;
export type OneHandler<Data = IAnything> = OneHandlerInternal<Data>;
export type IOneApi<Data = IAnything> = IOneApiInternal<Data>;
export type IOption<Payload = any> = IOptionInternal<Payload>;
import { ITile as ITileInternal } from "react-declarative-lite/components";
export type ITile<
RowData extends IRowData = any,
Payload extends IAnything = IAnything,
> = ITileInternal<RowData, Payload>;
export { default as dayjs } from "dayjs";
export { InfiniteView } from "react-declarative-lite/components";
export { SearchView } from "react-declarative-lite/components";
export type { ISearchItem } from "react-declarative-lite/components";
export {
VirtualView,
VIRTUAL_VIEW_ROOT,
VIRTUAL_VIEW_CHILD,
} from "react-declarative-lite/components";
export { ActionButton } from "react-declarative-lite/components";
export { ActionIcon } from "react-declarative-lite/components";
export { Async } from "react-declarative-lite/components";
export { If } from "react-declarative-lite/components";
export { One, OneTyped, OneConfig } from "react-declarative-lite/components";
export { Tile, TileCheckbox } from "react-declarative-lite/components";
export {
OneSlotFactory,
OneDefaultSlots,
} from "react-declarative-lite/components";
export {
isBaseline,
isBaselineSimple,
isBaselineForRoot,
} from "react-declarative-lite/components";
export { NoSsr } from "react-declarative-lite/components";
export { OtherComboSlot } from "react-declarative-lite/components";
export { OtherItemsSlot } from "react-declarative-lite/components";
export { useCursorPaginator } from "react-declarative-lite/components";
export { useOffsetPaginator } from "react-declarative-lite/components";
export { useGridAction } from "react-declarative-lite/components";
export { useGridSelection } from "react-declarative-lite/components";
export { createField, makeField } from "react-declarative-lite/components";
export { createLayout, makeLayout } from "react-declarative-lite/components";
export {
useOneProps,
useOneState,
useOnePayload,
useOneFeatures,
useOneRadio,
useOneContext,
useOneMenu,
} from "react-declarative-lite/components";
export { useActualCallback };
export { useActualValue };
export { useActualState };
export { useActualRef };
export { useRenderWaiter };
export { useChangeSubject };
export { useDeepChangeSubject };
export { useReloadTrigger };
export { useSinglerunAction };
export { useAsyncAction };
export { useAsyncValue };
export { useQueuedAction };
export { useMediaContext };
export { useSingleton };
export { useSubject };
export { useChange };
import { IOnePublicProps as IOnePublicPropsInternal } from "react-declarative-lite/model/IOnePublicProps";
export type IOnePublicProps<
Data = IAnything,
Field extends IField<Data> = IField<Data>,
> = IOnePublicPropsInternal<Data, Field>;
import { ICheckBoxSlot as ICheckBoxSlotInternal } from "react-declarative-lite/components";
import { IYesNoSlot as IYesNoSlotInternal } from "react-declarative-lite/components";
import { IComboSlot as IComboSlotInternal } from "react-declarative-lite/components";
import { IItemsSlot as IItemsSlotInternal } from "react-declarative-lite/components";
import { ILineSlot as ILineSlotInternal } from "react-declarative-lite/components";
import { IProgressSlot as IProgressSlotInternal } from "react-declarative-lite/components";
import { IRadioSlot as IRadioSlotInternal } from "react-declarative-lite/components";
import { IDateSlot as IDateSlotInternal } from "react-declarative-lite/components";
import { ITimeSlot as ITimeSlotInternal } from "react-declarative-lite/components";
import { IFileSlot as IFileSlotInternal } from "react-declarative-lite/components";
import { IDictSlot as IDictSlotInternal } from "react-declarative-lite/components";
import { ITreeSlot as ITreeSlotInternal } from "react-declarative-lite/components";
import { IChooseSlot as IChooseSlotIntetnal } from "react-declarative-lite/components";
import { IRatingSlot as IRatingSlotInternal } from "react-declarative-lite/components";
import { ISliderSlot as ISliderSlotInternal } from "react-declarative-lite/components";
import { ISwitchSlot as ISwitchSlotInternal } from "react-declarative-lite/components";
import { ITextSlot as ITextSlotInternal } from "react-declarative-lite/components";
import { ICompleteSlot as ICompleteSlotInternal } from "react-declarative-lite/components";
import { ITypographySlot as ITypographySlotInternal } from "react-declarative-lite/components";
import { IButtonSlot as IButtonSlotInternal } from "react-declarative-lite/components";
export type ICheckBoxSlot = ICheckBoxSlotInternal;
export type IButtonSlot = IButtonSlotInternal;
export type IComboSlot = IComboSlotInternal;
export type IYesNoSlot = IYesNoSlotInternal;
export type IItemsSlot = IItemsSlotInternal;
export type ILineSlot = ILineSlotInternal;
export type IProgressSlot = IProgressSlotInternal;
export type IRadioSlot = IRadioSlotInternal;
export type IRatingSlot = IRatingSlotInternal;
export type ISliderSlot = ISliderSlotInternal;
export type ISwitchSlot = ISwitchSlotInternal;
export type ITextSlot = ITextSlotInternal;
export type IDateSlot = IDateSlotInternal;
export type ITimeSlot = ITimeSlotInternal;
export type IFileSlot = IFileSlotInternal;
export type IDictSlot = IDictSlotInternal;
export type ITreeSlot = ITreeSlotInternal;
export type IChooseSlot = IChooseSlotIntetnal;
export type ITypographySlot = ITypographySlotInternal;
export type ICompleteSlot = ICompleteSlotInternal;
export { VirtualListBox } from "react-declarative-lite/components/One/components/common/VirtualListBox";
export { openBlank } from "react-declarative-lite/utils/openBlank";
export { randomString } from "react-declarative-lite/utils/randomString";
export { chooseFile } from "react-declarative-lite/utils/chooseFile";
export { compareFulltext } from "react-declarative-lite/utils/compareFulltext";
export {
promiseState,
promiseValue,
} from "react-declarative-lite/utils/promiseState";
export { compareArray } from "react-declarative-lite/utils/compareArray";
export { isObject } from "react-declarative-lite/utils/isObject";
export { createValueProvider } from "react-declarative-lite/utils/createValueProvider";
export { createStateProvider } from "react-declarative-lite/utils/createStateProvider";
export { normalizeText } from "react-declarative-lite/utils/normalizeText";
export { formatText } from "react-declarative-lite/utils/formatText";
export { singleshot } from "react-declarative-lite/utils/hof/singleshot";
export { singlerun, Task } from "react-declarative-lite/utils/hof/singlerun";
export {
cancelable,
CANCELED_SYMBOL as CANCELED_PROMISE_SYMBOL,
} from "react-declarative-lite/utils/hof/cancelable";
export { debounce } from "react-declarative-lite/utils/hof/debounce";
export { queued } from "react-declarative-lite/utils/hof/queued";
export { cached } from "react-declarative-lite/utils/hof/cached";
export { memoize } from "react-declarative-lite/utils/hof/memoize";
export { trycatch } from "react-declarative-lite/utils/hof/trycatch";
export { sleep } from "react-declarative-lite/utils/sleep";
export { deepFlat } from "react-declarative-lite/utils/deepFlat";
export { BehaviorSubject } from "react-declarative-lite/utils/rx/BehaviorSubject";
export { EventEmitter } from "react-declarative-lite/utils/rx/EventEmitter";
export { Observer } from "react-declarative-lite/utils/rx/Observer";
export { Operator } from "react-declarative-lite/utils/rx/Operator";
export { Subject } from "react-declarative-lite/utils/rx/Subject";
export { Source } from "react-declarative-lite/utils/rx/Source";
export { getAvailableFields } from "react-declarative-lite/utils/getAvailableFields";
export { getInitialData } from "react-declarative-lite/utils/getInitialData";
export { getInvalidFields } from "react-declarative-lite/utils/getInvalidFields";
export { getFieldsError } from "react-declarative-lite/utils/getFieldsError";
export { getFieldVariant } from "react-declarative-lite/utils/getFieldVariant";
export { useDebounce } from "react-declarative-lite/components/One/hooks/useDebounce";
export { useDebouncedCallback } from "react-declarative-lite/components/One/hooks/useDebouncedCallback";
export { DatePicker } from "react-declarative-lite/components/common/DatePicker/DatePicker";
export { TimePicker } from "react-declarative-lite/components/common/TimePicker/TimePicker";
export { isInvalidFieldData } from "react-declarative-lite/utils/isInvalidFieldData";
import type TSubjectInternal from "react-declarative-lite/model/TSubject";
import TBehaviorSubjectInternal from "react-declarative-lite/model/TBehaviorSubject";
import TObserverInternal, {
TObservable as TObservableInternal,
} from "react-declarative-lite/model/TObserver";
export type TSubject<Data = void> = TSubjectInternal<Data>;
export type TObserver<Data = void> = TObserverInternal<Data>;
export type TObservable<Data = void> = TObservableInternal<Data>;
export type TBehaviorSubject<Data = unknown> = TBehaviorSubjectInternal<Data>;
export { createCustomTag } from "react-declarative-lite/utils/createCustomTag";
import * as datetimeInternal from "react-declarative-lite/utils/datetime";
export { waitForMove } from "react-declarative-lite/utils/waitForMove";
export const datetime: {
DATE_PLACEHOLDER: "DD/MM/YYYY";
TIME_PLACEHOLDER: "HH:MM";
DATE_EXPR: RegExp;
TIME_EXPR: RegExp;
Time: typeof datetimeInternal.Time;
Date: typeof datetimeInternal.Date;
parseDate: (date: string | null) => datetimeInternal.Date | null;
serializeDate: (date: datetimeInternal.Date | null) => string | null;
parseTime: (time: string | null) => datetimeInternal.Time | null;
serializeTime: (time: datetimeInternal.Time | null) => string | null;
currentDate: () => string;
currentTime: () => string;
timeStamp: (str?: string) => number;
dateStamp: (str?: string) => number;
};
export { compose } from "react-declarative-lite/utils/compose";
export {
getMomentStamp,
fromMomentStamp,
} from "react-declarative-lite/utils/getMomentStamp";
export {
getTimeStamp,
fromTimeStamp,
} from "react-declarative-lite/utils/getTimeStamp";
export { getGenesisStamp } from "react-declarative-lite/utils/getGenesisStamp";
export {
addUtcOffset,
removeUtcOffset,
} from "react-declarative-lite/utils/addUtcOffset";
}
declare module "react-declarative-lite/model/ISize" {
import IAnything from "react-declarative-lite/model/IAnything";
/**
* Represents a size with height and width dimensions.
*
* @interface
*/
export interface ISize {
height: number;
width: number;
}
/**
* Type definition for a callback function that handles size and data changes.
*
* @template Data - The type of data being passed to the callback function.
* @param data - The data being passed to the callback function.
* @param size - The size information.
* @param ref - The reference to the HTML div element.
* @returns A string representing the result of the callback function.
*/
export type ISizeCallback<Data = IAnything> = (
data: Data,
size: ISize,
ref: HTMLDivElement,
) => string;
export default ISize;
}
declare module "react-declarative-lite/model/TypedField" {
import IManaged, {
IManagedShallow,
} from "react-declarative-lite/model/IManaged";
import IEntity from "react-declarative-lite/model/IEntity";
import FieldType from "react-declarative-lite/model/FieldType";
import IAnything from "react-declarative-lite/model/IAnything";
/**
* Компоновки
*/
import { IFragmentLayoutProps } from "react-declarative-lite/components/One/layouts/FragmentLayout";
import { IDivLayoutProps } from "react-declarative-lite/components/One/layouts/DivLayout";
import { IBoxLayoutProps } from "react-declarative-lite/components/One/layouts/BoxLayout";
import { ITabsLayoutProps } from "react-declarative-lite/components/One/layouts/TabsLayout";
import { ICenterLayoutProps } from "react-declarative-lite/components/One/layouts/CenterLayout";
import { IStretchLayoutProps } from "react-declarative-lite/components/One/layouts/StretchLayout";
import { IGroupLayoutProps } from "react-declarative-lite/components/One/layouts/GroupLayout";
import { IOutlineLayoutProps } from "react-declarative-lite/components/One/layouts/OutlineLayout";
import { IPaperLayoutProps } from "react-declarative-lite/components/One/layouts/PaperLayout";
import { IExpansionLayoutProps } from "react-declarative-lite/components/One/layouts/ExpansionLayout";
import { IHeroLayoutProps } from "react-declarative-lite/components/One/layouts/HeroLayout";
import { IConditionLayoutProps } from "react-declarative-lite/components/One/layouts/ConditionLayout";
import { ICustomLayoutProps } from "react-declarative-lite/components/One/layouts/CustomLayout";
/**
* Поля ввода
*/
import { ICheckboxFieldProps } from "react-declarative-lite/components/One/fields/CheckboxField";
import { IIconFieldProps } from "react-declarative-lite/components/One/fields/IconField";
import { IButtonFieldProps } from "react-declarative-lite/components/One/fields/ButtonField";
import { IFileFieldProps } from "react-declarative-lite/components/One/fields/FileField";
import { IComboFieldProps } from "react-declarative-lite/components/One/fields/ComboField";
import { IComponentFieldProps } from "react-declarative-lite/components/One/fields/ComponentField";
import { IItemsFieldProps } from "react-declarative-lite/components/One/fields/ItemsField";
import { ILineFieldProps } from "react-declarative-lite/components/One/fields/LineField";
import { IProgressFieldProps } from "react-declarative-lite/components/One/fields/ProgressField";
import { IRadioFieldProps } from "react-declarative-lite/components/One/fields/RadioField";
import { IRatingFieldProps } from "react-declarative-lite/components/One/fields/RatingField";
import { ISliderFieldProps } from "react-declarative-lite/components/One/fields/SliderField";
import { ISwitchFieldProps } from "react-declarative-lite/components/One/fields/SwitchField";
import { ITextFieldProps } from "react-declarative-lite/components/One/fields/TextField";
import { IDateFieldProps } from "react-declarative-lite/components/One/fields/DateField";
import { ITimeFieldProps } from "react-declarative-lite/components/One/fields/TimeField";
import { ICompleteFieldProps } from "react-declarative-lite/components/One/fields/CompleteField";
import { ITypographyFieldProps } from "react-declarative-lite/components/One/fields/TypographyField";
import { IChooseFieldProps } from "react-declarative-lite/components/One/fields/ChooseField";
import { IYesNoFieldProps } from "react-declarative-lite/components/One/fields/YesNoField";
import { IInitFieldProps } from "react-declarative-lite/components/One/fields/InitField";
import { IDictFieldProps } from "react-declarative-lite/components/One/fields/DictField";
import { ITreeFieldProps } from "react-declarative-lite/components/One/fields/TreeField";
/**
* Исключения из правила
*/
import { IPhonyField } from "react-declarative-lite/model/IPhonyField";
/**
* Represents a class that excludes certain properties from a given type.
*
* @template Data - The type of data for the managed object.
* @template Payload - The type of payload for the managed object.
* @type Exclude<Data, Payload>
*/
type Exclude<Data = IAnything, Payload = IAnything> = Omit<
IManaged<Data, Payload>,
keyof IEntity<Data, Payload>
>;
/**
* A factory class for creating typed fields.
*
* @template Type - The type of field.
* @template Fields - The interface for the fields.
* @template Data - The type of data.
* @template Payload - The type of payload.
*/
type TypedFieldFactory<
Type extends FieldType,
Fields extends {},
Data = IAnything,
Payload = IAnything,
> = {
[Prop in keyof Omit<Fields, keyof Exclude<Data, Payload>>]?: Fields[Prop];
} & {
type: Type;
};
/**
* Represents a factory for creating typed fields with a shallow data structure.
*
* @template Type - The type of the field.
* @template Fields - The field definitions.
* @template Data - The data type.
* @template Payload - The payload type.
*
* @typedef TypedFieldFactoryShallow
* @property Type - The type of the field.
* @property Fields - The field definitions.
* @property Data - The data type.
* @property Payload - The payload type.
*/
type TypedFieldFactoryShallow<
Type extends FieldType,
Fields extends {},
Data = IAnything,
Payload = IAnything,
> = IManagedShallow<Data, Payload> &
TypedFieldFactory<Type, Fields, Data, Payload>;
type Group<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Group,
IGroupLayoutProps<Data, Payload>,
Data,
Payload
>;
type Custom<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Layout,
ICustomLayoutProps<Data, Payload>,
Data,
Payload
>;
type Paper<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Paper,
IPaperLayoutProps<Data, Payload>,
Data,
Payload
>;
type Outline<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Outline,
IOutlineLayoutProps<Data, Payload>,
Data,
Payload
>;
type Expansion<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Expansion,
IExpansionLayoutProps<Data, Payload>,
Data,
Payload
>;
type Fragment<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Fragment,
IFragmentLayoutProps<Data, Payload>,
Data,
Payload
>;
type Div<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Div,
IDivLayoutProps<Data, Payload>,
Data,
Payload
>;
type Box<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Box,
IBoxLayoutProps<Data, Payload>,
Data,
Payload
>;
type Tabs<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Tabs,
ITabsLayoutProps<Data, Payload>,
Data,
Payload
>;
type Hero<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Hero,
IHeroLayoutProps<Data, Payload>,
Data,
Payload
>;
type Center<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Center,
ICenterLayoutProps<Data, Payload>,
Data,
Payload
>;
type Stretch<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Stretch,
IStretchLayoutProps<Data, Payload>,
Data,
Payload
>;
type Condition<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Condition,
IConditionLayoutProps<Data, Payload>,
Data,
Payload
>;
type Line<Data = IAnything, Payload = IAnything> = TypedFieldFactory<
FieldType.Line,
ILineFieldProps<Data, Payload>,
Data,
Payload
>;
type Checkbox<
Data = IAnything,
Payload = IAnything,
> = TypedFieldFactoryShallow<
FieldType.Checkbox,
ICheckboxFieldProps<Data, Payload>,
Data,
Payload
>;
type Icon<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Icon,
IIconFieldProps<Data, Payload>,
Data,
Payload
>;
type Button<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Button,
IButtonFieldProps<Data, Payload>,
Data,
Payload
>;
type Combo<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Combo,
IComboFieldProps<Data, Payload>,
Data,
Payload
>;
type Component<
Data = IAnything,
Payload = IAnything,
> = TypedFieldFactoryShallow<
FieldType.Component,
IComponentFieldProps<Data, Payload>,
Data,
Payload
>;
type Items<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Items,
IItemsFieldProps<Data, Payload>,
Data,
Payload
>;
type Progress<
Data = IAnything,
Payload = IAnything,
> = TypedFieldFactoryShallow<
FieldType.Progress,
IProgressFieldProps<Data, Payload>,
Data,
Payload
>;
type Radio<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Radio,
IRadioFieldProps<Data, Payload>,
Data,
Payload
>;
type Rating<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Rating,
IRatingFieldProps<Data, Payload>,
Data,
Payload
>;
type Slider<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Slider,
ISliderFieldProps<Data, Payload>,
Data,
Payload
>;
type Switch<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Switch,
ISwitchFieldProps<Data, Payload>,
Data,
Payload
>;
type Text<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Text,
ITextFieldProps<Data, Payload>,
Data,
Payload
>;
type File<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.File,
IFileFieldProps<Data, Payload>,
Data,
Payload
>;
type Choose<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Choose,
IChooseFieldProps<Data, Payload>,
Data,
Payload
>;
type YesNo<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.YesNo,
IYesNoFieldProps<Data, Payload>,
Data,
Payload
>;
type Init<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Init,
IInitFieldProps,
Data,
Payload
>;
type Phony<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Phony,
IPhonyField,
Data,
Payload
>;
type Dict<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Dict,
IDictFieldProps,
Data,
Payload
>;
type Tree<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Tree,
ITreeFieldProps,
Data,
Payload
>;
type Date<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Date,
IDateFieldProps<Data, Payload>,
Data,
Payload
>;
type Time<Data = IAnything, Payload = IAnything> = TypedFieldFactoryShallow<
FieldType.Time,
ITimeFieldProps<Data, Payload>,
Data,
Payload
>;
type Complete<
Data = IAnything,
Payload = IAnything,
> = TypedFieldFactoryShallow<
FieldType.Complete,
ICompleteFieldProps<Data, Payload>,
Data,
Payload
>;
type Typography<
Data = IAnything,
Payload = IAnything,
> = TypedFieldFactoryShallow<
FieldType.Typography,
ITypographyFieldProps<Data, Payload>,
Data,
Payload
>;
/**
* Логическое ветвление компонентов
* Typescript type-guard
*/
export type TypedFieldRegistry<
Data = IAnything,
Payload = IAnything,
Target = any,
> =
Target extends Expansion<Data, Payload>
? Expansion<Data, Payload>
: Target extends Group<Data, Payload>
? Group<Data, Payload>
: Target extends Paper<Data, Payload>
? Paper<Data, Payload>
: Target extends Outline<Data, Payload>
? Outline<Data, Payload>
: Target extends Checkbox<Data, Payload>
? Checkbox<Data, Payload>
: Target extends Button<Data, Payload>
? Button<Data, Payload>
: Target extends Icon<Data, Payload>
? Icon<Data, Payload>
: Target extends Combo<Data, Payload>
? Combo<Data, Payload>
: Target extends Component<Data, Payload>
? Component<Data, Payload>
: Target extends Items<Data, Payload>
? Items<Data, Payload>
: Target extends Line<Data, Payload>
? Line<Data, Payload>
: Target extends Progress<Data, Payload>
? Progress<Data, Payload>
: Target extends Radio<Data, Payload>
? Radio<Data, Payload>
: Target extends Rating<Data, Payload>
? Rating<Data, Payload>
: Target extends Slider<Data, Payload>
? Slider<Data, Payload>
: Target extends Switch<Data, Payload>
? Switch<Data, Payload>
: Target extends Text<Data, Payload>
? Text<Data, Payload>
: Target extends File<Data, Payload>
? File<Data, Payload>
: Target extends Choose<Data, Payload>
? Choose<Data, Payload>
: Target extends YesNo<Data, Payload>
? YesNo<Data, Payload>
: Target extends Date<Data, Payload>
? Date<Data, Payload>
: Target extends Time<
Data,
Payload
>
? Time<Data, Payload>
: Target extends Complete<
Data,
Payload
>
? Complete<Data, Payload>
: Target extends Typography<
Data,
Payload
>
? Typography<Data, Payload>
: Target extends Fragment<
Data,
Payload
>
? Fragment<Data, Payload>
: Target extends Div<
Data,
Payload
>
? Div<Data, Payload>
: Target extends Custom<
Data,
Payload
>
? Custom<
Data,
Payload
>
: Target extends Box<
Data,
Payload
>
? Box<Data, Payload>
: Target extends Tabs<
Data,
Payload
>
? Tabs<
Data,
Payload
>
: Target extends Center<
Data,
Payload
>
? Center<
Data,
Payload
>
: Target extends Stretch<
Data,
Payload
>
? Stretch<
Data,
Payload
>
: Target extends Hero<
Data,
Payload
>
? Hero<
Data,
Payload
>
: Target extends Condition<
Data,
Payload
>
? Condition<
Data,
Payload
>
: Target extends Init<
Data,
Payload
>
? Init<
Data,
Payload
>
: Target extends Phony<
Data,
Payload
>
? Phony<
Data,
Payload
>
: Target extends Dict<
Data,
Payload
>
? Dict<
Data,
Payload
>
: Target extends Tree<
Data,
Payload
>
? Tree<
Data,
Payload
>
: never;
/**
* IOneProps - генерик, для прикладного программиста мы можем подменить IField
* на TypedField. Это позволит автоматически выбрать интерфейс props для
* IntelliSense после указания *type* или методом исключения
*/
export type TypedField<
Data = IAnything,
Payload = IAnything,
> = TypedFieldRegistry<Data, Payload> & {
name?: string;
fields?: TypedField<Data, Payload>[];
child?: TypedField<Data, Payload>;
};
export default TypedField;
}
declare module "react-declarative-lite/model/IValidation" {
/**
* Interface representing validation options for a form field.
* @interface
* @property [required] - Indicates if the field is required or not.
* @property [minLength] - Minimum length required for the field value.
* @property [maxLength] - Maximum length allowed for the field value.
* @property [pattern] - Regular expression pattern for validating the field value.
*/
export interface IValidation {
required?: boolean;
numeric?: boolean;
minLength?: number;
maxLength?: number;
minNum?: number;
maxNum?: number;
pattern?: RegExp;
date?: boolean;
time?: boolean;
}
export default IValidation;
}
declare module "react-declarative-lite/model/IInvalidField" {
import IAnything from "react-declarative-lite/model/IAnything";
import IField from "react-declarative-lite/model/IField";
export interface IInvalidField<Data = IAnything, Payload = IAnything> {
field: IField<Data, Payload>;
title: IField<Data, Payload>["title"];
name: IField<Data, Payload>["name"];
error: string;
}
export default IInvalidField;
}
declare module "react-declarative-lite/model/IField" {
import * as React from "react";
import { SxProps } from "@mui/material";
import type ComponentFieldInstance from "react-declarative-lite/model/ComponentFieldInstance";
import type { IDebug } from "react-declarative-lite/model/ComponentFieldInstance";
import { ISizeCallback } from "react-declarative-lite/model/ISize";
import FieldType from "react-declarative-lite/model/FieldType";
import IAnything from "react-declarative-lite/model/IAnything";
import ISearchItem from "react-declarative-lite/components/SearchView/model/ISearchItem";
import ISearchViewProps from "react-declarative-lite/components/SearchView/model/ISearchViewProps";
import IFieldMenu from "react-declarative-lite/model/IFieldMenu";
import ITreeNode from "react-declarative-lite/model/ITreeNode";
import IValidation from "react-declarative-lite/model/IValidation";
/**
* Represents any possible variable value of <One /> component field.
*
* @typedef Value - Represents a value in JavaScript.
*/
export type Value = string | string[] | number | boolean | null;
/**
* Объект поля для прикладного программиста
*/
export interface IField<Data = IAnything, Payload = IAnything> {
/**
* Иконка для FieldType.Button и FieldType.Icon
*/
icon?: React.ComponentType<any>;
/**
* Размер иконки для FieldType.Icon
*/
iconSize?: number;
/**
* Цвет иконки для FieldType.Icon
*/
iconColor?:
| "inherit"
| "default"
| "primary"
| "secondary"
| "error"
| "info"
| "success"
| "warning";
/**
* Цвет фона иконки для FieldType.Icon
*/
iconBackground?:
| "inherit"
| "primary"
| "secondary"
| "success"
| "error"
| "info"
| "warning";
/**
* Тип заливки кнопки для FieldType.Button
*/
buttonVariant?: "text" | "outlined" | "contained";
/**
* Тип размера кнопки для FieldType.Button
*/
buttonSize?: "small" | "medium" | "large";
/**
* Тип цвета кнопки для FieldType.Button
*/
buttonColor?:
| "inherit"
| "primary"
| "secondary"
| "success"
| "error"
| "info"
| "warning";
/**
* Отменяет ожидание фокуса для валидации
*/
dirty?: boolean;
/**
* Параметры фабрики для создания коллбека isInvalid
*/
validation?: IValidation;
/**
* Атрибут, который будет передат в data-testid
* корневому элементу компоновки
*/
testId?: string;
/**
* Общие поля. Поле name позволяет задать забор
* поля из целевого объекта, не нужен для group,
* expansion и line.
*/
name?: string;
/**
* Коллбек для отладки
*/
debug?: (params: IDebug<Data, Payload>) => void;
/**
* Позволяет создать контекстное меню
*/
menuItems?: IFieldMenu[];
/**
* Флаг, убирающий поле из древа отрисовки. Следует использовать для
* создания динамических значений полей компонента
*/
hidden?: boolean | ((payload: Payload) => boolean);
/**
* Исключает группу из DOM древа на телефоне
*/
phoneHidden?: boolean | ((payload: Payload) => boolean);
/**
* Исключает группу из DOM древа на планшете
*/
tabletHidden?: boolean | ((payload: Payload) => boolean);
/**
* Исключает группу из DOM древа на компьютере
*/
desktopHidden?: boolean | ((payload: Payload) => boolean);
/**
* Список бизнес-функций, необходимых для отображения поля
*/
features?: string[];
/**
* Отключает нижний baseline для текущей компоновки
*/
noBaseline?: boolean;
/**
* Принудительно включает нижний baseline для текущей компоновки
*/
baseline?: boolean;
/**
* Флаг, удерживающий подпись текстового поля при пустом
* значении
*/
labelShrink?: boolean;
/**
* Коллбеки, вызываемый при фокусировке и потере фокуса.
* Подразумевается изменение формы со стороны прикладного
* программиста, а не работа с полем ввода
* (например, обновление ссылки на изображение)
*/
focus?: (
name: string,
data: Data,
payload: Payload,
onValueChange: (value: Value) => void,
onChange: (data: Data) => void,
) => void;
blur?: (
name: string,
data: Data,
payload: Payload,
onValueChange: (value: Value) => void,
onChange: (data: Data) => void,
) => void;
/**
* Коллбек для обработки клика по элементу контекстного меню
*/
menu?: (
name: string,
action: string,
data: Data,
payload: Payload,
onValueChange: (value: Value) => void,
onChange: (data: Data) => void,
) => void;
/**
* Перехват клика по полю, следует использовать для копирования значения
* у карточек просмотра без редактирования
*/
click?: (
name: string,
e: React.MouseEvent<HTMLElement>,
data: Data,
payload: Payload,
onValueChange: (value: Value) => void,
onChange: (data: Data) => void,
) => void | Promise<void>;
/**
* Флаг только на чтение и "круглой окаймовки"
*/
readonly?: boolean;
outlined?: boolean;
/**
* Передает ссылку при перерисовках
*/
groupRef?: (element?: HTMLDivElement | null) => void;
inputRef?: (element?: HTMLInputElement | null) => void;
/**
* Автофокус и постоянное отключение поля
*/
autoFocus?: boolean;
disabled?: boolean;
/**
* Поле, специфичное для RadioField и позволяющее
* задать значение при выборе элемента кликом
*/
radioValue?: string;
/**
* Отключает цвет для Switch
*/
switchNoColor?: boolean;
/**
* Применяет к Switch второй title
*/
switchActiveLabel?: string;
/**
* Поле type для MatTextField
*/
inputType?: keyof {
text: never;
color: never;
date: never;
email: never;
month: never;
number: never;
password: never;
search: never;
tel: never;
time: never;
url: never;
week: never;
};
/**
* Паттерн для MatTextField
* (inputmode: 'decimal' и pattern: '[0-9.,]+' добавят запятую на iOS клавиатуре)
*/
inputPattern?: string;
/**
* Поле inputmode для MatTextField
*/
inputMode?: keyof {
none: never;
text: never;
tel: never;
url: never;
email: never;
numeric: never;
decimal: never;
search: never;
};
/**
* Форматтер, преобразующий пользовательский
* ввод к нужному шаблону
*/
inputFormatter?: (input: string) => string;
/**
* Шаблонов для форматтера
*/
inputFormatterTemplate?: string;
/**
* Разделитель шаблона форматтера,
* по дефолту 0
*/
inputFormatterSymbol?: string;
/**
* Разрешенные к вводу символы
*/
inputFormatterAllowed?: RegExp | ((char: string, idx: number) => boolean);
/**
* Замена символов для форматерра, например
* запятую на точку в числе
*/
inputFormatterReplace?: (char: string) => string | null;
inputAutocomplete?: keyof {
"new-password": never;
on: never;
off: never;
false: never;
};
/**
* Список вкладок для TabLayout
*/
tabList?: string[];
/**
* Номер активной вкладки по-умолчанию
*/
tabIndex?: number;
/**
* Вариант вывода вкладок для TabLayout
*/
tabVariant?: "fullWidth" | "standard" | "scrollable";
/**
* Цвет вкладок для TabLayout
*/
tabColor?: "primary" | "secondary";
/**
* Позволяет содержимому растягивать высоту блока
* у TabLayout
*/
tabKeepFlow?: boolean;
/**
* Событие изменения вкладки
*/
tabChange?: (idx: number) => void;
/**
* Отделяет табы отчерком у TabLayout
*/
tabLine?: boolean;
/**
* Закрашивает фон TabLayout в темный цвет
*/
tabBackground?: boolean;
/**
* Делает TextField многострочным, если
* inputRows больше единицы
*/
inputRows?: number;
/**
* Ripple эффект для иконок
*/
leadingIconRipple?: boolean;
trailingIconRipple?: boolean;
/**
* Иконки для MatTextField
*/
leadingIcon?: React.ComponentType<any>;
trailingIcon?: React.ComponentType<any>;
/**
* При клике на иконку мы можем запросить данные из модального
* окна, расположенного в коде прикладного программиста. Коллбек
* получает на вход текущее значение поля и функцию onChange...
*/
leadingIconClick?: (
value: Value,
data: Data,
payload: Payload,
onValueChange: (v: Value) => void,
onChange: (data: Data) => void,
) => void;
trailingIconClick?: (
val