ideaz-element
Version:
<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>
73 lines (71 loc) • 2.5 kB
TypeScript
import { ButtonProps, ElForm, TableColumnCtx, dropdownItemProps, dropdownProps } from 'element-plus';
import { ExtractPropTypes, Ref, VNode } from 'vue';
import { OptionsItem } from './common';
import { FormColumn } from './form';
export type BtnItem = Partial<Omit<ButtonProps, 'type' | 'disabled'>> & {
type?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'dropdown';
disabled?: ((scope: TableColumnScopeData) => boolean) | boolean;
hide?: ((scope: TableColumnScopeData) => boolean) | boolean;
onClick?: (scope: TableColumnScopeData) => void;
children?: BtnItem;
reference?: string | ((scope: TableColumnScopeData) => VNode);
onCommand?: (command: string) => void;
[propName: string]: any;
} & Partial<ExtractPropTypes<typeof dropdownItemProps>> & Omit<Partial<ExtractPropTypes<typeof dropdownProps>>, 'type'>;
export interface ToolBar {
uncheck?: string[];
exclude?: string[];
refresh?: boolean;
fullScreen?: boolean;
density?: boolean;
setting?: boolean;
}
export interface TableFormConfig {
columns: FormColumn[];
[propName: string]: any;
}
export interface DefaultButtonOperation {
renderEdit: BtnItem;
renderSave: BtnItem;
renderCancel: BtnItem;
renderDelete: BtnItem;
}
export type ButtonRender<T = any> = (renderData: DefaultButtonOperation, tableData: Ref<T>) => BtnItem[];
export interface TableCol<T = any> extends Partial<Omit<TableColumnCtx<T>, 'label'>> {
slot?: string;
label?: string | ((scope: TableColumnScopeData) => VNode);
type?: 'index' | 'selection' | 'radio' | 'expand' | 'sort' | 'button';
component?: string | (() => string);
buttons?: BtnItem[] | ButtonRender<T>;
fieldProps?: {
[propName: string]: any;
};
options?: OptionsItem[];
dropdown?: number | number[] | {
maxlength?: number;
exclude?: number[];
dropdownItem?: {
[propName: string]: any;
};
reference?: string | any;
[propName: string]: any;
} | any;
add?: boolean | FormColumn;
edit?: boolean | FormColumn;
detail?: boolean | any;
search?: boolean | FormColumn;
form?: FormColumn;
__uid?: string;
[propName: string]: any;
}
export interface TableColumnScopeData<T = any> {
row: T;
column: TableColumnCtx<T>;
$index: number;
}
export interface EditableTableEventParams<T = any> {
row: T;
$index: number;
column: TableColumnCtx<T>;
formRef: typeof ElForm;
}