UNPKG

various-ui

Version:

This is a test version of the Vue 3 component library

1 lines 6.08 kB
{"version":3,"file":"composable.mjs","sources":["../../../../../../packages/components/form/default/src/composable.ts"],"sourcesContent":["import mitt from \"mitt\";\r\nimport { ref } from \"vue\";\r\nimport { UiFormProps } from \"../index\";\r\nimport { utility } from \"@various/utils\";\r\nimport { UiTypes } from \"@various/constants\";\r\n\r\nexport const useComposable = (define: UiFormProps) => {\r\n //* 静态变量\r\n const variable = {\r\n data: utility.cloneDeep(define.data),\r\n };\r\n\r\n //* 响应式变量\r\n const emitter = mitt();\r\n const refs = {\r\n form: ref<HTMLFormElement>(),\r\n };\r\n\r\n //* 函数列表\r\n const methods = {\r\n //* 表单重置函数\r\n reset: () => {\r\n //* 校验重置\r\n for (const index in define.rules) {\r\n emitter.emit(`reset:${index}`);\r\n }\r\n\r\n //* value重置\r\n for (const index in variable.data) {\r\n if (utility.isArray(define.data[index]) || utility.isObject(define.data[index])) {\r\n define.data[index] = utility.cloneDeep(variable.data[index]);\r\n } else {\r\n define.data[index] = variable.data[index];\r\n }\r\n }\r\n },\r\n\r\n //* 表单校验清理函数\r\n clear: (keys?: string[]) => {\r\n for (const index in define.rules) {\r\n if (!keys || keys.includes(index)) {\r\n emitter.emit(`reset:${index}`);\r\n }\r\n }\r\n },\r\n\r\n //* 表单校验函数\r\n validator: async (callBack: (result: boolean) => void, list?: string[]) => {\r\n //* 检测是否存在校验选项\r\n if (!define.rules) return;\r\n\r\n //* 初始化错误列表\r\n const errors: { name: string; result: UiTypes.verifyResult }[] = [];\r\n\r\n //* 遍历校验选项列表进行校验\r\n for (const i in define.rules) {\r\n //* 检测是否需要进行校验\r\n if (list && !list.includes(i)) continue;\r\n else {\r\n //* 初始化校验队列\r\n const alignment: (Promise<UiTypes.verifyResult> | UiTypes.verifyResult)[] = [];\r\n //* 将校验事件添加入队列中\r\n define.rules[i].forEach((value) => alignment.push(value.verify(define.data)));\r\n //* 获取校验结果\r\n const result = await Promise.all(alignment);\r\n //* 获取校验失败列表\r\n const error = result.filter((value) => (!value.type || value.type == \"error\") && !value.verify);\r\n //* 存在校验失败则添加入队列中\r\n if (error && error.length) {\r\n errors.push({ name: i, result: error[0] });\r\n } else {\r\n emitter.emit(`reset:${i}`);\r\n }\r\n }\r\n }\r\n\r\n //* 根据是否存在校验失败选择触发提示or触发回调函数\r\n if (errors.length) {\r\n errors.forEach((error) => emitter.emit(`trigger:${error.name}`, error.result));\r\n callBack && callBack(false);\r\n } else {\r\n callBack && callBack(true);\r\n }\r\n },\r\n };\r\n\r\n return {\r\n emitter,\r\n methods,\r\n refs,\r\n };\r\n};\r\n"],"names":["utility.cloneDeep","index","utility.isArray","utility.isObject"],"mappings":"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"}