UNPKG

@commercelayer/react-components

Version:
81 lines (80 loc) 3.62 kB
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;