import uniqueId from '@form-create/utils/lib/unique'
import { localeProps, makeOptionsRule, makeRequiredRule } from '../../utils/formCreateIndex'

const label = '级联选择器'
const name = 'cascader'

export default {
	icon: 'icon-cascader',
	label,
	name,
	rule({ t }) {
		const opt = t('props.option')
		return {
			type: name,
			field: uniqueId(),
			title: t('components.cascader.name'),
			info: '',
			effect: {
				fetch: ''
			},
			$required: false,
			props: {
				options: [1, 2].map(value => {
					return {
						label: opt + value,
						value,
						children: []
					}
				})
			}
		}
	},
	props(_, { t }) {
		return localeProps(t, name + '.props', [
			makeRequiredRule(),
			makeOptionsRule(t, 'props.options', false),
			{
				type: 'Object',
				field: 'props',
				title: '配置选项',
				props: {
					rule: localeProps(t, name + '.propsOpt', [
						{
							type: 'select',
							field: 'expandTrigger',
							title: '次级菜单的展开方式',
							options: [
								{ label: 'click', value: 'click' },
								{ label: 'hover', value: 'hover' }
							]
						},
						{ type: 'switch', field: 'multiple', title: '是否多选' },
						{
							type: 'switch',
							field: 'checkStrictly',
							title: '是否严格的遵守父子节点不互相关联'
						},
						{
							type: 'switch',
							field: 'emitPath',
							title: '在选中节点改变时，是否返回由该节点所在的各级菜单的值所组成的数组，若设置 false，则只返回该节点的值',
							value: true
						},
						{ type: 'input', field: 'value', title: '指定选项的值为选项对象的某个属性值', value: 'value' },
						{
							type: 'input',
							field: 'label',
							title: '指定选项标签为选项对象的某个属性值',
							value: 'label'
						},
						{ type: 'input', field: 'children', title: '指定选项的子选项为选项对象的某个属性值', value: 'children' },
						{
							type: 'input',
							field: 'disabled',
							title: '指定选项的禁用为选项对象的某个属性值',
							value: 'disabled'
						},
						{ type: 'input', field: 'leaf', title: '指定选项的叶子节点的标志位为选项对象的某个属性值' }
					])
				}
			},
			{
				type: 'select',
				field: 'size',
				title: '尺寸',
				options: [
					{ label: 'large', value: 'large' },
					{ label: 'default', value: 'default' },
					{
						label: 'small',
						value: 'small'
					}
				]
			},
			{ type: 'input', field: 'placeholder', title: '输入框占位文本' },
			{
				type: 'switch',
				field: 'disabled',
				title: '是否禁用'
			},
			{ type: 'switch', field: 'clearable', title: '是否支持清空选项' },
			{
				type: 'switch',
				field: 'showAllLevels',
				title: '输入框中是否显示选中值的完整路径',
				value: true
			},
			{ type: 'switch', field: 'collapseTags', title: '多选模式下是否折叠Tag' },
			{
				type: 'input',
				field: 'separator',
				title: '选项分隔符'
			}
		])
	}
}
