///
import { LayoutConfig } from "../../pro/Selector/types.js";
import { SKUCardPresentation } from "../../pro/Cards/components/SKUCard/types.js";
//#region src/plus/skuOptionsSelection/types.d.ts
interface SKUOptionsSelectionGroupHeaderDefaults {
readonly title: React.ReactNode;
readonly requiredTag: React.ReactNode;
readonly hint: React.ReactNode;
readonly aggregate: React.ReactNode;
}
interface SKUOptionsSelectionPresentation {
/** SelectorGroup 的规格组导航。 */
groupTabs?: {
visible?: boolean;
};
/** 规格组之间和标题行的展示方式。 */
group?: {
gap?: number | string;
headerClassName?: string;
showRequiredTag?: boolean;
showHint?: boolean;
showAggregate?: boolean;
};
/** 复用 Selector 的现有布局模型,支持固定列和响应式断点。 */
collection?: LayoutConfig;
/** 复用 SKUCard 的结构展示能力。 */
card?: SKUCardPresentation;
/** 数量选择器的展示尺寸;颜色仍由系统主题控制。 */
stepper?: {
size?: 'small' | 'middle' | 'large';
shape?: 'round' | 'square';
horizontalPadding?: number | string;
};
}
interface SKUOptionsSelectionBehavior {
single?: {
/** 默认 true,保持历史再次点击可取消的行为。 */allowDeselect?: boolean;
};
validation?: {
scrollToFirstError?: boolean;
};
}
interface SKUOptionsSelectionSlots {
groupHeader?: (context: {
readonly group: OptionGroupItem | VariantGroupItem | BundleItem;
readonly defaults: SKUOptionsSelectionGroupHeaderDefaults;
}) => React.ReactNode;
}
/**
* SKU Card 文本样式配置
*/
interface SkuCardTextConfig {
/** 是否显示 */
visible?: boolean;
/** 字体大小 */
fontSize?: number;
/** 颜色 */
color?: string;
/** 字体粗细 */
fontWeight?: 'normal' | 'bold' | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
/** 展示行数 */
lineClamp?: number;
}
/**
* SKU Card 图片配置
*/
interface SkuCardImageConfig {
/** 是否显示 */
visible?: boolean;
/** 宽度 */
width?: number;
/** 高度 */
height?: number;
/** 圆角 */
borderRadius?: number | string;
/** 边框 */
border?: string;
}
/**
* SKU Card 禁用文本配置
*/
interface SkuCardDisabledTextConfig extends Omit {
/** 文本(可能是多语言) */
text?: string;
}
/**
* SKU Card 配置
*/
interface SkuCardConfig {
/** 主标题配置 */
title?: SkuCardTextConfig;
/** 副标题配置 */
subTitle?: SkuCardTextConfig;
/** 价格配置 */
price?: Omit;
/** 图片配置 */
image?: SkuCardImageConfig;
/**
* @description 是否在「组合规格选项卡片(VariantCard)」展示价格
* - 默认不展示,避免影响现有业务 UI
*/
variantPriceVisible?: boolean;
/** 禁用文本配置 */
disabledText?: SkuCardDisabledTextConfig;
}
interface IProps {
/** 数据源 */
dataSource: DataSource;
/** 原始值 */
value: SkuValue;
/** 根 SelectorGroup className。 */
className?: string;
/** 禁用整个选择器,包括鼠标与键盘交互。 */
disabled?: boolean;
/** 配置 */
config?: {
/** 是否禁用 */overSold?: 0 | 1;
};
/** SKU Card 配置 */
skuCardConfig?: SkuCardConfig;
/** 选中变更回调 */
onChange: (value: SkuValue) => void;
/** 自定义滚动容器 */
customScrollParent?: HTMLElement | string;
/** 自定义样式 */
style?: React.CSSProperties;
/** 自定义配置 */
customConfig?: {
/** 弹窗宽度 */modalWidth?: number | string; /** 弹窗展示形态 */
modalRenderType?: 'modal' | 'drawer'; /** 选项布局 */
selectorLayout?: LayoutConfig | null;
};
/** 可选展示契约;不传时保持既有 DOM、样式与行为。 */
presentation?: SKUOptionsSelectionPresentation;
/** 可选交互策略;不传时保持既有行为。 */
behavior?: SKUOptionsSelectionBehavior;
/** 复杂展示的插槽;优先级高于 presentation。 */
slots?: SKUOptionsSelectionSlots;
/** 主题 */
theme: {
token?: {
colorPrimary?: string;
colorPrimaryBg?: string;
};
};
}
interface SKUOptionsSelectionRef {
validate: () => Promise>;
getValues: () => Record;
getTransformValues: () => SkuValue;
}
interface DataSource {
/** 商品id */
id?: number;
/** 生产编码 */
production_code?: string;
/** 单规格组数据 */
option_group?: Array;
/** 组合规格组装后的数据 */
variant?: Array;
/** 组合规格组数据 */
variant_group?: Array;
/** 套餐商品组数据 */
bundle_group?: Array;
}
interface OptionGroupMetadata {
/** 是否启用高级设置 */
advanced_settings_enabled?: 0 | 1;
/** Option 种类数限制 */
option_types_config?: {
min?: number;
max?: number;
[key: string]: unknown;
};
/** 保留后端返回的其他元数据 */
[key: string]: unknown;
}
/**
* 单规格组数据
*/
interface OptionGroupItem {
/** 创建者id */
create_account_id?: number;
/** 创建时间 */
created_at?: string;
/** 删除时间 */
deleted_at?: string | null;
/** 模板id */
template_id?: number;
/** 更新者id */
update_account_id?: number;
/** 更新时间 */
updated_at?: string;
/** 单规格组id */
id?: number;
/** 是否启用 */
is_enabled?: 0 | 1;
/** 是否多选 */
is_multiple?: 0 | 1;
/** 最大选择数量 */
max_quantity?: number;
/** 最小选择数量 */
min_quantity?: number;
/** 高级设置元数据 */
metadata?: OptionGroupMetadata;
/** 单规格组名称 */
name?: string;
/** 单规格组下规格数据 */
option_item?: Array;
/** 商品id */
product_id?: number;
/** 是否必选 */
required?: 0 | 1;
/** 店铺id */
shop_id?: number;
/** 排序 */
sort?: number;
/** 状态 */
status?: 0 | 1;
}
/**
* 单规格组下选项数据
*/
interface OptionItem {
/** 创建者id */
create_account_id?: number;
/** 创建时间 */
created_at?: string;
/** 删除时间 */
deleted_at?: string | null;
/** 模板id */
template_id?: number;
/** 更新者id */
update_account_id?: number;
/** 更新时间 */
updated_at?: string;
/** 加价 */
add_price?: string;
/** 封面 */
cover?: string;
/** 描述 */
description?: string;
/** 规格id */
id?: number;
/** 是否启用 */
is_enabled?: 0 | 1;
/** 最大选择数量 */
max_quantity?: number;
/** 最小选择数量 */
min_quantity?: number;
/** 规格名称 */
name?: string;
/** 规格组id */
option_group_id?: number;
/** 原价 */
original_price?: string;
/** 商品id */
product_id?: number;
/** 生产编码 */
production_code?: string;
/** 店铺id */
shop_id?: number;
/** 排序 */
sort?: number;
/** 状态 */
status?: 0 | 1;
}
/**
* 组合规格组数据
*/
interface VariantGroupItem {
/** 创建者id */
create_account_id?: number;
/** 创建时间 */
created_at?: string;
/** 删除时间 */
deleted_at?: string | null;
/** 更新者id */
update_account_id?: number;
/** 更新时间 */
updated_at?: string;
/** 组合规格组id */
id?: number;
/** 组合规格组名称 */
name?: string;
/** 位置id */
position_id?: number;
/** 商品id */
product_id?: number;
/** 店铺id */
shop_id?: number;
/** 排序 */
sort?: number;
/** 状态 */
status?: 0 | 1;
/** 组合规格组下选项数据 */
variant_item?: Array;
}
/**
* 组合规格组下选项数据
*/
interface VariantItem {
/** 创建者id */
create_account_id?: number;
/** 创建时间 */
created_at?: string;
/** 删除时间 */
deleted_at?: string | null;
/** 更新者id */
update_account_id?: number;
/** 更新时间 */
updated_at?: string;
/** 店铺id */
shop_id?: number;
/** 排序 */
sort?: number;
/** 规格id */
id?: number;
/** 是否默认 */
is_default?: 0 | 1;
/** 变体名称 */
name?: string;
/** 位置id */
position_id?: number;
/** 商品id */
product_id?: number;
/** 状态 */
status?: 0 | 1;
/** 组合规格组id */
variant_group_id?: number;
}
/**
* 组合规格商品数据
*/
interface VariantProductItem {
/** 创建者id */
create_account_id?: number;
/** 创建时间 */
created_at?: string;
/** 更新者id */
update_account_id?: number;
/** 更新时间 */
updated_at?: string;
/** 条形码 */
barcode?: string;
/** 基础价格 */
base_price?: string;
/** 箱规数量 */
box_specification_quantity?: number;
/** 编码 */
code?: string;
/** 成本价格 */
cost_price?: string;
/** 封面 */
cover?: string;
/** 描述 */
description?: string | null;
/** 是否禁用 */
disabled?: 0 | 1;
/** 组合规格商品id */
id?: number;
/** 是否收税 */
is_charge_tax?: 0 | 1;
/** 是否发货 */
is_delivery?: 0 | 1;
/** 是否收税 */
is_gst?: 0 | 1;
/** 是否跟踪库存 */
is_track?: 0 | 1;
/** 名称 */
name?: Record;
/** 开售重量 */
open_sold_weight?: number;
/** 原价 */
original_price?: string;
/** 是否超卖 */
over_sold?: 0 | 1;
/** 价格 */
price?: string;
/** 商品id */
product_id?: number;
/** 生产编码 */
production_code?: string;
/** 折扣类型 */
rebate_type?: string;
/** 折扣值 */
rebate_value?: number;
/** 标题 */
title?: Record;
/** 单位 */
unit?: string;
/** 单位值 */
unit_value?: number;
/** 重量单位 */
weight_unit?: string;
/** 重量值 */
weight_value?: string;
}
/**
* 套餐商品组数据
*/
interface BundleGroupItem {
/** 店铺id */
shop_id?: number;
/** 排序 */
sort?: number;
/** 套餐id */
id?: number;
/** 最大选择数量 */
max_quantity?: number;
/** 最小选择数量 */
min_quantity?: number;
/** 套餐名称 */
name?: string;
/** 商品id */
product_id?: number;
/** 套餐商品组数据 */
bundle_item?: Array;
}
/**
* 套餐商品组下选项数据
*/
interface BundleItem {
/** 店铺id */
shop_id?: number;
/** 排序 */
sort?: number;
/** 条形码 */
barcode?: string;
/** 套餐商品id */
bundle_product_id?: number;
/** 套餐商品变体id */
bundle_variant_id?: number;
/** 编码 */
code?: string;
/** 封面 */
cover?: string;
/** 扩展id */
extension_id?: number;
/** 扩展类型 */
extension_type?: string;
/** 套餐商品组id */
group_id?: number;
/** 套餐商品id */
id: string | number;
/** 是否跟踪库存 */
is_track?: 0 | 1;
/** 最大选择数量 */
max_quantity?: number;
/** 单规格组数据 */
option_group?: Array;
/** 是否允许超卖 */
over_sold?: 0 | 1;
/** 价格 */
price?: string;
/** 价格类型: mark_up==>加价 | mark_down==>减价 */
price_type?: 'mark_up' | 'mark_down';
/** 价格类型扩展: product_price==>商品价格 */
price_type_ext?: '' | 'product_price';
/** 商品id */
product_id?: number;
/** 生产编码 */
production_code?: string;
/** 商品价格 */
product_price?: string;
/** 商品副标题 */
product_subtitle?: string;
/** 库存数量 */
stock_quantity?: number;
/** 标题 */
title?: string;
}
/**
* sku value
*/
interface SkuValue {
/** 商品id */
product_id: number;
/** 多规格商品id */
product_variant_id: number;
/** 多规格商品选项字符串 */
product_option_string?: string;
/** 当前商品或组合规格商品的生产编码 */
production_code?: string;
/** 套餐商品组数据 */
bundle: Array;
/** 价格 */
price?: string | number;
/** 单规格组数据 */
option: Array;
}
//#endregion
export { IProps, SKUOptionsSelectionBehavior, SKUOptionsSelectionPresentation, SKUOptionsSelectionRef, SKUOptionsSelectionSlots, SkuValue };