@commercelayer/react-components
Version:
The Official Commerce Layer React Components
81 lines (80 loc) • 3.61 kB
TypeScript
import type { Dispatch } from 'react';
import type { CodeErrorType, BaseError } from '../typings/errors';
import type { CommerceLayerConfig } from '../context/CommerceLayerContext';
import type { Address, Order } from '@commercelayer/sdk';
import type { updateOrder } from './OrderReducer';
import type { TCustomerAddress } from './CustomerReducer';
import type { TResourceError } from '../components/errors/Errors';
import type { AddressValuesKeys } from '../context/BillingAddressFormContext';
import type { AddressInputName } from '../typings/index';
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;