
const label = '可编辑表格';
const name = 'EditTableBox';
let i = 1;
const uniqueId = () => `EditTableBox-box-${i++}`;

export const editTableRule = {
	// 插入菜单位置
	menu: 'aide',
	// 图标
	icon: 'fc-icon-code ',
	// 名称
	label: label,
	// id，唯一!
	name: name,
	// 是否可以操作
	mask: true,
	// 定义组件的事件
	event: [
		"change",
		"del",
		"add",
		"ready",
		"blur"
	],
	// 定义组件的渲染规则s
	rule() {
		return {
			type: name,
			field: uniqueId(),
			title: label,
			info: '',
			effect: {
				fetch: '',
			},
			props: {
				data: [],// 表格数据
				columns: [],// 列配置
				showActionColumn: true,// 是否显示操作列
				showDeleteButton: true,// 是否显示删除按钮
				showActionBar: true,// 是否显示操作栏
				cellClickEdit: true,// 是否点击单元格编辑
				defaultNewRow: null,// 新增行默认值
				actionButtons: [],// 操作按钮配置
				actionWidth: 180,// 操作列宽度
			},
		};
	},

	// 自定义组件的属性配置
	props() {
		return [
			{
				type: 'Struct',
				title: '表格数据',
				field: 'data',
				_fc_important_prop: true,
				props: {
					validate(val) {
						return !val || !Array.isArray(val);
					}
				},
				value: []
			},
			{
				type: 'Struct',
				title: '列配置',
				field: 'columns',
				_fc_important_prop: true,
				// props: {
				// 	validate(val) {
				// 		return !val || !Array.isArray(val);
				// 	}
				// },
				value: []
			},
			{
				type: 'Struct',
				title: '操作列配置',
				field: 'actionButtons',
				_fc_important_prop: true,
				value: []
			},
			{
				type: 'Switch',
				title: '是否显示操作列',
				field: 'showActionColumn',
				value: true,
			},
			{
				type: 'Switch',
				title: '是否显示删除按钮',
				field: 'showDeleteButton',
				value: true,
			},
			{
				type: 'Switch',
				title: '是否显示顶部操作栏',
				field: 'showActionBar',
				value: true,
			},
			{
				type: 'Switch',
				title: '是否启用单元格点击编辑',
				field: 'cellClickEdit',
				value: true,
			},
			{
				type: 'inputNumber',
				title: '操作列宽度',
				field: 'actionWidth',
				value: 180,
			},
			{
				type: 'Struct',
				title: '新增行的默认数据',
				field: 'defaultNewRow',
				_fc_important_prop: true,
				props: {
					validate(val) {
						return !val;
					}
				},
				value: {}
			},
		];
	},
};
