various-ui
Version:
This is a test version of the Vue 3 component library
1 lines • 5.62 kB
Source Map (JSON)
{"version":3,"file":"composable.mjs","sources":["../../../../../../packages/components/form/default-item/src/composable.ts"],"sourcesContent":["import { ref, inject, computed } from \"vue\";\r\nimport { UiFormItemProps } from \"../index\";\r\nimport { UiFormEmitterKey, UiFormRulesKey, UiFormDataKey, UiTypes } from \"@various/constants\";\r\n\r\nexport const useComposable = (define: UiFormItemProps) => {\r\n //* 获取注入函数\r\n const emitter = inject(UiFormEmitterKey, undefined);\r\n const rules = inject(UiFormRulesKey, {});\r\n const data = inject(UiFormDataKey, {});\r\n\r\n //* 响应式变量\r\n const refs = {\r\n verifyTimer: ref<NodeJS.Timeout>(), //* 校验过渡定时器\r\n visible: ref<boolean>(false), //* 校验提示显示状态\r\n content: ref<string>(\"\"), //* 校验提示的文本\r\n status: ref<UiTypes.type>(\"info\"), //* 校验提示的类型\r\n };\r\n\r\n //* 函数列表\r\n const methods = {\r\n //* 校验显示函数\r\n show: (content: string, type?: UiTypes.type) => {\r\n refs.status.value = type || \"info\";\r\n refs.visible.value = true;\r\n refs.content.value = content;\r\n },\r\n\r\n //* 校验隐藏函数\r\n hidden: () => {\r\n refs.visible.value = false;\r\n refs.status.value = \"info\";\r\n },\r\n\r\n //* 校验函数\r\n validator: async (name?: string, callBack?: (result: boolean) => void) => {\r\n //* 获取校验规则\r\n const rule = rules[define.prop as string].filter((value) => !name || value.trigger == name);\r\n //* 检测是否存在校验选项\r\n if (!rule.length) return;\r\n else {\r\n //* 初始化校验队列\r\n const verifys: (Promise<UiTypes.verifyResult> | UiTypes.verifyResult)[] = [];\r\n //* 将校验事件添加入队列中\r\n rule.forEach((value) => verifys.push(value.verify(data)));\r\n //* 获取校验结果\r\n const result = await Promise.all(verifys);\r\n //* 获取校验失败列表\r\n const error = result.filter((value) => !value.verify);\r\n //* 根据是否存在校验失败选择触发提示or隐藏提示\r\n if (error.length) {\r\n callBack && callBack(false);\r\n methods.show(error[0].message || \"\", error[0].type || \"error\");\r\n } else {\r\n methods.hidden();\r\n callBack && callBack(true);\r\n }\r\n }\r\n },\r\n };\r\n\r\n //* 计算属性\r\n const computeds = {\r\n //* 组件类名\r\n className: computed(() => {\r\n if (refs.status.value != \"info\") {\r\n return `ui-form-${define.direction} ui-${refs.status.value}-type`;\r\n } else {\r\n return `ui-form-${define.direction}`;\r\n }\r\n }),\r\n\r\n //* 组件样式\r\n style: computed(() => {\r\n if (define.width) return { width: define.width + \"px\" };\r\n else return {};\r\n }),\r\n };\r\n\r\n return { data, refs, rules, methods, emitter, computeds };\r\n};\r\n"],"names":[],"mappings":"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"}