@etsoo/materialui
Version:
TypeScript Material-UI Implementation
108 lines (107 loc) • 2.89 kB
TypeScript
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 {};