import { FunctionComponent, ReactNode } from 'react' export interface SkuProps { /** * @description 样式名称 * @default '' */ className?: string /** * @description 默认选中的商品名称 */ goodsId?: number /** * @description 规格变化触发,回掉返回选中项商品,首次渲染没有传入`goodsId`,会触发 */ onChange?: (goods?: IGoodItem) => void /** * @description 点击sku`disabled`的属性项触发 */ clickAttrDisable?: (goods?: IGoodItem) => void /** * @description 不可选sku项样式名称 */ disabledClassName?: string /** * @description 选中sku项样式名称 */ activeClassName?: string /** * @description 产品包含的所有商品列表 */ goodsList: IGoodItem[] /** * @description 规格列表 */ sku: ISkuItem[] /** * @description 自定义规格项的内部渲染 */ itemRender?: (attr: IAttrItem) => ReactNode /** * @description 自定义当前规格项组合(即商品)是否可选, 回掉参数为空的时候直接返回true */ itemDisable?: (goodsItem?: IGoodItem) => boolean } /** * @title 商品项 IGoodItem * @description 其它属性不限 */ export type IGoodItem = { /** * @description 商品ID */ id: number /** * @description 对应每个sku的ID */ skuIds: number[] /** * @description 是否不可选择 */ disabled?: boolean } & Record /** * @title Sku项 ISkuItem * @description 其它属性不限, 须要保证不同类别的sku的id都是唯一的 */ export type ISkuItem = { /** * @description Sku ID */ id: number /** * @description Sku 名称 */ name: string /** * @description Sku 属性枚举 */ items: IAttrItem[] } & Record /** * @title Sku属性项 IAttrItem * @description 其它属性不限 */ export type IAttrItem = { /** * @description 属性ID */ id: number /** * @description 属性名称 */ name: string } & Record declare const Sku: FunctionComponent export { Sku }