knt-shared 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/components/Form/componentMap.ts","../src/components/Form/BasicForm.vue","../src/components/Form/useForm.ts","../src/utils/format.ts","../src/utils/validate.ts","../src/hooks/useDebounce.ts","../src/hooks/useLocalStorage.ts","../src/hooks/useToggle.ts"],"sourcesContent":["import { Component } from 'vue';\nimport {\n Input,\n InputNumber,\n InputPassword,\n Textarea,\n Select,\n Radio,\n RadioGroup,\n Checkbox,\n CheckboxGroup,\n Switch,\n Slider,\n Rate,\n DatePicker,\n TimePicker,\n RangePicker,\n Upload,\n Cascader,\n TreeSelect,\n AutoComplete,\n Mention,\n Transfer,\n} from '@arco-design/web-vue';\n\n/**\n * 组件类型映射\n */\nexport type ComponentType =\n | 'Input'\n | 'InputNumber'\n | 'InputPassword'\n | 'Textarea'\n | 'Select'\n | 'Radio'\n | 'RadioGroup'\n | 'Checkbox'\n | 'CheckboxGroup'\n | 'Switch'\n | 'Slider'\n | 'Rate'\n | 'DatePicker'\n | 'TimePicker'\n | 'RangePicker'\n | 'Upload'\n | 'Cascader'\n | 'TreeSelect'\n | 'AutoComplete'\n | 'Mention'\n | 'Transfer';\n\n/**\n * 组件映射表\n * 将字符串类型映射到实际的 Arco Design Vue 组件\n */\nexport const componentMap = new Map<string, Component>();\n\n// 输入类组件\ncomponentMap.set('Input', Input);\ncomponentMap.set('InputNumber', InputNumber);\ncomponentMap.set('InputPassword', InputPassword);\ncomponentMap.set('Textarea', Textarea);\ncomponentMap.set('AutoComplete', AutoComplete);\n\n// 选择类组件\ncomponentMap.set('Select', Select);\ncomponentMap.set('Radio', Radio);\ncomponentMap.set('RadioGroup', RadioGroup);\ncomponentMap.set('Checkbox', Checkbox);\ncomponentMap.set('CheckboxGroup', CheckboxGroup);\ncomponentMap.set('Cascader', Cascader);\ncomponentMap.set('TreeSelect', TreeSelect);\n\n// 日期时间类组件\ncomponentMap.set('DatePicker', DatePicker);\ncomponentMap.set('TimePicker', TimePicker);\ncomponentMap.set('RangePicker', RangePicker);\n\n// 其他组件\ncomponentMap.set('Switch', Switch);\ncomponentMap.set('Slider', Slider);\ncomponentMap.set('Rate', Rate);\ncomponentMap.set('Upload', Upload);\ncomponentMap.set('Mention', Mention);\ncomponentMap.set('Transfer', Transfer);\n\n/**\n * 注册自定义组件\n * @param name 组件名称\n * @param component 组件实例\n */\nexport function registerComponent(name: string, component: Component) {\n componentMap.set(name, component);\n}\n\n/**\n * 获取组件\n * @param name 组件名称或组件实例\n * @returns 组件实例\n */\nexport function getComponent(name: string | Component): Component | undefined {\n if (typeof name === 'string') {\n return componentMap.get(name);\n }\n return name;\n}\n\n/**\n * 需要自动设置 placeholder 的组件类型\n */\nexport const componentsNeedPlaceholder = new Set([\n 'Input',\n 'InputPassword',\n 'Textarea',\n 'AutoComplete',\n]);\n\n/**\n * 需要使用 \"请选择\" placeholder 的组件类型\n */\nexport const componentsNeedSelectPlaceholder = new Set([\n 'Select',\n 'DatePicker',\n 'TimePicker',\n 'RangePicker',\n 'Cascader',\n 'TreeSelect',\n]);\n\n/**\n * 根据组件类型生成默认 placeholder\n * @param component 组件类型\n * @param label 标签文本\n * @returns placeholder 文本\n */\nexport function getPlaceholder(component: string, label: string): string {\n if (componentsNeedPlaceholder.has(component)) {\n return `请输入${label}`;\n }\n if (componentsNeedSelectPlaceholder.has(component)) {\n return `请选择${label}`;\n }\n return '';\n}\n","<template>\n <a-form\n ref=\"formRef\"\n v-bind=\"getBindValue\"\n :model=\"formModel\"\n @submit=\"handleSubmit\"\n >\n <a-row v-bind=\"getRow\">\n <template v-for=\"schema in getVisibleSchemas()\" :key=\"schema.key || schema.field\">\n <a-col v-bind=\"getColProps(schema)\">\n <!-- 自定义渲染 -->\n <template v-if=\"schema.render\">\n <component :is=\"schema.render(schema, formModel)\" />\n </template>\n <!-- 标准表单项 -->\n <a-form-item\n v-else\n v-bind=\"getFormItemBindValue(schema)\"\n >\n <!-- 自定义组件内容渲染 -->\n <template v-if=\"schema.renderComponentContent\">\n <component :is=\"schema.renderComponentContent(schema, formModel)\" />\n </template>\n <!-- 标准组件渲染 -->\n <component\n v-else\n :is=\"getComponent(schema.component)\"\n v-model=\"formModel[schema.field]\"\n :placeholder=\"getPlaceholderText(schema)\"\n v-bind=\"schema.componentProps\"\n />\n </a-form-item>\n </a-col>\n </template>\n\n <!-- 操作按钮区域 -->\n <a-col v-if=\"getActionProps.showActionButtons\" v-bind=\"getActionProps.actionColOptions\">\n <a-form-item>\n <a-space>\n <a-button\n v-if=\"getActionProps.showSubmitButton\"\n type=\"primary\"\n html-type=\"submit\"\n :loading=\"submitLoading\"\n >\n {{ getActionProps.submitButtonText }}\n </a-button>\n <a-button v-if=\"getActionProps.showResetButton\" @click=\"handleReset\">\n {{ getActionProps.resetButtonText }}\n </a-button>\n <slot name=\"actions\" />\n </a-space>\n </a-form-item>\n </a-col>\n </a-row>\n </a-form>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, watch, onMounted, onBeforeUnmount, nextTick, computed, unref } from 'vue';\nimport type { FormInstance } from '@arco-design/web-vue';\nimport { getComponent, getPlaceholder } from './componentMap';\nimport type { FormSchema, BasicFormProps, BasicFormEmits } from './types';\n\ndefineOptions({\n name: 'BasicForm',\n inheritAttrs: false,\n});\n\nconst props = withDefaults(defineProps<BasicFormProps>(), {\n schemas: () => [],\n layout: 'horizontal',\n labelAlign: 'right',\n autoSetPlaceHolder: true,\n showSubmitButton: true,\n showResetButton: true,\n submitButtonText: '提交',\n resetButtonText: '重置',\n showActionButtons: true,\n disabled: false,\n baseColProps: () => ({ span: 24 }),\n actionColOptions: () => ({ span: 24 }),\n});\n\nconst emit = defineEmits<BasicFormEmits>();\n\nconst formRef = ref<FormInstance>();\nconst formModel = reactive<Record<string, any>>({});\nconst submitLoading = ref(false);\nconst internalSchemas = ref<FormSchema[]>([]);\nconst dynamicProps = ref<Partial<BasicFormProps>>({});\n\n// 获取表单的基本配置(类似 Vben Admin 的 getProps)\nconst getProps = computed((): BasicFormProps => {\n return { ...props, ...dynamicProps.value } as BasicFormProps;\n});\n\n// 获取表单绑定值(类似 Vben Admin 的 getBindValue)\nconst getBindValue = computed(() => {\n const propsData = unref(getProps);\n return {\n layout: propsData.layout,\n size: propsData.size,\n disabled: propsData.disabled,\n labelAlign: propsData.labelAlign,\n autoLabelWidth: propsData.autoLabelWidth,\n labelWidth: propsData.labelWidth,\n labelColProps: propsData.labelColProps,\n wrapperColProps: propsData.wrapperColProps,\n };\n});\n\n// 获取 Row 配置\nconst getRow = computed(() => {\n return {\n gutter: 24,\n };\n});\n\n// 获取操作按钮配置\nconst getActionProps = computed(() => {\n const propsData = unref(getProps);\n return {\n showActionButtons: propsData.showActionButtons !== false,\n showSubmitButton: propsData.showSubmitButton !== false,\n showResetButton: propsData.showResetButton !== false,\n submitButtonText: propsData.submitButtonText || '提交',\n resetButtonText: propsData.resetButtonText || '重置',\n actionColOptions: propsData.actionColOptions || { span: 24 },\n };\n});\n\n// 初始化表单模型\nconst initFormModel = () => {\n if (!props.schemas) return;\n \n props.schemas.forEach((schema) => {\n if (schema.defaultValue !== undefined) {\n formModel[schema.field] = schema.defaultValue;\n }\n });\n};\n\n// 获取可见的 schemas\nconst getVisibleSchemas = () => {\n const schemas = internalSchemas.value.length > 0 ? internalSchemas.value : props.schemas || [];\n return schemas.filter((schema) => {\n if (schema.show === undefined) return true;\n if (typeof schema.show === 'boolean') return schema.show;\n return schema.show(formModel);\n });\n};\n\n// 获取列属性\nconst getColProps = (schema: FormSchema) => {\n const propsData = unref(getProps);\n return schema.colProps || propsData.baseColProps || { span: 24 };\n};\n\n// 获取 FormItem 绑定值(类似 Vben Admin 的方式)\nconst getFormItemBindValue = (schema: FormSchema) => {\n const propsData = unref(getProps);\n \n // 计算禁用状态\n let disabled = propsData.disabled;\n if (schema.disabled !== undefined) {\n disabled = typeof schema.disabled === 'boolean' \n ? schema.disabled \n : schema.disabled(formModel);\n }\n \n return {\n field: schema.field,\n label: schema.label,\n labelColProps: schema.labelColProps || propsData.labelColProps,\n wrapperColProps: schema.wrapperColProps || propsData.wrapperColProps,\n rules: schema.rules,\n disabled,\n help: schema.help,\n extra: schema.extra,\n required: schema.required,\n ...(propsData.baseFormItemProps || {}),\n ...(schema.formItemProps || {}),\n };\n};\n\n// 获取 placeholder\nconst getPlaceholderText = (schema: FormSchema) => {\n const propsData = unref(getProps);\n \n // 如果组件属性中已经设置了 placeholder,则使用它\n if (schema.componentProps?.placeholder) {\n return schema.componentProps.placeholder;\n }\n \n // 如果不自动设置 placeholder,则返回空\n if (!propsData.autoSetPlaceHolder) {\n return '';\n }\n \n // 根据组件类型自动生成 placeholder\n const componentType = typeof schema.component === 'string' ? schema.component : '';\n return getPlaceholder(componentType, schema.label);\n};\n\n// 提交表单\nconst handleSubmit = async (values: Record<string, any>) => {\n try {\n submitLoading.value = true;\n const errors = await formRef.value?.validate();\n if (!errors) {\n emit('submit', values);\n }\n } finally {\n submitLoading.value = false;\n }\n};\n\n// 重置表单\nconst handleReset = () => {\n formRef.value?.resetFields();\n emit('reset');\n};\n\n// 获取字段值\nconst getFieldsValue = (): Record<string, any> => {\n return { ...formModel };\n};\n\n// 设置字段值\nconst setFieldsValue = (values: Record<string, any>) => {\n Object.keys(values).forEach((key) => {\n if (key in formModel) {\n formModel[key] = values[key];\n }\n });\n};\n\n// 重置字段\nconst resetFields = () => {\n formRef.value?.resetFields();\n};\n\n// 验证表单\nconst validate = async () => {\n return formRef.value?.validate();\n};\n\n// 清除验证\nconst clearValidate = (field?: string | string[]) => {\n formRef.value?.clearValidate(field);\n};\n\n// 更新 schema\nconst updateSchema = (schema: Partial<FormSchema> | Partial<FormSchema>[]) => {\n const schemas = Array.isArray(schema) ? schema : [schema];\n schemas.forEach((item) => {\n const index = internalSchemas.value.findIndex((s) => s.field === item.field);\n if (index !== -1) {\n internalSchemas.value[index] = { ...internalSchemas.value[index], ...item };\n }\n });\n};\n\n// 移除 schema\nconst removeSchema = (field: string | string[]) => {\n const fields = Array.isArray(field) ? field : [field];\n fields.forEach((f) => {\n const index = internalSchemas.value.findIndex((s) => s.field === f);\n if (index !== -1) {\n internalSchemas.value.splice(index, 1);\n delete formModel[f];\n }\n });\n};\n\n// 获取 schema\nconst getSchema = (field?: string): FormSchema | FormSchema[] | undefined => {\n const schemas = internalSchemas.value.length > 0 ? internalSchemas.value : props.schemas || [];\n if (!field) return schemas;\n return schemas.find((s) => s.field === field);\n};\n\n// 重置 schema\nconst resetSchema = (schemas: FormSchema[]) => {\n internalSchemas.value = [...schemas];\n initFormModel();\n};\n\n// 设置 Props(类似 Vben Admin)\nconst setProps = (formProps: Partial<BasicFormProps>) => {\n // 保存动态 props\n dynamicProps.value = { ...dynamicProps.value, ...formProps };\n \n // 更新 schemas\n if (formProps.schemas && Array.isArray(formProps.schemas)) {\n internalSchemas.value = [...formProps.schemas];\n initFormModel();\n }\n};\n\n// 滚动到指定字段\nconst scrollToField = (name: string, options?: ScrollIntoViewOptions) => {\n nextTick(() => {\n const element = document.querySelector(`[data-field=\"${name}\"]`);\n if (element) {\n element.scrollIntoView(options);\n }\n });\n};\n\n// 暴露方法和属性给父组件\ndefineExpose({\n formRef,\n formModel,\n handleSubmit,\n getVisibleSchemas,\n getColProps,\n getFormItemBindValue,\n getPlaceholderText,\n getFieldsValue,\n setFieldsValue,\n resetFields,\n validate,\n clearValidate,\n updateSchema,\n removeSchema,\n getSchema,\n resetSchema,\n setProps,\n scrollToField,\n});\n\n// 监听 schemas 变化\nconst stopSchemasWatch = watch(\n () => props.schemas,\n (newSchemas) => {\n if (newSchemas) {\n internalSchemas.value = [...newSchemas];\n initFormModel();\n }\n },\n { immediate: true, deep: true }\n);\n\n// 组件挂载后触发注册事件\nonMounted(() => {\n nextTick(() => {\n emit('register', {\n formRef,\n formModel,\n getFieldsValue,\n setFieldsValue,\n resetFields,\n validate,\n clearValidate,\n updateSchema,\n removeSchema,\n getSchema,\n resetSchema,\n setProps,\n scrollToField,\n handleSubmit,\n });\n });\n});\n\n// 组件卸载前清理\nonBeforeUnmount(() => {\n // 停止监听\n stopSchemasWatch();\n \n // 清空 formModel 中的所有引用\n Object.keys(formModel).forEach(key => {\n delete formModel[key];\n });\n \n // 清空 schemas\n internalSchemas.value = [];\n dynamicProps.value = {};\n});\n</script>\n","import { ref, reactive, unref, nextTick } from 'vue';\nimport type { FormSchema, UseFormOptions, UseFormReturn, BasicFormProps } from './types';\n\n/**\n * useForm Hook\n * 用于创建和管理表单实例(参考 Vben Admin 设计)\n * @param options 表单配置选项\n * @returns [register, formMethods]\n */\nexport function useForm(options: UseFormOptions = {}): [\n (formInstance: any) => void,\n Omit<UseFormReturn, 'register'>\n] {\n const formRef = ref<any>(null);\n const formModel = reactive<Record<string, any>>({});\n const loadedRef = ref(false);\n const propsRef = ref<Partial<BasicFormProps>>({});\n\n // 初始化表单模型\n const initFormModel = () => {\n const schemas = unref(formRef.value?.getSchema?.() || options.schemas || []);\n schemas.forEach((schema: FormSchema) => {\n if (schema.defaultValue !== undefined) {\n formModel[schema.field] = schema.defaultValue;\n }\n });\n };\n\n /**\n * 注册表单实例\n */\n const register = async (formInstance: any) => {\n await nextTick();\n formRef.value = formInstance;\n loadedRef.value = true;\n \n // 如果有初始配置,设置到表单实例\n if (options && Object.keys(options).length > 0) {\n await setProps(options as Partial<BasicFormProps>);\n }\n \n // 初始化表单模型\n initFormModel();\n };\n\n /**\n * 获取表单实例\n */\n const getForm = () => {\n const form = unref(formRef);\n if (!form) {\n console.error('表单实例尚未注册,请确保组件已挂载并正确使用 @register');\n }\n return form;\n };\n\n /**\n * 获取所有字段值\n */\n const getFieldsValue = (): Record<string, any> => {\n const form = getForm();\n if (!form) return {};\n \n if (form.getFieldsValue) {\n return form.getFieldsValue();\n }\n return { ...formModel };\n };\n\n /**\n * 设置字段值\n */\n const setFieldsValue = async (values: Record<string, any>) => {\n const form = getForm();\n if (!form) return;\n \n if (form.setFieldsValue) {\n await form.setFieldsValue(values);\n } else {\n Object.keys(values).forEach((key) => {\n formModel[key] = values[key];\n });\n }\n };\n\n /**\n * 重置表单\n */\n const resetFields = async () => {\n const form = getForm();\n if (!form) return;\n \n if (form.resetFields) {\n await form.resetFields();\n } else if (form.formRef?.value) {\n await form.formRef.value.resetFields();\n }\n };\n\n /**\n * 验证表单\n */\n const validate = async (nameList?: string[]): Promise<any> => {\n const form = getForm();\n if (!form) return Promise.reject('表单实例不存在');\n \n if (form.validate) {\n return await form.validate(nameList);\n } else if (form.formRef?.value) {\n return await form.formRef.value.validate(nameList);\n }\n return Promise.resolve(undefined);\n };\n\n /**\n * 验证指定字段\n */\n const validateFields = async (nameList?: string[]): Promise<any> => {\n return await validate(nameList);\n };\n\n /**\n * 清除验证\n */\n const clearValidate = async (field?: string | string[]) => {\n const form = getForm();\n if (!form) return;\n \n if (form.clearValidate) {\n await form.clearValidate(field);\n } else if (form.formRef?.value) {\n await form.formRef.value.clearValidate(field);\n }\n };\n\n /**\n * 提交表单\n */\n const submit = async (): Promise<any> => {\n const form = getForm();\n if (!form) return;\n \n if (form.handleSubmit) {\n return await form.handleSubmit();\n }\n \n // 默认行为:验证后返回表单值\n await validate();\n return getFieldsValue();\n };\n\n /**\n * 更新 schema\n */\n const updateSchema = async (schema: Partial<FormSchema> | Partial<FormSchema>[]) => {\n const form = getForm();\n if (!form) return;\n \n const schemaList = Array.isArray(schema) ? schema : [schema];\n \n if (form.updateSchema) {\n await form.updateSchema(schemaList);\n }\n };\n\n /**\n * 重置 schema\n */\n const resetSchema = async (schemas: FormSchema[]) => {\n const form = getForm();\n if (!form) return;\n \n if (form.resetSchema) {\n await form.resetSchema(schemas);\n }\n };\n\n /**\n * 移除 schema\n */\n const removeSchemaByField = async (field: string | string[]) => {\n const form = getForm();\n if (!form) return;\n \n const fields = Array.isArray(field) ? field : [field];\n \n if (form.removeSchema) {\n await form.removeSchema(fields);\n }\n \n // 删除表单数据\n fields.forEach((f) => {\n if (f in formModel) {\n delete formModel[f];\n }\n });\n };\n\n /**\n * 添加 schema\n */\n const appendSchemaByField = async (\n schema: FormSchema | FormSchema[],\n prefixField?: string,\n first = false\n ) => {\n const form = getForm();\n if (!form) return;\n \n const schemas = form.getSchema?.() || [];\n const schemaList = Array.isArray(schema) ? schema : [schema];\n \n if (prefixField) {\n const index = schemas.findIndex((s: FormSchema) => s.field === prefixField);\n if (index !== -1) {\n const insertIndex = first ? index : index + 1;\n schemas.splice(insertIndex, 0, ...schemaList);\n }\n } else {\n if (first) {\n schemas.unshift(...schemaList);\n } else {\n schemas.push(...schemaList);\n }\n }\n \n if (form.updateSchema) {\n await form.updateSchema(schemas);\n }\n \n // 初始化新字段的默认值\n schemaList.forEach((s) => {\n if (s.defaultValue !== undefined) {\n formModel[s.field] = s.defaultValue;\n }\n });\n };\n\n /**\n * 获取 schema\n */\n const getSchema = (field?: string): FormSchema | FormSchema[] | undefined => {\n const form = getForm();\n if (!form) return undefined;\n \n if (form.getSchema) {\n return form.getSchema(field);\n }\n \n return undefined;\n };\n\n /**\n * 设置表单 Props\n */\n const setProps = async (formProps: Partial<BasicFormProps>) => {\n // 保存 props 配置\n propsRef.value = { ...propsRef.value, ...formProps };\n \n const form = getForm();\n if (!form) {\n // 如果表单实例还未注册,先保存配置\n return;\n }\n \n if (form.setProps) {\n await form.setProps(formProps);\n }\n };\n\n /**\n * 滚动到指定字段\n */\n const scrollToField = async (name: string, options?: ScrollIntoViewOptions) => {\n const form = getForm();\n if (!form) return;\n \n if (form.scrollToField) {\n await form.scrollToField(name, options);\n }\n };\n\n const formMethods = {\n getFieldsValue,\n setFieldsValue,\n resetFields,\n validate,\n validateFields,\n clearValidate,\n submit,\n updateSchema,\n resetSchema,\n removeSchemaByField,\n appendSchemaByField,\n getSchema,\n setProps,\n scrollToField,\n formModel,\n formRef,\n getForm,\n };\n\n return [register, formMethods];\n}\n\n/**\n * 创建表单配置\n * 用于快速创建表单 schema\n */\nexport function createFormSchema(schemas: FormSchema[]): FormSchema[] {\n return schemas.map((schema, index) => ({\n key: schema.key || `${schema.field}_${index}`,\n ...schema,\n }));\n}\n\n/**\n * 合并表单配置\n * 用于合并多个表单配置\n */\nexport function mergeFormSchemas(...schemas: FormSchema[][]): FormSchema[] {\n return schemas.flat();\n}\n","/**\n * 格式化日期\n * @param date 日期对象或时间戳\n * @param format 格式化字符串,默认 'YYYY-MM-DD HH:mm:ss'\n * @returns 格式化后的日期字符串\n */\nexport function formatDate(\n date: Date | number,\n format: string = 'YYYY-MM-DD HH:mm:ss'\n): string {\n const d = typeof date === 'number' ? new Date(date) : date;\n \n const year = d.getFullYear();\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n const hours = String(d.getHours()).padStart(2, '0');\n const minutes = String(d.getMinutes()).padStart(2, '0');\n const seconds = String(d.getSeconds()).padStart(2, '0');\n\n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds);\n}\n\n/**\n * 格式化数字,添加千分位分隔符\n * @param num 数字\n * @returns 格式化后的字符串\n */\nexport function formatNumber(num: number): string {\n return num.toLocaleString('zh-CN');\n}\n\n/**\n * 格式化文件大小\n * @param bytes 字节数\n * @returns 格式化后的文件大小字符串\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n \n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;\n}\n\n","/**\n * 验证邮箱格式\n * @param email 邮箱地址\n * @returns 是否为有效邮箱\n */\nexport function isValidEmail(email: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}\n\n/**\n * 验证手机号格式(中国大陆)\n * @param phone 手机号\n * @returns 是否为有效手机号\n */\nexport function isValidPhone(phone: string): boolean {\n const phoneRegex = /^1[3-9]\\d{9}$/;\n return phoneRegex.test(phone);\n}\n\n/**\n * 验证URL格式\n * @param url URL地址\n * @returns 是否为有效URL\n */\nexport function isValidUrl(url: string): boolean {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * 验证身份证号格式(中国大陆18位)\n * @param idCard 身份证号\n * @returns 是否为有效身份证号\n */\nexport function isValidIdCard(idCard: string): boolean {\n const idCardRegex = /^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$/;\n return idCardRegex.test(idCard);\n}\n\n","import { ref, watch, onBeforeUnmount, type Ref } from 'vue';\n\n/**\n * 防抖Hook\n * @param value 需要防抖的值\n * @param delay 延迟时间(毫秒)\n * @returns 防抖后的值\n */\nfunction useDebounce<T>(value: Ref<T>, delay: number = 300): Ref<T> {\n const debouncedValue = ref<T>(value.value) as Ref<T>;\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const updateValue = (newValue: T) => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n debouncedValue.value = newValue;\n }, delay);\n };\n\n watch(\n value,\n (newValue) => {\n updateValue(newValue);\n },\n { immediate: true }\n );\n\n onBeforeUnmount(() => {\n if (timer) {\n clearTimeout(timer);\n }\n });\n\n return debouncedValue;\n}\n\nexport default useDebounce;\n","import { ref, watch, type Ref } from 'vue';\n\n/**\n * 本地存储Hook\n * @param key 存储的key\n * @param initialValue 初始值\n * @returns [存储的值, 设置值的函数]\n */\nfunction useLocalStorage<T>(key: string, initialValue: T) {\n // 初始化时读取localStorage\n let initialStoredValue: T;\n try {\n const item = window.localStorage.getItem(key);\n initialStoredValue = item ? JSON.parse(item) : initialValue;\n } catch (error) {\n console.error(`Error reading localStorage key \"${key}\":`, error);\n initialStoredValue = initialValue;\n }\n\n const storedValue = ref<T>(initialStoredValue) as Ref<T>;\n\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n const valueToStore = value instanceof Function ? value(storedValue.value) : value;\n storedValue.value = valueToStore;\n window.localStorage.setItem(key, JSON.stringify(valueToStore));\n } catch (error) {\n console.error(`Error setting localStorage key \"${key}\":`, error);\n }\n };\n\n // 监听变化并同步到localStorage\n watch(\n storedValue,\n (newValue: any) => {\n try {\n window.localStorage.setItem(key, JSON.stringify(newValue));\n } catch (error) {\n console.error(`Error syncing localStorage key \"${key}\":`, error);\n }\n },\n { deep: true }\n );\n\n return [storedValue, setValue] as const;\n}\n\nexport default useLocalStorage;\n","import { ref } from 'vue';\n\n/**\n * 布尔值切换Hook\n * @param initialValue 初始值\n * @returns [当前值, 切换函数, 设置为true函数, 设置为false函数]\n */\nfunction useToggle(initialValue: boolean = false) {\n const value = ref(initialValue);\n\n const toggle = () => {\n value.value = !value.value;\n };\n\n const setTrue = () => {\n value.value = true;\n };\n\n const setFalse = () => {\n value.value = false;\n };\n\n return [value, toggle, setTrue, setFalse] as const;\n}\n\nexport default useToggle;\n"],"names":["Input","InputNumber","InputPassword","Textarea","AutoComplete","Select","Radio","RadioGroup","Checkbox","CheckboxGroup","Cascader","TreeSelect","DatePicker","TimePicker","RangePicker","Switch","Slider","Rate","Upload","Mention","Transfer","ref","reactive","computed","unref","nextTick","watch","onMounted","onBeforeUnmount","_openBlock","_createBlock","_mergeProps","_createVNode","_createElementBlock","_Fragment","_renderList","_resolveDynamicComponent","_unref","_normalizeProps","_createTextVNode","_toDisplayString","_renderSlot","options"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './components';
2
+ export * from './utils';
3
+ export * from './hooks';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC"}