@yetuzi/vue3-query-components 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.
- package/LICENSE +21 -0
- package/README.md +222 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +127 -0
- package/dist/index.js +963 -0
- package/dist/index.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/CommonConfigProvider/index.vue","../src/components/CommonQueryTable/index.vue","../src/components/CommonForm/index.vue","../src/components/CommonTable/config.ts","../src/components/CommonTable/index.vue","../src/components/CommonPagination/index.vue","../src/components/CommonSelect/index.vue","../src/components/CommonInput/index.vue","../src/components/CommonDatePicker/index.vue","../src/components/CommonRadio/index.vue","../src/components/CommonCheckbox/index.vue","../src/components/CommonSwitch/index.vue","../src/utils/index.ts","../src/provide/key.ts","../src/provide/index.ts","../src/hooks/useResettable.ts","../src/hooks/useGetComponentsChildrenSlots.ts","../src/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport { provide, reactive, useAttrs, watchEffect } from 'vue'\nimport { configInjectKey, getCommonProviderConfig } from '../../index'\nimport { merge, cloneDeep } from 'lodash-es'\nimport type { Config } from '../../index'\nimport type { CommonConfigProviderProps } from './type'\n\n/** 定义组件Props */\ndefineProps<CommonConfigProviderProps>()\n\n/** 获取全局默认配置 */\nconst config = getCommonProviderConfig()\n\n/** vue sfc 报错,传递给props的值只能在attrs里取 */\nconst attrs = useAttrs()\n\n/** 当前配置对象,合并默认配置和传入的attrs */\nconst currentConfig = reactive<Config>(merge(cloneDeep(config), attrs))\n\n/** 向子组件提供配置对象 */\nprovide(configInjectKey, currentConfig)\n\n/**\n * 使用 watchEffect 自动追踪依赖\n * 当attrs变化时,自动更新currentConfig配置\n */\nwatchEffect(() => {\n /** 这里会自动追踪 attrs 和 props 的使用 */\n Object.assign(currentConfig, merge(cloneDeep(config), attrs))\n})\n\ndefineOptions({\n name: 'CommonConfigProvider',\n inheritAttrs: false,\n})\n</script>\n\n<template>\n <slot></slot>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"ts\">\nimport type { CommonQueryTableProps } from './type'\nimport {\n CommonTable,\n CommonPagination,\n CommonForm,\n getCommonProviderConfig,\n useResettableReactive,\n filterNullAndUndefined,\n useGetComponentsChildrenSlots,\n} from '../../index'\nimport type { PaginationParam } from '../../index'\nimport { useRequest } from 'vue-hooks-plus'\nimport { useTemplateRef } from 'vue'\nimport { ElLoading } from 'element-plus'\n\nconst vLoading = ElLoading.directive\n\n/** 组件Props定义,提供默认值 */\nconst props = withDefaults(defineProps<CommonQueryTableProps>(), {\n /** 默认布局顺序:表单 -> 表格 -> 分页 */\n layouts() {\n return ['form', 'table', 'pagination']\n },\n /** 默认空表单配置 */\n form() {\n return []\n },\n})\n\n/** CommonForm组件引用,用于获取表单数据 */\nconst CommonFormRef = useTemplateRef('CommonFormRef')\n\n/** 获取子组件插槽,支持向内部组件传递插槽 */\nconst childrenSlots = useGetComponentsChildrenSlots(['table', 'form', 'pagination'])\n\n/**\n * 初始查询参数\n * 提取表单配置中的初始值作为首次请求的参数\n */\nconst initFetchParams = Object.fromEntries(props.form.map((item) => [item.prop, item.initialValue]))\n\n/** 获取全局配置 */\nconst config = getCommonProviderConfig()\n\n/**\n * 分页状态管理\n * 使用可重置的响应式状态管理分页参数\n */\nconst [page, resetPage] = useResettableReactive<PaginationParam>({\n pageNo: config.component.pagination.defaultPageCount,\n pageSize: config.component.pagination.defaultPageSize,\n})\n\n/**\n * 数据请求管理\n * 使用vue-hooks-plus的useRequest管理异步数据请求\n * 自动处理加载状态、错误处理等\n */\nconst { data, loading, run } = useRequest(props.fetch, {\n /** 默认请求参数,包含分页和表单初始值 */\n defaultParams: [\n {\n ...page,\n ...initFetchParams,\n },\n ],\n /** 初始数据,避免undefined问题 */\n initialData: {\n list: [],\n total: 0,\n },\n /** 错误处理,重置数据 */\n onError() {\n data.value.total = 0\n data.value.list = []\n },\n})\n\n/**\n * 表单提交处理函数\n * 当用户点击查询按钮时触发,重新获取数据\n */\nfunction handleFormSubmit() {\n fetchListData()\n}\n\n/**\n * 表单重置处理函数\n * 当用户点击重置按钮时触发:\n * 1. 如果分页参数是初始状态,直接重新请求数据\n * 2. 如果分页参数被修改过,重置分页到初始状态(会触发watch重新请求)\n */\nfunction handleFormReset() {\n // 如果页数条数还是初始状态,直接调用请求\n if (\n page.pageNo === config.component.pagination.defaultPageCount &&\n page.pageSize === config.component.pagination.defaultPageSize\n ) {\n fetchListData()\n } else {\n resetPage()\n }\n}\n\n/**\n * 分页变化处理函数\n * 当用户切换页码或每页条数时触发\n * @param event - 分页参数对象\n */\nfunction handlePaginationChange(event: PaginationParam) {\n page.pageNo = event.pageNo\n page.pageSize = event.pageSize\n fetchListData()\n}\n\n/**\n * 获取列表数据的核心函数\n * 合并分页参数和表单查询参数,过滤空值后发起请求\n */\nfunction fetchListData() {\n const formData = CommonFormRef.value?.[0]?.formData || {}\n run(\n filterNullAndUndefined({\n ...page,\n ...formData,\n }),\n )\n}\n\ndefineOptions({\n name: 'CommonQueryTable',\n})\n</script>\n\n<template>\n <div class=\"common-query-table\">\n <!-- TODO 全部设置成 vnode 的形式,再从插槽中传递给父组件 -->\n <div :class=\"[`common-query-table-${layout}`]\" v-for=\"layout in layouts\" :key=\"layout\">\n <slot :name=\"layout\">\n <template v-if=\"layout === 'form'\">\n <CommonForm ref=\"CommonFormRef\" inline :form=\"form\" v-model:loading=\"loading\" @submit=\"handleFormSubmit\"\n @reset=\"handleFormReset\">\n <template v-for=\"(name, key) in childrenSlots?.[layout]\" :key=\"key\" #[key]=\"scoped\">\n <slot :name=\"name\" v-bind=\"scoped\"> </slot>\n </template>\n </CommonForm>\n </template>\n <template v-else-if=\"layout === 'table'\">\n <CommonTable :columns=\"columns\" :data=\"data?.list\" v-loading=\"loading\">\n <template v-for=\"(name, key) in childrenSlots?.[layout]\" :key=\"key\" #[key]=\"scoped\">\n <slot :name=\"name\" v-bind=\"scoped\"> </slot>\n </template>\n </CommonTable>\n </template>\n <template v-else-if=\"layout === 'pagination'\">\n <CommonPagination v-model:page-no=\"page.pageNo\" v-model:page-size=\"page.pageSize\" :total=\"Number(data?.total)\"\n @change=\"handlePaginationChange\">\n <template v-for=\"(name, key) in childrenSlots?.[layout]\" :key=\"key\" #[key]=\"scoped\">\n <slot :name=\"name\" v-bind=\"scoped\"> </slot>\n </template>\n </CommonPagination>\n </template>\n <slot v-else :name=\"layout\"></slot>\n </slot>\n </div>\n </div>\n</template>\n\n<style scoped>\n.common-query-table {\n --spacing: 15px;\n width: 100%;\n height: 100%;\n flex: 1;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n padding: var(--spacing) 12px;\n overflow: hidden;\n}\n\n[class^='common-query-table-'] {\n width: 100%;\n}\n\n[class^='common-query-table-']+[class^='common-query-table-'] {\n margin-top: var(--spacing);\n}\n\n.common-query-table .common-query-table-table {\n flex: 1;\n overflow: hidden;\n}\n</style>\n","<script setup lang=\"ts\" generic=\"T extends AnyObject\">\nimport { ElForm, ElFormItem, ElButton } from 'element-plus'\n\nimport type { CommonFormProps, CommonFormData } from './type'\n\nimport {\n CommonSelect,\n CommonInput,\n CommonDatePicker,\n CommonRadio,\n getCommonProviderConfig,\n CommonCheckbox,\n CommonSwitch,\n} from '../../index'\nimport type { AnyObject } from '../../index'\nimport { reactive, useTemplateRef, h } from 'vue'\n\n/** 组件Props定义,提供默认值 */\nconst props = withDefaults(defineProps<CommonFormProps<T>>(), {\n form() {\n return []\n },\n})\n\n/** 定义组件事件 */\nconst emit = defineEmits<{\n /** 表单提交事件,返回表单数据 */\n submit: [formData: AnyObject]\n /** 表单重置事件,返回重置后的表单数据 */\n reset: [formData: AnyObject]\n}>()\n\n/** ElForm组件引用,用于调用表单方法 */\nconst elFormRef = useTemplateRef('elFormRef')\n\n/**\n * 表单数据响应式对象\n * 根据form配置动态生成,使用initialValue作为默认值\n */\nconst formData = reactive<CommonFormData<T>>(\n Object.fromEntries(props.form.map((item) => [item.prop, item.initialValue])) as CommonFormData<T>,\n)\n\n/** 获取全局配置 */\nconst config = getCommonProviderConfig()\n\n/** 加载状态,支持v-model双向绑定 */\nconst loading = defineModel('loading', {\n default: false,\n})\n\n/**\n * 内置组件映射表\n * 将字符串类型映射到对应的组件\n */\nconst commonComponents = {\n select: CommonSelect,\n input: CommonInput,\n 'date-picker': CommonDatePicker,\n radio: CommonRadio,\n 'check-box': CommonCheckbox,\n switch: CommonSwitch,\n}\n\n/**\n * 表单提交处理函数\n *\n * 1. 触发表单验证\n * 2. 验证通过后触发表单提交事件\n * 3. 返回当前表单数据\n */\nasync function handleSubmit() {\n await elFormRef.value?.validate()\n emit('submit', formData)\n}\n\n/**\n * 表单重置处理函数\n *\n * 1. 调用 ElForm 的 resetFields 方法重置表单字段\n * 2. 触发表单重置事件\n * 3. 返回重置后的表单数据\n */\nfunction handleReset() {\n elFormRef.value?.resetFields()\n emit('reset', formData)\n}\n\n/** 暴露表单数据对象,供父组件访问 */\ndefineExpose({\n formData,\n})\n\n/** 组件选项配置 */\ndefineOptions({\n name: 'CommonForm',\n})\n</script>\n\n<template>\n <!-- 表单容器,绑定表单数据和验证规则 -->\n <el-form ref=\"elFormRef\" v-bind=\"props\" :model=\"formData\" @submit.prevent>\n <!--\n 动态表单项渲染\n 根据form配置数组动态生成表单项,每个表单项包含:\n - formItem: ElFormItem的配置\n - prop: 表单字段名\n - is: 组件类型(字符串或自定义组件)\n - props: 传递给组件的props\n -->\n <el-form-item\n v-bind=\"item.formItem\"\n :prop=\"String(item.prop)\"\n v-for=\"item in form\"\n :key=\"item.prop\"\n >\n <!--\n 动态组件渲染\n 支持两种模式:\n 1. 内置组件:通过字符串映射到commonComponents中的组件\n 2. 自定义组件:直接传入组件对象\n 统一处理modelValue绑定和更新事件\n -->\n <!-- @vue-ignore -->\n <component\n v-if=\"typeof item.is === 'string'\"\n :is=\"\n h(commonComponents[item.is], {\n ...(item.props || {}),\n modelValue: formData[item.prop],\n 'onUpdate:modelValue': (val: any) => (formData[item.prop] = val),\n })\n \"\n ></component>\n <component\n v-else\n :is=\"\n h(item.is, {\n ...(item.props || {}),\n modelValue: formData[item.prop],\n 'onUpdate:modelValue': (val: any) => (formData[item.prop] = val),\n })\n \"\n ></component>\n </el-form-item>\n\n <!-- 操作按钮区域 -->\n <el-form-item label=\"\">\n <!-- 提交按钮,触发表单验证和提交 -->\n <el-button type=\"primary\" :loading @click=\"handleSubmit\">\n {{ config.component.form.submitText }}\n </el-button>\n <!-- 重置按钮,重置表单数据 -->\n <el-button :loading @click=\"handleReset\">{{ config.component.form.resetText }}</el-button>\n </el-form-item>\n </el-form>\n</template>\n\n<style scoped>\n/**\n * 表单样式调整\n *\n * 解决表单布局问题:\n * 1. 负边距处理:抵消 el-form-item 的默认下边距,保持表单间距一致\n * 2. 内容宽度:通过 CSS 变量绑定配置中的组件宽度\n */\n.el-form {\n /* 需要减去 el-form-item 的下边距高度,保持在使用时间距一致 */\n margin-bottom: -18px !important;\n}\n.el-form .el-form-item :deep(.el-form-item__content) {\n /* 使用配置中的组件宽度,确保表单控件宽度一致 */\n width: v-bind('config.component.form.formItem.components.width');\n}\n</style>\n","import type { VNode } from 'vue'\nimport type { AnyObject, UnionToRecord } from '../../index'\nimport dayjs from 'dayjs'\nimport type { CommonTableColumnRoot } from './type'\n\ntype SupplementType = UnionToRecord<CommonTableColumnRoot<AnyObject>, 'type'>\n\nexport type SupplementTypeObject = {\n [K in keyof SupplementType]: Partial<Omit<SupplementType[K], 'prop' | 'formatter'>> & {\n formatter?: (\n row: AnyObject,\n column: SupplementType[K],\n cellValue: any,\n index: number,\n ) => VNode | string | number\n }\n}\n\n/**\n * 内置列的补充类型 or 优化原先列的样式\n */\nexport const columnSupplementType: SupplementTypeObject = {\n index: {},\n selection: {},\n expand: {},\n date: {\n width: '140px',\n formatter(row, column, cellValue) {\n return dayjs(cellValue).format('YYYY-MM-DD')\n },\n },\n dateTime: {\n width: '180px',\n formatter(row, column, cellValue) {\n return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss')\n },\n },\n}\n","<script setup lang=\"ts\" generic=\"T extends AnyObject\">\nimport { ElTable, ElEmpty, ElTableColumn } from 'element-plus'\nimport type { CommonTableProps } from './type'\nimport { computed, useTemplateRef, watch } from 'vue'\nimport { getCommonProviderConfig, getFirstValidValue } from '../../index'\nimport type { AnyObject } from '../../index'\nimport { cloneDeep } from 'lodash-es'\nimport { columnSupplementType } from './config'\n\n/** 全局配置对象 */\nconst config = getCommonProviderConfig()\n\n/** 组件Props定义,提供默认值 */\nconst props = withDefaults(defineProps<CommonTableProps<T>>(), {\n /** 默认空数据数组 */\n data() {\n return []\n },\n})\n\n/** ElTable组件引用,用于调用表格方法 */\nconst ElTableRef = useTemplateRef('ElTableRef')\n\n/**\n * 数据变化监听\n * 当表格数据更新时,自动滚动到表格顶部,提升用户体验\n */\nwatch(props.data, () => {\n ElTableRef.value?.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth',\n })\n})\n\n/**\n * 列配置计算属性\n * 处理两种列配置格式:\n * 1. 数组格式:直接使用\n * 2. 对象格式:转换为数组格式\n * 同时处理特殊列类型(如索引、选择框等)的默认配置合并\n */\nconst arrayColumns = computed(() => {\n let columns = cloneDeep(props.columns)\n if (!Array.isArray(columns)) {\n columns = Object.entries(columns).map(([key, value]) => {\n return {\n ...value,\n prop: key,\n }\n })\n }\n return columns.map((item) => {\n if ('type' in item) {\n return Object.assign(columnSupplementType[item.type], {\n ...item,\n prop: item.prop as string,\n })\n }\n return {\n ...item,\n prop: item.prop as string,\n }\n })\n})\n\ndefineOptions({\n name: 'ConnomTable',\n})\n</script>\n\n<template>\n <div class=\"common-table\">\n <el-table\n v-bind=\"props\"\n :headerCellStyle=\"config.component.table.headerCellStyle\"\n height=\"100%\"\n ref=\"ElTableRef\"\n >\n <template v-for=\"column in arrayColumns\" :key=\"column.prop\">\n <el-table-column v-bind=\"column\">\n <template v-if=\"!column.formatter\" #default=\"scoped\">\n <slot\n :name=\"column.prop\"\n :row=\"scoped.row\"\n :column=\"scoped.column\"\n :index=\"scoped.$index\"\n :value=\"scoped.row[column.prop]\"\n >\n {{ getFirstValidValue(scoped.row[column.prop], config.component.placeholder) }}\n </slot>\n </template>\n </el-table-column>\n </template>\n\n <template #empty>\n <slot name=\"empty\">\n <el-empty description=\"暂无数据\" />\n </slot>\n </template>\n </el-table>\n </div>\n</template>\n\n<style scoped>\n.common-table {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { watch } from 'vue'\nimport type { CommonPaginationProps } from './type'\nimport { ElPagination } from 'element-plus'\nimport type { PaginationParam } from '../../index'\n\n/** 组件Props定义,提供默认值 */\nconst props = withDefaults(defineProps<CommonPaginationProps>(), {\n /** 总数 */\n total: 0,\n /** 带有背景色的分页 */\n background: true,\n /** 是否将下拉菜单teleport至 body */\n teleported: true,\n /** 组件布局,子组件名用逗号分隔 */\n layout: 'slot, ->, total, sizes, prev, pager, next, jumper',\n /** 每页显示个数选择器的选项设置 */\n pageSizes: () => [10, 20, 30, 40, 50],\n})\n\n/** 定义组件事件 */\nconst emit = defineEmits<{\n /** 分页变化事件,返回当前页码和每页条数 */\n change: [PaginationParam]\n}>()\n\n/** 当前页码,支持v-model双向绑定 */\nconst pageNo = defineModel('pageNo', {\n /** 数值类型 */\n type: Number,\n /** 必填项 */\n required: true,\n})\n/** 每页显示条数,支持v-model双向绑定 */\nconst pageSize = defineModel('pageSize', {\n /** 数值类型 */\n type: Number,\n /** 必填项 */\n required: true,\n})\n\n/**\n * 每页条数变化监听\n * 当每页显示条数改变时,自动重置为第一页,确保数据正确显示\n */\nwatch(\n () => pageSize.value,\n () => {\n pageNo.value = 1\n },\n)\n\n/**\n * 页码变化监听\n * 当页码改变时,触发change事件,返回当前分页参数\n */\nwatch(\n () => pageNo.value,\n () => {\n emit('change', {\n pageNo: pageNo.value,\n pageSize: pageSize.value,\n })\n },\n)\n\ndefineOptions({\n name: 'CommonPagination',\n})\n</script>\n\n<template>\n <el-pagination v-bind=\"props\" v-model:page-size=\"pageSize\" v-model:current-page=\"pageNo\">\n <slot></slot>\n </el-pagination>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"ts\">\nimport { ElSelect, ElOption } from 'element-plus'\n\nimport type { CommonSelectProps } from './type'\n\n/** 组件Props定义,提供默认值 */\nconst props = withDefaults(defineProps<CommonSelectProps>(), {\n /** 默认可清空选择 */\n clearable: true,\n /** 默认触发表单验证 */\n validateEvent: true,\n /** 默认空选项数组 */\n options() {\n return []\n },\n})\n\n/** 选择器值,支持v-model双向绑定 */\nconst model = defineModel<any>()\n\ndefineOptions({\n name: 'CommonSelect',\n})\n</script>\n\n<template>\n <el-select v-bind=\"props\" v-model=\"model\">\n <slot>\n <el-option\n v-for=\"item in props.options\"\n :key=\"item.label\"\n :value=\"item.value\"\n :label=\"item.label\"\n :disabled=\"item.disabled\"\n ></el-option>\n </slot>\n </el-select>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"ts\">\nimport { ElInput } from 'element-plus'\nimport type { CommonInputProps } from './type'\n/** 组件Props定义,使用运行时定义避免类型问题 */\nconst props = defineProps<CommonInputProps>()\n\n/** 定义组件事件 */\nconst emit = defineEmits<{\n /** 回车键按下事件,返回键盘事件对象 */\n (e: 'enter', event: KeyboardEvent): void\n}>()\n\n/** 输入框值,支持v-model双向绑定 */\nconst modelValue = defineModel<string>({\n /** 默认空字符串 */\n default: '',\n})\n\n/**\n * 回车键处理函数\n * 处理输入法组合状态,避免在输入中文时误触发回车事件\n * @param e - 键盘事件对象\n */\nfunction handleEnter(e: Event | KeyboardEvent) {\n /** 如果正在输入组合中(如中文输入),不触发回车事件 */\n if ('isComposing' in e) {\n if (e.isComposing) return\n } else {\n return\n }\n emit('enter', e)\n}\n\ndefineOptions({\n name: 'CommonInput',\n})\n</script>\n\n<template>\n <el-input v-bind=\"props\" v-model=\"modelValue\" @keydown.enter=\"handleEnter\">\n <template v-for=\"(_, name) in $slots\" :key=\"name\" #[name]=\"scoped\">\n <slot :name=\"name\" v-bind=\"scoped\" />\n </template>\n </el-input>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"ts\">\nimport { ElDatePicker } from 'element-plus'\nimport type { CommonDatePickerProps } from './type'\nimport type { ModelValueType } from 'element-plus'\n\n/** 组件Props定义,提供默认值 */\nconst props = withDefaults(defineProps<CommonDatePickerProps>(), {\n /** 默认日期格式为年-月-日 */\n valueFormat: 'YYYY-MM-DD',\n /** 默认可清空选择 */\n clearable: true,\n /** 默认显示底部操作栏 */\n showFooter: true,\n /** 默认占位符文本 */\n placeholder: '请选择日期',\n /** 默认开始日期占位符 */\n startPlaceholder: '开始日期',\n /** 默认结束日期占位符 */\n endPlaceholder: '结束日期',\n /** 默认触发表单验证 */\n validateEvent: true,\n})\n/** 日期选择器值,支持v-model双向绑定 */\nconst modelValue = defineModel<ModelValueType>()\n\ndefineOptions({\n name: 'CommonDatePicker',\n})\n</script>\n\n<template>\n <ElDatePicker v-bind=\"props\" v-model=\"modelValue\"></ElDatePicker>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"ts\">\nimport { ElRadioGroup } from 'element-plus'\nimport type { CommonRadioProps } from './type'\nimport type { RadioGroupProps } from 'element-plus'\n\n/** 组件Props定义,提供默认值 */\nconst props = withDefaults(defineProps<CommonRadioProps>(), {})\n\n/** 单选框组值,支持v-model双向绑定 */\nconst modelValue = defineModel<RadioGroupProps['modelValue']>()\n\ndefineOptions({\n name: 'CommonRadio',\n})\n</script>\n\n<template>\n <ElRadioGroup v-bind=\"props\" v-model=\"modelValue\"> </ElRadioGroup>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"ts\">\nimport { ElCheckboxGroup } from 'element-plus'\nimport type { CommonCheckboxProps } from './type'\nimport type { CheckboxGroupProps } from 'element-plus'\n\nconst props = withDefaults(defineProps<CommonCheckboxProps>(), {})\n\nconst modelValue = defineModel<CheckboxGroupProps['modelValue']>()\n\ndefineOptions({\n name: 'CommonCheckbox',\n})\n</script>\n\n<template>\n <ElCheckboxGroup v-bind=\"props\" v-model=\"modelValue\"> </ElCheckboxGroup>\n</template>\n\n<style scoped></style>\n","<script setup lang=\"ts\">\nimport { ElSwitch } from 'element-plus'\nimport type { CommonSwitchProps } from './type'\nimport type { SwitchProps } from 'element-plus'\nimport { computed } from 'vue'\nimport type { CSSProperties } from 'vue'\n\n/** 组件Props定义,提供默认值 */\nconst props = withDefaults(defineProps<CommonSwitchProps>(), {})\n\n/** 开关值,支持v-model双向绑定 */\nconst modelValue = defineModel<SwitchProps['modelValue']>()\n\n/**\n * 样式计算属性\n * 根据props中的颜色配置生成CSS变量,用于自定义开关颜色\n * 支持激活状态颜色、非激活状态颜色和边框颜色\n */\nconst style = computed(() => {\n const css: CSSProperties = {}\n /** 设置开关激活状态颜色 */\n if (props.activeColor) {\n css['--el-switch-on-color'] = props.activeColor\n }\n /** 设置开关非激活状态颜色 */\n if (props.inactiveColor) {\n css['--el-switch-off-color'] = props.inactiveColor\n }\n /** 设置开关边框颜色 */\n if (props.borderColor) {\n css['--el-switch-border-color'] = props.borderColor\n }\n return css\n})\n\ndefineOptions({\n name: 'CommonCheckbox',\n})\n</script>\n\n<template>\n <ElSwitch class=\"common-switch\" v-bind=\"props\" v-model=\"modelValue\" :style=\"style\"> </ElSwitch>\n</template>\n\n<style scoped></style>\n","import type { AnyObject } from '../index'\n\n/**\n * 返回所有参数中首位不为 null undefined ''的 值\n * @param args\n * @returns\n */\nexport function getFirstValidValue<T>(...args: T[]): T | undefined {\n return args.find((arg) => arg !== null && arg !== undefined && arg !== '')\n}\n\n/**\n * 过滤对象中的 null 和 undefined 值\n * @param obj 要过滤的对象\n * @returns 新对象,不包含 null 或 undefined 值的属性\n */\nexport function filterNullAndUndefined<T extends AnyObject>(obj: T): T {\n return Object.fromEntries(\n Object.entries(obj).filter(\n ([_, value]) => value !== null && value !== undefined && value !== '',\n ),\n ) as T\n}\n","import type { InjectionKey } from 'vue'\nimport type { Config } from '../types'\n/**\n * common 的接收配置项\n */\nexport const configInjectKey: InjectionKey<Config> = Symbol()\n","import { configInjectKey } from './key'\nimport { config } from '../index'\nimport { inject } from 'vue'\n\nexport * from './key'\n\n/** 获取上层配置的 config */\nexport function getCommonProviderConfig() {\n return inject(configInjectKey, config)\n}\n","import { cloneDeep } from 'lodash-es'\nimport { reactive, ref } from 'vue'\n\n/**\n * 创建一个可重置的值\n * @param value 初始值\n * @param format 格式化函数\n * @returns 一个数组,包含 state 和 reset 方法\n * @example\n * // 基本使用\n * const [state, reset] = useResettableRef({ count: 0 })\n * state.value.count++ // 1\n * reset() // 重置为初始值 { count: 0 }\n */\nexport function useResettableRef<T>(value: T, clone = cloneDeep) {\n const initialValue = clone(value)\n const state = ref(value)\n const reset = () => {\n state.value = clone(initialValue)\n }\n return <const>[state, reset]\n}\n\n/**\n * 创建一个可重置的响应式对象\n * @param value 初始值\n * @param clone 克隆函数\n * @returns 一个数组,包含 state 和 reset 方法\n * @example\n * const [state, reset] = useResettableReactive({ count: 0 })\n * state.count++ // 1\n * reset() // 重置为初始值 { count: 0 }\n */\nexport function useResettableReactive<T extends object>(value: T, clone = cloneDeep) {\n const state = reactive(clone(value))\n const reset = () => {\n Object.keys(state).forEach((key) => {\n Reflect.deleteProperty(state, key)\n })\n Object.assign(state, clone(value))\n }\n return <const>[state, reset]\n}\n","import { computed, useSlots } from 'vue'\nimport type { AnyObject } from '../index'\nimport { kebabCase, camelCase, merge } from 'lodash-es'\n\nexport function useGetComponentsChildrenSlots<K extends string>(keys: K[]) {\n const slots = useSlots()\n return computed(() => {\n const o = Object.fromEntries(keys.map((item) => [item, {}])) as Record<K, AnyObject>\n for (const key in slots) {\n if (!Object.prototype.hasOwnProperty.call(slots, key) && !keys.some((i) => i.startsWith(key)))\n continue\n const k = kebabCase(key)\n const value = slots[key]\n const index = k.indexOf('-')\n // 如果没有 - 则是单个插槽,不属于子组件的插槽\n if (index === -1 && !value) return\n const name = k.slice(0, index)\n const slotKey = k.slice(index + 1)\n merge(o, {\n [name]: {\n [camelCase(slotKey)]: key,\n },\n })\n }\n\n return o\n })\n}\n","import { reactive } from 'vue'\nimport type { Config } from './types'\n\n// 导出所有模块(包括组件、类型、工具等)\nexport * from './components'\nexport * from './types'\nexport * from './utils'\nexport * from './provide'\nexport * from './hooks'\n\nexport const config = reactive<Config>({\n component: {\n placeholder: '-',\n pagination: {\n defaultPageCount: 1,\n defaultPageSize: 10,\n },\n table: {\n headerCellStyle: {\n color: '#000000',\n fontWeight: 'normal',\n height: '48px',\n backgroundColor: '#f1f6ff',\n },\n },\n form: {\n submitText: '搜索',\n resetText: '重置',\n formItem: {\n components: {\n width: '200px',\n },\n },\n },\n },\n})\n"],"names":["config","_renderSlot","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","_createBlock","_unref","CommonForm","_withCtx","_mergeProps","CommonTable","CommonPagination","_useModel","CommonSelect","CommonInput","CommonDatePicker","CommonRadio","CommonCheckbox","CommonSwitch","_resolveDynamicComponent","_createVNode","_createTextVNode","_toDisplayString","_createSlots","$slots","_normalizeProps","_guardReactiveProps","index"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@yetuzi/vue3-query-components",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Vue3查询页面组件库,基于Element Plus封装的表格查询组件 - 开箱即用",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md",
|
|
18
|
+
"LICENSE"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "vite build",
|
|
22
|
+
"build:full": "node scripts/build.js",
|
|
23
|
+
"dev": "vite build --watch",
|
|
24
|
+
"type-check": "vue-tsc --noEmit",
|
|
25
|
+
"lint": "eslint src --ext .vue,.js,.ts --fix",
|
|
26
|
+
"format": "prettier --write src/**/*.{vue,js,ts}",
|
|
27
|
+
"prepublishOnly": "npm run build:full",
|
|
28
|
+
"release": "node scripts/publish.js",
|
|
29
|
+
"release:dry": "npm pack --dry-run",
|
|
30
|
+
"test": "npm run build && npm run release:dry"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"vue3",
|
|
34
|
+
"element-plus",
|
|
35
|
+
"components",
|
|
36
|
+
"typescript",
|
|
37
|
+
"ui",
|
|
38
|
+
"table",
|
|
39
|
+
"form",
|
|
40
|
+
"query",
|
|
41
|
+
"search",
|
|
42
|
+
"list-page",
|
|
43
|
+
"data-table",
|
|
44
|
+
"crud"
|
|
45
|
+
],
|
|
46
|
+
"author": "yetuzi",
|
|
47
|
+
"license": "MIT",
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": "https://gitee.com/yetuzi/vue3-common.git"
|
|
51
|
+
},
|
|
52
|
+
"publishConfig": {
|
|
53
|
+
"access": "public",
|
|
54
|
+
"registry": "https://registry.npmjs.org/"
|
|
55
|
+
},
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://gitee.com/yetuzi/vue3-common/issues"
|
|
58
|
+
},
|
|
59
|
+
"homepage": "https://gitee.com/yetuzi/vue3-common#readme",
|
|
60
|
+
"peerDependencies": {
|
|
61
|
+
"vue": "^3.5.0",
|
|
62
|
+
"element-plus": "^2.11.5",
|
|
63
|
+
"lodash-es": "^4.17.21"
|
|
64
|
+
},
|
|
65
|
+
"dependencies": {
|
|
66
|
+
"alova": "^3.3.4",
|
|
67
|
+
"dayjs": "^1.11.18",
|
|
68
|
+
"vue-hooks-plus": "^2.4.1"
|
|
69
|
+
},
|
|
70
|
+
"devDependencies": {
|
|
71
|
+
"@types/node": "^22.0.0",
|
|
72
|
+
"@vitejs/plugin-vue": "^6.0.0",
|
|
73
|
+
"@vue/tsconfig": "^0.8.0",
|
|
74
|
+
"eslint": "^9.0.0",
|
|
75
|
+
"prettier": "^3.0.0",
|
|
76
|
+
"typescript": "~5.9.0",
|
|
77
|
+
"vite": "^6.0.0",
|
|
78
|
+
"vue-tsc": "^3.0.0"
|
|
79
|
+
},
|
|
80
|
+
"engines": {
|
|
81
|
+
"node": ">=16.0.0"
|
|
82
|
+
},
|
|
83
|
+
"browserslist": [
|
|
84
|
+
"> 1%",
|
|
85
|
+
"last 2 versions",
|
|
86
|
+
"not dead"
|
|
87
|
+
]
|
|
88
|
+
}
|