#AddSubModelButton
Dùng để thêm subModel (sub-model) vào FlowModel đã chỉ định. Hỗ trợ nhiều cách cấu hình như tải bất đồng bộ, nhóm, submenu, quy tắc kế thừa model tùy chỉnh, v.v.
#Props
interface AddSubModelButtonProps {
model: FlowModel;
subModelKey: string;
subModelType?: 'object' | 'array';
items?: SubModelItemsType;
subModelBaseClass?: string | ModelConstructor;
subModelBaseClasses?: Array<string | ModelConstructor>;
afterSubModelInit?: (subModel: FlowModel) => Promise<void>;
afterSubModelAdd?: (subModel: FlowModel) => Promise<void>;
afterSubModelRemove?: (subModel: FlowModel) => Promise<void>;
children?: React.ReactNode;
keepDropdownOpen?: boolean;
}| Tham số | Kiểu | Mô tả |
|---|---|---|
model | FlowModel | Bắt buộc. Model đích để thêm subModel. |
subModelKey | string | Bắt buộc. Tên key của subModel trong model.subModels. |
subModelType | 'object' | 'array' | Loại cấu trúc dữ liệu của subModel, mặc định là 'array'. |
items | SubModelItem[] | (ctx) => SubModelItem[] | Promise<...> | Định nghĩa mục menu, hỗ trợ sinh tĩnh hoặc bất đồng bộ. |
subModelBaseClass | string | ModelConstructor | Chỉ định một lớp cơ sở, liệt kê tất cả model kế thừa lớp này làm mục menu. |
subModelBaseClasses | (string | ModelConstructor)[] | Chỉ định nhiều lớp cơ sở, tự động liệt kê model kế thừa theo nhóm. |
afterSubModelInit | (subModel) => Promise<void> | Callback sau khi subModel khởi tạo. |
afterSubModelAdd | (subModel) => Promise<void> | Callback sau khi subModel được thêm. |
afterSubModelRemove | (subModel) => Promise<void> | Callback sau khi subModel bị xóa. |
children | React.ReactNode | Nội dung nút, có thể tùy chỉnh thành chữ hoặc biểu tượng. |
keepDropdownOpen | boolean | Có giữ menu thả xuống mở sau khi thêm hay không. Mặc định tự động đóng. |
#Định nghĩa kiểu SubModelItem
interface SubModelItem {
key?: string;
label?: string;
type?: 'group' | 'divider';
disabled?: boolean;
hide?: boolean | ((ctx: FlowModelContext) => boolean | Promise<boolean>);
icon?: React.ReactNode;
children?: SubModelItemsType;
useModel?: string;
createModelOptions?: {
props?: Record<string, any>;
stepParams?: Record<string, any>;
};
toggleable?: boolean | ((model: FlowModel) => boolean);
}| Trường | Kiểu | Mô tả |
|---|---|---|
key | string | Định danh duy nhất. |
label | string | Văn bản hiển thị. |
type | 'group' | 'divider' | Nhóm hoặc dấu phân cách. Khi bỏ qua là mục thông thường hoặc submenu. |
disabled | boolean | Có vô hiệu hóa mục hiện tại. |
hide | boolean | (ctx) => boolean | Promise<boolean> | Ẩn động (trả về true biểu thị ẩn). |
icon | React.ReactNode | Nội dung biểu tượng. |
children | SubModelItemsType | Mục submenu, dùng để lồng nhóm hoặc submenu. |
useModel | string | Chỉ định loại Model được dùng (tên đăng ký). |
createModelOptions | object | Tham số khi khởi tạo model. |
toggleable | boolean | (model: FlowModel) => boolean | Dạng switch, đã thêm thì xóa, chưa thêm thì thêm (chỉ cho phép một). |

