@commercelayer/react-components
Version:
The Official Commerce Layer React Components
81 lines (80 loc) • 3.62 kB
TypeScript
import type { Address, Order } from "@commercelayer/sdk";
import type { Dispatch } from "react";
import type { TResourceError } from "../components/errors/Errors";
import type { AddressValuesKeys } from "../context/BillingAddressFormContext";
import type { CommerceLayerConfig } from "../context/CommerceLayerContext";
import type { BaseError, CodeErrorType } from "../typings/errors";
import type { AddressInputName } from "../typings/index";
import type { TCustomerAddress } from "./CustomerReducer";
import type { updateOrder } from "./OrderReducer";
export type CustomFieldMessageError = (props: {
field: Extract<AddressValuesKeys, AddressInputName> | string;
code?: Extract<CodeErrorType, "EMPTY_ERROR" | "VALIDATION_ERROR"> | undefined;
message?: string | undefined;
value: string;
values?: Record<string, any>;
}) => string | null | Array<{
field: Extract<AddressValuesKeys, AddressInputName> | string;
value: string;
isValid: boolean;
message?: string;
}>;
export type AddressActionType = "setErrors" | "setAddress" | "setShipToDifferentAddress" | "setCloneAddress" | "cleanup";
export type AddressField = "city" | "company" | "country_code" | "first_name" | "last_name" | "line_1" | "line_2" | "phone" | "state_code" | "zip_code" | "billing_info";
export type AddressFieldView = AddressField | "full_address" | "full_name";
export declare const addressFields: AddressField[];
export type AddressResource = Extract<TResourceError, "billing_address" | "shipping_address">;
export type AddressSchema = Omit<Address, "created_at" | "updated_at" | "id" | "type">;
export interface AddressActionPayload {
errors: BaseError[];
billing_address: TCustomerAddress;
shipping_address: TCustomerAddress;
shipToDifferentAddress: boolean;
billingAddressId: string;
shippingAddressId: string;
isBusiness: boolean;
invertAddresses: boolean;
}
export type AddressState = Partial<AddressActionPayload>;
export interface AddressAction {
type: AddressActionType;
payload: Partial<AddressActionPayload>;
}
export declare const addressInitialState: AddressState;
export type SetAddressErrors = <V extends BaseError[]>(args: {
errors: V;
resource: Extract<TResourceError, "billing_address" | "shipping_address">;
dispatch?: Dispatch<AddressAction>;
currentErrors?: V;
}) => void;
export interface SetAddressParams<V extends TCustomerAddress> {
values: V;
resource: AddressResource;
dispatch?: Dispatch<AddressAction>;
}
export declare const setAddressErrors: SetAddressErrors;
export declare function setAddress<V extends TCustomerAddress>({ values, resource, dispatch, }: SetAddressParams<V>): void;
type SetCloneAddress = (id: string, resource: AddressResource, dispatch: Dispatch<AddressAction>) => void;
export declare const setCloneAddress: SetCloneAddress;
export interface ICustomerAddress {
id: string | undefined;
resource: AddressResource;
}
interface TSaveAddressesParams {
orderId?: string;
order?: Order | null;
updateOrder?: typeof updateOrder;
config: CommerceLayerConfig;
state: AddressState;
dispatch: Dispatch<AddressAction>;
getCustomerAddresses?: () => Promise<void>;
customerEmail?: string;
customerAddress?: ICustomerAddress;
}
export declare function saveAddresses({ config, updateOrder, order, state, customerEmail, customerAddress, }: TSaveAddressesParams): Promise<{
success: boolean;
order?: Order;
error?: unknown;
}>;
declare const addressReducer: (state: AddressState, reducer: AddressAction) => AddressState;
export default addressReducer;