UNPKG

@etsoo/materialui

Version:

TypeScript Material-UI Implementation

108 lines (107 loc) 2.89 kB
import { AddressCity, AddressDistrict, AddressRegionDb, AddressState, IApiPayload } from "@etsoo/appscript"; import React from "react"; import { ResponsiveStyleValue } from "./ResponsiveStyleValue"; import { RegionsRQ } from "./RegionsRQ"; import { GridSize } from "@mui/material/Grid"; /** * Address field */ export declare enum AddressField { Region = "region", State = "state", City = "city", District = "district" } type AddressFieldType<F extends AddressField> = F extends AddressField.Region ? [F, AddressRegionDb | null] : F extends AddressField.State ? [F, AddressState | null] : F extends AddressField.City ? [F, AddressCity | null] : [F, AddressDistrict | null]; type AddressFavorType<F extends AddressField> = F extends AddressField.Region | AddressField.State ? string : number; /** * Address selector props */ export type AddressSelectorProps = { /** * Address API */ api: { regions(rq: RegionsRQ, payload?: IApiPayload<AddressRegionDb[]>): Promise<AddressRegionDb[] | undefined>; states(regionId: string, favoredIds?: string[], payload?: IApiPayload<AddressState[]>, culture?: string): Promise<AddressState[] | undefined>; cities(stateId: string, favoredIds?: number[], payload?: IApiPayload<AddressCity[]>, culture?: string): Promise<AddressCity[] | undefined>; districts(cityId: number, favoredIds?: number[], payload?: IApiPayload<AddressDistrict[]>, culture?: string): Promise<AddressDistrict[] | undefined>; }; /** * Break points */ breakPoints?: ResponsiveStyleValue<GridSize>; /** * City */ city?: number; /** * City label */ cityLabel?: string; /** * District */ district?: number; /** * District label */ districtLabel?: string; /** * Error */ error?: boolean; /** * Get favored ids * @param field Field * @returns Result */ favoredIds?: <F extends AddressField>(field: F) => AddressFavorType<F>[]; /** * The helper text content. */ helperText?: React.ReactNode; /** * Hide the region */ hideRegion?: boolean; /** * Label */ label?: string; /** * Onchange hanlder * @param event Event */ onChange?: <F extends AddressField>(event: AddressFieldType<F>) => void; /** * Country or region */ region?: string; /** * Region label */ regionLabel?: string; /** * Required */ required?: boolean; /** * Search mode */ search?: boolean; /** * State */ state?: string; /** * State label */ stateLabel?: string; }; /** * Address selector * @param props Props */ export declare function AddressSelector(props: AddressSelectorProps): import("react/jsx-runtime").JSX.Element; export {};