@alibarbar/components 1.0.0 → 1.0.1
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/{dist/components → components}/FatTable/index.d.ts.map +1 -1
- package/package.json +19 -10
- package/dist/index.js.map +0 -1
- /package/{dist/components → components}/FatForm/FatForm.vue.d.ts +0 -0
- /package/{dist/components → components}/FatForm/FatForm.vue.d.ts.map +0 -0
- /package/{dist/components → components}/FatForm/FatFormItem.vue.d.ts +0 -0
- /package/{dist/components → components}/FatForm/FatFormItem.vue.d.ts.map +0 -0
- /package/{dist/components → components}/FatForm/index.d.ts +0 -0
- /package/{dist/components → components}/FatForm/index.d.ts.map +0 -0
- /package/{dist/components → components}/FatForm/types.d.ts +0 -0
- /package/{dist/components → components}/FatForm/types.d.ts.map +0 -0
- /package/{dist/components → components}/FatFormLayout/FatFormLayout.vue.d.ts +0 -0
- /package/{dist/components → components}/FatFormLayout/FatFormLayout.vue.d.ts.map +0 -0
- /package/{dist/components → components}/FatFormLayout/index.d.ts +0 -0
- /package/{dist/components → components}/FatFormLayout/index.d.ts.map +0 -0
- /package/{dist/components → components}/FatFormLayout/types.d.ts +0 -0
- /package/{dist/components → components}/FatFormLayout/types.d.ts.map +0 -0
- /package/{dist/components → components}/FatTable/FatTable.vue.d.ts +0 -0
- /package/{dist/components → components}/FatTable/FatTable.vue.d.ts.map +0 -0
- /package/{dist/components → components}/FatTable/index.d.ts +0 -0
- /package/{dist/components → components}/FatTable/types.d.ts +0 -0
- /package/{dist/components → components}/FatTable/types.d.ts.map +0 -0
- /package/{dist/components → components}/FatTableLayout/FatTableLayout.vue.d.ts +0 -0
- /package/{dist/components → components}/FatTableLayout/FatTableLayout.vue.d.ts.map +0 -0
- /package/{dist/components → components}/FatTableLayout/index.d.ts +0 -0
- /package/{dist/components → components}/FatTableLayout/index.d.ts.map +0 -0
- /package/{dist/components → components}/FatTableLayout/types.d.ts +0 -0
- /package/{dist/components → components}/FatTableLayout/types.d.ts.map +0 -0
- /package/{dist/hooks → hooks}/index.d.ts +0 -0
- /package/{dist/hooks → hooks}/index.d.ts.map +0 -0
- /package/{dist/i18n → i18n}/index.d.ts +0 -0
- /package/{dist/i18n → i18n}/index.d.ts.map +0 -0
- /package/{dist/i18n → i18n}/locales/en-US.d.ts +0 -0
- /package/{dist/i18n → i18n}/locales/en-US.d.ts.map +0 -0
- /package/{dist/i18n → i18n}/locales/zh-CN.d.ts +0 -0
- /package/{dist/i18n → i18n}/locales/zh-CN.d.ts.map +0 -0
- /package/{dist/index.d.ts → index.d.ts} +0 -0
- /package/{dist/index.d.ts.map → index.d.ts.map} +0 -0
- /package/{dist/index.js → index.js} +0 -0
- /package/{src/style → style}/fat-form-layout.scss +0 -0
- /package/{src/style → style}/fat-form.scss +0 -0
- /package/{src/style → style}/fat-table-layout.scss +0 -0
- /package/{src/style → style}/fat-table.scss +0 -0
- /package/{src/style → style}/index.scss +0 -0
- /package/{src/style → style}/variables.scss +0 -0
- /package/{dist/style.css → style.css} +0 -0
- /package/{dist/utils → utils}/index.d.ts +0 -0
- /package/{dist/utils → utils}/index.d.ts.map +0 -0
- /package/{dist/utils → utils}/types.d.ts +0 -0
- /package/{dist/utils → utils}/types.d.ts.map +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FatTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FatTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,QAAA,MAAM,mBAAmB,EAAe,OAAO,QAAQ,GAAG;IACxD,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;CAC5B,CAAA;AAMD,eAAe,mBAAmB,CAAA;AAClC,cAAc,SAAS,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,24 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alibarbar/components",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "业务组件库 - FatTable、FatForm、FatTableLayout、FatFormLayout",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "./
|
|
7
|
-
"module": "./
|
|
8
|
-
"types": "./
|
|
6
|
+
"main": "./index.js",
|
|
7
|
+
"module": "./index.js",
|
|
8
|
+
"types": "./index.d.ts",
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public"
|
|
11
11
|
},
|
|
12
12
|
"exports": {
|
|
13
13
|
".": {
|
|
14
|
-
"import": "./
|
|
15
|
-
"types": "./
|
|
14
|
+
"import": "./index.js",
|
|
15
|
+
"types": "./index.d.ts"
|
|
16
16
|
},
|
|
17
|
-
"./style": "./
|
|
17
|
+
"./style": "./style.css"
|
|
18
18
|
},
|
|
19
19
|
"files": [
|
|
20
|
-
"
|
|
21
|
-
"
|
|
20
|
+
"index.js",
|
|
21
|
+
"index.d.ts",
|
|
22
|
+
"index.d.ts.map",
|
|
23
|
+
"style.css",
|
|
24
|
+
"components",
|
|
25
|
+
"hooks",
|
|
26
|
+
"i18n",
|
|
27
|
+
"utils",
|
|
28
|
+
"style",
|
|
22
29
|
"README.md"
|
|
23
30
|
],
|
|
24
31
|
"sideEffects": [
|
|
@@ -27,7 +34,8 @@
|
|
|
27
34
|
],
|
|
28
35
|
"scripts": {
|
|
29
36
|
"dev": "vite",
|
|
30
|
-
"build": "vite build",
|
|
37
|
+
"build": "vite build && pnpm run build:flatten",
|
|
38
|
+
"build:flatten": "rm -f index.js index.d.ts index.d.ts.map style.css && cp -R dist/* .",
|
|
31
39
|
"build:check": "vue-tsc --noEmit && vite build",
|
|
32
40
|
"preview": "vite preview",
|
|
33
41
|
"type-check": "vue-tsc --noEmit",
|
|
@@ -53,6 +61,7 @@
|
|
|
53
61
|
"typescript": "^5.3.0",
|
|
54
62
|
"vite": "^5.0.0",
|
|
55
63
|
"vite-plugin-dts": "^3.6.0",
|
|
64
|
+
"vite-plugin-static-copy": "^3.1.4",
|
|
56
65
|
"vue-tsc": "^1.8.27"
|
|
57
66
|
},
|
|
58
67
|
"peerDependencies": {
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/i18n/locales/zh-CN.ts","../src/i18n/locales/en-US.ts","../src/i18n/index.ts","../src/components/FatTable/FatTable.vue","../src/components/FatTable/index.ts","../src/components/FatForm/FatForm.vue","../src/components/FatForm/FatFormItem.vue","../src/components/FatForm/index.ts","../src/components/FatTableLayout/FatTableLayout.vue","../src/components/FatTableLayout/index.ts","../src/components/FatFormLayout/FatFormLayout.vue","../src/components/FatFormLayout/index.ts","../src/utils/index.ts","../src/hooks/index.ts","../src/index.ts"],"sourcesContent":["export default {\n common: {\n confirm: '确认',\n cancel: '取消',\n submit: '提交',\n reset: '重置',\n search: '搜索',\n add: '新增',\n edit: '编辑',\n delete: '删除',\n save: '保存',\n loading: '加载中...',\n noData: '暂无数据'\n },\n table: {\n total: '共 {total} 条',\n pageSize: '每页显示',\n page: '页',\n goto: '前往',\n pageSizeOptions: ['10', '20', '50', '100']\n },\n form: {\n required: '此项为必填项',\n invalidFormat: '格式不正确',\n submitSuccess: '提交成功',\n submitFailed: '提交失败'\n }\n}\n","export default {\n common: {\n confirm: 'Confirm',\n cancel: 'Cancel',\n submit: 'Submit',\n reset: 'Reset',\n search: 'Search',\n add: 'Add',\n edit: 'Edit',\n delete: 'Delete',\n save: 'Save',\n loading: 'Loading...',\n noData: 'No Data'\n },\n table: {\n total: 'Total {total} items',\n pageSize: 'Items per page',\n page: 'Page',\n goto: 'Go to',\n pageSizeOptions: ['10', '20', '50', '100']\n },\n form: {\n required: 'This field is required',\n invalidFormat: 'Invalid format',\n submitSuccess: 'Submit successful',\n submitFailed: 'Submit failed'\n }\n}\n","import { createI18n } from 'vue-i18n'\nimport zhCN from './locales/zh-CN'\nimport enUS from './locales/en-US'\n\nexport type Locale = 'zh-CN' | 'en-US'\n\nconst messages = {\n 'zh-CN': zhCN,\n 'en-US': enUS\n}\n\nexport const i18n = createI18n({\n legacy: false,\n locale: 'zh-CN',\n fallbackLocale: 'en-US',\n messages\n})\n\nexport default i18n\n","<template>\n <div class=\"fat-table-wrapper\">\n <div class=\"fat-table\" :style=\"tableStyle\">\n <table class=\"fat-table__inner\">\n <thead class=\"fat-table__header\">\n <tr>\n <th\n v-for=\"(column, index) in columns\"\n :key=\"getColumnKey(column, index)\"\n :style=\"getColumnStyle(column)\"\n :class=\"getColumnClass(column)\"\n >\n <div class=\"fat-table__cell\">\n <slot\n :name=\"`header-${getColumnKey(column, index)}`\"\n :column=\"column\"\n :index=\"index\"\n >\n <span v-if=\"column.renderHeader\">\n <component\n :is=\"() => column.renderHeader?.(column, index)\"\n />\n </span>\n <span v-else>{{ column.label }}</span>\n <span\n v-if=\"column.sortable\"\n class=\"fat-table__sort\"\n @click=\"handleSort(column)\"\n >\n <span\n class=\"fat-table__sort-icon\"\n :class=\"{ active: sortState.prop === column.prop && sortState.order === 'ascending' }\"\n >\n ↑\n </span>\n <span\n class=\"fat-table__sort-icon\"\n :class=\"{ active: sortState.prop === column.prop && sortState.order === 'descending' }\"\n >\n ↓\n </span>\n </span>\n </slot>\n </div>\n </th>\n </tr>\n </thead>\n <tbody class=\"fat-table__body\">\n <tr\n v-if=\"loading\"\n class=\"fat-table__loading-row\"\n >\n <td :colspan=\"columns.length\" class=\"fat-table__loading-cell\">\n {{ t('common.loading') }}\n </td>\n </tr>\n <tr\n v-else-if=\"!list || list.length === 0\"\n class=\"fat-table__empty-row\"\n >\n <td :colspan=\"columns.length\" class=\"fat-table__empty-cell\">\n {{ emptyText || t('common.noData') }}\n </td>\n </tr>\n <tr\n v-else\n v-for=\"(row, rowIndex) in list\"\n :key=\"getRowKey(row, rowIndex)\"\n :class=\"[\n 'fat-table__row',\n { 'fat-table__row--stripe': stripe && rowIndex % 2 === 1 }\n ]\"\n @click=\"handleRowClick(row, $event)\"\n >\n <td\n v-for=\"(column, colIndex) in columns\"\n :key=\"getColumnKey(column, colIndex)\"\n :class=\"getCellClass(column)\"\n :style=\"getColumnStyle(column)\"\n >\n <div class=\"fat-table__cell\">\n <slot\n :name=\"`cell-${getColumnKey(column, colIndex)}`\"\n :row=\"row\"\n :column=\"column\"\n :value=\"getCellValue(row, column)\"\n :index=\"rowIndex\"\n >\n <span v-if=\"column.render\">\n <component\n :is=\"() => column.render?.(getCellValue(row, column), row, rowIndex)\"\n />\n </span>\n <span v-else>{{ formatCellValue(row, column) }}</span>\n </slot>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div\n v-if=\"pagination\"\n class=\"fat-table__pagination\"\n >\n <div class=\"fat-table__pagination-info\">\n {{ t('table.total', { total: paginationData.total }) }}\n </div>\n <div class=\"fat-table__pagination-controls\">\n <select\n :value=\"paginationData.pageSize\"\n class=\"fat-table__page-size-select\"\n @change=\"handlePageSizeChange($event)\"\n >\n <option\n v-for=\"size in pageSizes\"\n :key=\"size\"\n :value=\"size\"\n >\n {{ size }}\n </option>\n </select>\n <span class=\"fat-table__pagination-text\">{{ t('table.pageSize') }}</span>\n <button\n class=\"fat-table__pagination-btn\"\n :disabled=\"paginationData.currentPage === 1\"\n @click=\"handlePageChange(paginationData.currentPage - 1)\"\n >\n 上一页\n </button>\n <span class=\"fat-table__pagination-text\">\n {{ t('table.page') }} {{ paginationData.currentPage }} / {{ totalPages }}\n </span>\n <button\n class=\"fat-table__pagination-btn\"\n :disabled=\"paginationData.currentPage >= totalPages\"\n @click=\"handlePageChange(paginationData.currentPage + 1)\"\n >\n 下一页\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T extends Record<string, any> = any, S extends Record<string, any> = Record<string, any>\">\nimport { ref, computed, reactive, watch, onMounted } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport type { FatTableColumn, SortOrder, FatTableProps, FatTableEmits, FatTableRequestParams, FatTableRequestResponse } from './types'\n\nconst props = withDefaults(defineProps<FatTableProps<T, S>>(), {\n data: () => [],\n loading: false,\n pagination: false,\n stripe: false,\n border: true,\n size: 'default',\n emptyText: '',\n requestOnMounted: true,\n requestOnQueryChange: true,\n requestOnSortChange: true\n})\n\nconst emit = defineEmits<FatTableEmits<T, S>>()\n\nconst { t } = useI18n()\n\n// 内部状态管理(当使用 fetchHandler 时)\nconst internalList = ref<T[]>([]) as { value: T[] }\nconst internalLoading = ref(false)\nconst internalPagination = reactive({\n currentPage: 1,\n pageSize: 10,\n total: 0\n})\n\n// 查询参数\nconst query = computed(() => props.query || ({} as S))\n\n// 排序状态\nconst sortState = reactive<{ prop: string; order: SortOrder }>({\n prop: '',\n order: null\n})\n\n// 判断是否使用 fetchHandler 模式\nconst useFetchHandler = computed(() => !!props.fetchHandler)\n\n// 数据列表:如果使用 fetchHandler,使用内部数据;否则使用外部 data\nconst list = computed(() => {\n if (useFetchHandler.value) {\n return internalList.value\n }\n return props.data || []\n})\n\n// 加载状态:如果使用 fetchHandler,使用内部 loading;否则使用外部 loading\nconst loading = computed(() => {\n if (useFetchHandler.value) {\n return internalLoading.value\n }\n return props.loading\n})\n\n// 分页数据\nconst paginationData = computed(() => {\n if (useFetchHandler.value) {\n return internalPagination\n }\n if (typeof props.pagination === 'boolean') {\n return {\n currentPage: 1,\n pageSize: 10,\n total: list.value.length\n }\n }\n return props.pagination\n})\n\nconst pageSizes = computed(() => {\n if (typeof props.pagination === 'object' && props.pagination.pageSizes) {\n return props.pagination.pageSizes\n }\n return [10, 20, 50, 100]\n})\n\nconst totalPages = computed(() => {\n const total = paginationData.value.total\n const pageSize = paginationData.value.pageSize\n return Math.ceil(total / pageSize)\n})\n\nconst tableStyle = computed(() => {\n const style: Record<string, string> = {}\n if (props.height) {\n style.height = typeof props.height === 'number' ? `${props.height}px` : props.height\n }\n if (props.maxHeight) {\n style.maxHeight = typeof props.maxHeight === 'number' ? `${props.maxHeight}px` : props.maxHeight\n }\n return style\n})\n\nconst getColumnKey = (column: FatTableColumn<T, S>, index: number) => {\n return column.key || column.prop || `column-${index}`\n}\n\nconst getRowKey = (row: T, index: number) => {\n if (typeof props.rowKey === 'function') {\n return props.rowKey(row)\n }\n if (typeof props.rowKey === 'string') {\n return (row as any)[props.rowKey]\n }\n return index\n}\n\nconst getColumnStyle = (column: FatTableColumn<T, S>) => {\n const style: Record<string, string> = {}\n if (column.width) {\n style.width = typeof column.width === 'number' ? `${column.width}px` : column.width\n }\n if (column.minWidth) {\n style.minWidth = typeof column.minWidth === 'number' ? `${column.minWidth}px` : column.minWidth\n }\n if (column.align) {\n style.textAlign = column.align\n }\n return style\n}\n\nconst getColumnClass = (column: FatTableColumn<T, S>) => {\n return {\n 'fat-table__header-cell--fixed-left': column.fixed === 'left' || (column.fixed === true),\n 'fat-table__header-cell--fixed-right': column.fixed === 'right'\n }\n}\n\nconst getCellClass = (column: FatTableColumn<T, S>) => {\n return {\n 'fat-table__cell--fixed-left': column.fixed === 'left' || (column.fixed === true),\n 'fat-table__cell--fixed-right': column.fixed === 'right'\n }\n}\n\nconst getCellValue = (row: T, column: FatTableColumn<T, S>) => {\n if (!column.prop) return undefined\n return (row as any)[column.prop]\n}\n\nconst formatCellValue = (row: T, column: FatTableColumn<T, S>) => {\n const value = getCellValue(row, column)\n return value ?? ''\n}\n\n// 获取请求参数\nconst getRequestParams = (): FatTableRequestParams<T, S> => {\n const page = paginationData.value.currentPage\n const pageSize = paginationData.value.pageSize\n \n return {\n pagination: {\n pageSize,\n page,\n offset: (page - 1) * pageSize\n },\n sort: sortState.prop && sortState.order ? {\n prop: sortState.prop,\n order: sortState.order\n } : undefined,\n query: query.value,\n list: internalList.value\n }\n}\n\n// 执行数据获取\nconst fetchData = async () => {\n if (!props.fetchHandler) return\n \n internalLoading.value = true\n try {\n const params = getRequestParams()\n const response: FatTableRequestResponse<T> = await props.fetchHandler(params)\n \n internalList.value = response.list as T[]\n internalPagination.total = response.total\n } catch (error) {\n console.error('FatTable fetchData error:', error)\n internalList.value = []\n internalPagination.total = 0\n } finally {\n internalLoading.value = false\n }\n}\n\nconst handleSort = (column: FatTableColumn<T, S>) => {\n if (!column.sortable || !column.prop) return\n\n if (sortState.prop === column.prop) {\n if (sortState.order === 'ascending') {\n sortState.order = 'descending'\n } else if (sortState.order === 'descending') {\n sortState.prop = ''\n sortState.order = null\n } else {\n sortState.order = 'ascending'\n }\n } else {\n sortState.prop = column.prop\n sortState.order = 'ascending'\n }\n\n if (sortState.prop && sortState.order && column.prop) {\n emit('sort-change', {\n column,\n prop: column.prop,\n order: sortState.order\n })\n \n // 如果使用 fetchHandler 且开启了自动请求,则触发数据获取\n if (useFetchHandler.value && props.requestOnSortChange) {\n internalPagination.currentPage = 1 // 排序时重置到第一页\n fetchData()\n }\n }\n}\n\nconst handlePageChange = (page: number) => {\n if (useFetchHandler.value) {\n internalPagination.currentPage = page\n fetchData()\n } else if (typeof props.pagination === 'object') {\n emit('page-change', page)\n }\n}\n\nconst handlePageSizeChange = (event: Event) => {\n const target = event.target as HTMLSelectElement\n const pageSize = Number(target.value)\n \n if (useFetchHandler.value) {\n internalPagination.pageSize = pageSize\n internalPagination.currentPage = 1 // 改变每页条数时重置到第一页\n fetchData()\n } else if (typeof props.pagination === 'object') {\n emit('page-size-change', pageSize)\n }\n}\n\nconst handleRowClick = (row: T, event: Event) => {\n emit('row-click', row, {} as FatTableColumn<T, S>, event)\n}\n\n// 监听查询参数变化\nwatch(\n () => props.query,\n () => {\n if (useFetchHandler.value && props.requestOnQueryChange) {\n internalPagination.currentPage = 1 // 查询时重置到第一页\n fetchData()\n }\n },\n { deep: true }\n)\n\n// 监听分页配置变化(外部传入的分页配置)\nwatch(\n () => props.pagination,\n (newPagination) => {\n if (useFetchHandler.value && typeof newPagination === 'object') {\n internalPagination.currentPage = newPagination.currentPage\n internalPagination.pageSize = newPagination.pageSize\n // total 由 fetchHandler 返回,不从这里更新\n }\n },\n { deep: true }\n)\n\n// 挂载时获取数据\nonMounted(() => {\n if (useFetchHandler.value && props.requestOnMounted) {\n fetchData()\n }\n})\n\n// 暴露方法供外部调用\ndefineExpose({\n /**\n * 刷新数据\n */\n refresh: () => {\n if (useFetchHandler.value) {\n fetchData()\n }\n },\n /**\n * 重置并重新获取数据\n */\n reset: () => {\n if (useFetchHandler.value) {\n internalPagination.currentPage = 1\n sortState.prop = ''\n sortState.order = null\n fetchData()\n }\n },\n /**\n * 获取请求参数\n */\n getRequestParams\n})\n</script>\n\n<style scoped>\n.fat-table-wrapper {\n width: 100%;\n}\n\n.fat-table {\n width: 100%;\n overflow: auto;\n border: 1px solid #ebeef5;\n border-radius: 4px;\n}\n\n.fat-table__inner {\n width: 100%;\n border-collapse: collapse;\n table-layout: fixed;\n}\n\n.fat-table__header {\n background-color: #fafafa;\n}\n\n.fat-table__header th {\n padding: 12px 0;\n text-align: left;\n font-weight: 500;\n color: #606266;\n border-bottom: 1px solid #ebeef5;\n padding-left: 12px;\n padding-right: 12px;\n}\n\n.fat-table__body td {\n padding: 12px;\n border-bottom: 1px solid #ebeef5;\n color: #606266;\n}\n\n.fat-table__row {\n transition: background-color 0.25s;\n}\n\n.fat-table__row:hover {\n background-color: #f5f7fa;\n}\n\n.fat-table__row--stripe {\n background-color: #fafafa;\n}\n\n.fat-table__row--stripe:hover {\n background-color: #f5f7fa;\n}\n\n.fat-table__cell {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fat-table__sort {\n display: flex;\n flex-direction: column;\n cursor: pointer;\n margin-left: 4px;\n}\n\n.fat-table__sort-icon {\n font-size: 12px;\n color: #c0c4cc;\n line-height: 1;\n transition: color 0.25s;\n}\n\n.fat-table__sort-icon.active {\n color: #409eff;\n}\n\n.fat-table__loading-cell,\n.fat-table__empty-cell {\n text-align: center;\n padding: 40px 0;\n color: #909399;\n}\n\n.fat-table__pagination {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 16px;\n padding: 0 12px;\n}\n\n.fat-table__pagination-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.fat-table__page-size-select {\n padding: 4px 8px;\n border: 1px solid #dcdfe6;\n border-radius: 4px;\n outline: none;\n}\n\n.fat-table__pagination-btn {\n padding: 6px 12px;\n border: 1px solid #dcdfe6;\n border-radius: 4px;\n background: #fff;\n cursor: pointer;\n transition: all 0.25s;\n}\n\n.fat-table__pagination-btn:hover:not(:disabled) {\n color: #409eff;\n border-color: #409eff;\n}\n\n.fat-table__pagination-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.fat-table__pagination-text {\n color: #606266;\n font-size: 14px;\n}\n</style>\n","import FatTable from './FatTable.vue'\nimport type { App } from 'vue'\nimport type { ComponentPublicInstance } from 'vue'\n\nconst FatTableWithInstall = FatTable as typeof FatTable & {\n install: (app: App) => void\n}\n\nFatTableWithInstall.install = (app: App) => {\n app.component('FatTable', FatTable)\n}\n\nexport default FatTableWithInstall\nexport * from './types'\n","<template>\n <form class=\"fat-form\" :class=\"formClass\" @submit.prevent=\"handleSubmit\">\n <slot :form=\"formInstance\" />\n \n <div v-if=\"enableSubmitter\" class=\"fat-form__submitter\">\n <slot name=\"submitter\" :form=\"formInstance\">\n <button\n type=\"submit\"\n class=\"fat-form__submit-btn\"\n :disabled=\"submitting || disabled\"\n :loading=\"submitting\"\n >\n {{ submitText || t('common.submit') }}\n </button>\n <button\n v-if=\"enableReset\"\n type=\"button\"\n class=\"fat-form__reset-btn\"\n :disabled=\"submitting || disabled\"\n @click=\"handleReset\"\n >\n {{ resetText || t('common.reset') }}\n </button>\n </slot>\n </div>\n </form>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, reactive, provide } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport type { FatFormMethods, FatFormMode, FatFormLayout } from './types'\n\ninterface Props {\n modelValue?: Record<string, any>\n mode?: FatFormMode\n layout?: FatFormLayout\n labelWidth?: string | number\n labelSuffix?: string\n size?: 'large' | 'default' | 'small'\n disabled?: boolean\n loading?: boolean\n initialValue?: Record<string, any>\n rules?: Record<string, any[]>\n enableSubmitter?: boolean\n enableReset?: boolean\n submitText?: string\n resetText?: string\n onSubmit?: (values: Record<string, any>) => Promise<void> | void\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: () => ({}),\n mode: 'editable',\n layout: 'horizontal',\n labelSuffix: ':',\n size: 'default',\n disabled: false,\n loading: false,\n initialValue: () => ({}),\n rules: () => ({}),\n enableSubmitter: true,\n enableReset: true\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: Record<string, any>]\n 'submit': [values: Record<string, any>]\n 'reset': [values: Record<string, any>]\n 'validate': [prop: string, isValid: boolean, message?: string]\n}>()\n\nconst { t } = useI18n()\n\nconst submitting = ref(false)\nconst formValues = reactive<Record<string, any>>({ ...props.initialValue, ...props.modelValue })\nconst errors = reactive<Record<string, string>>({})\n\nconst formClass = computed(() => {\n return [\n `fat-form--${props.layout}`,\n `fat-form--${props.size}`,\n {\n 'fat-form--disabled': props.disabled,\n 'fat-form--preview': props.mode === 'preview'\n }\n ]\n})\n\nconst formInstance: FatFormMethods = {\n get mode() {\n return props.mode\n },\n get layout() {\n return props.layout\n },\n get disabled() {\n return props.disabled\n },\n get loading() {\n return computed(() => props.loading || submitting.value)\n },\n get submitting() {\n return computed(() => submitting.value)\n },\n get values() {\n return computed(() => formValues)\n },\n async submit() {\n const isValid = await this.validate()\n if (!isValid) {\n return\n }\n \n submitting.value = true\n try {\n if (props.onSubmit) {\n await props.onSubmit({ ...formValues })\n }\n emit('submit', { ...formValues })\n } finally {\n submitting.value = false\n }\n },\n reset() {\n Object.keys(formValues).forEach(key => {\n delete formValues[key]\n })\n Object.assign(formValues, { ...props.initialValue })\n Object.keys(errors).forEach(key => {\n delete errors[key]\n })\n emit('update:modelValue', { ...formValues })\n emit('reset', { ...formValues })\n },\n async validate() {\n let isValid = true\n const rules = props.rules || {}\n \n for (const [prop, ruleList] of Object.entries(rules)) {\n const value = formValues[prop]\n for (const rule of ruleList) {\n if (rule.required && (value === undefined || value === null || value === '')) {\n errors[prop] = rule.message || `${prop} 不能为空`\n emit('validate', prop, false, errors[prop])\n isValid = false\n break\n }\n if (rule.validator && typeof rule.validator === 'function') {\n try {\n await rule.validator(rule, value, formValues)\n } catch (error: any) {\n errors[prop] = error.message || '验证失败'\n emit('validate', prop, false, errors[prop])\n isValid = false\n break\n }\n }\n }\n if (isValid && errors[prop]) {\n delete errors[prop]\n emit('validate', prop, true)\n }\n }\n \n return isValid\n },\n async validateField(prop: string | string[]) {\n const propsToValidate = Array.isArray(prop) ? prop : [prop]\n let isValid = true\n \n for (const p of propsToValidate) {\n const rules = props.rules?.[p] || []\n const value = formValues[p]\n \n for (const rule of rules) {\n if (rule.required && (value === undefined || value === null || value === '')) {\n errors[p] = rule.message || `${p} 不能为空`\n emit('validate', p, false, errors[p])\n isValid = false\n break\n }\n if (rule.validator && typeof rule.validator === 'function') {\n try {\n await rule.validator(rule, value, formValues)\n } catch (error: any) {\n errors[p] = error.message || '验证失败'\n emit('validate', p, false, errors[p])\n isValid = false\n break\n }\n }\n }\n if (isValid && errors[p]) {\n delete errors[p]\n emit('validate', p, true)\n }\n }\n \n return isValid\n },\n clearValidate(prop?: string | string[]) {\n if (!prop) {\n Object.keys(errors).forEach(key => {\n delete errors[key]\n })\n } else {\n const propsToClear = Array.isArray(prop) ? prop : [prop]\n propsToClear.forEach(p => {\n delete errors[p]\n })\n }\n },\n getFieldValue(prop: string) {\n return formValues[prop]\n },\n setFieldValue(prop: string, value: any) {\n formValues[prop] = value\n emit('update:modelValue', { ...formValues })\n }\n}\n\nprovide('fatForm', formInstance)\nprovide('fatFormErrors', errors)\n\nconst handleSubmit = async () => {\n await formInstance.submit()\n}\n\nconst handleReset = () => {\n formInstance.reset()\n}\n</script>\n\n<style scoped>\n.fat-form {\n width: 100%;\n}\n\n.fat-form--horizontal {\n /* 水平布局样式 */\n}\n\n.fat-form--vertical {\n /* 垂直布局样式 */\n}\n\n.fat-form--inline {\n /* 行内布局样式 */\n}\n\n.fat-form--disabled {\n opacity: 0.6;\n pointer-events: none;\n}\n\n.fat-form__submitter {\n display: flex;\n gap: 12px;\n margin-top: 24px;\n}\n\n.fat-form__submit-btn,\n.fat-form__reset-btn {\n padding: 8px 16px;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.25s;\n font-size: 14px;\n}\n\n.fat-form__submit-btn {\n background-color: #409eff;\n color: #fff;\n border: 1px solid #409eff;\n}\n\n.fat-form__submit-btn:hover:not(:disabled) {\n background-color: #66b1ff;\n border-color: #66b1ff;\n}\n\n.fat-form__submit-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.fat-form__reset-btn {\n background-color: #fff;\n color: #606266;\n border: 1px solid #dcdfe6;\n}\n\n.fat-form__reset-btn:hover:not(:disabled) {\n color: #409eff;\n border-color: #409eff;\n}\n\n.fat-form__reset-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n</style>\n","<template>\n <div\n v-if=\"!hidden\"\n class=\"fat-form-item\"\n :class=\"formItemClass\"\n >\n <label\n v-if=\"label\"\n class=\"fat-form-item__label\"\n :style=\"labelStyle\"\n >\n <span v-if=\"required\" class=\"fat-form-item__required\">*</span>\n {{ label }}{{ labelSuffix }}\n </label>\n <div class=\"fat-form-item__content\" :style=\"contentStyle\">\n <slot :value=\"value\" :form=\"form\" />\n <div v-if=\"errorMessage\" class=\"fat-form-item__error\">\n {{ errorMessage }}\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, watch } from 'vue'\nimport type { FatFormMethods } from './types'\n\ninterface Props {\n prop: string\n label?: string\n required?: boolean\n hidden?: boolean\n disabled?: boolean\n labelWidth?: string | number\n width?: string | number\n}\n\nconst props = defineProps<Props>()\n\nconst form = inject<FatFormMethods>('fatForm')\nconst errors = inject<Record<string, string>>('fatFormErrors', {})\n\nconst labelSuffix = computed(() => {\n return form?.layout === 'horizontal' ? (form as any).labelSuffix || ':' : ''\n})\n\nconst value = computed(() => {\n return form?.getFieldValue(props.prop)\n})\n\nconst errorMessage = computed(() => {\n return errors[props.prop]\n})\n\nconst hidden = computed(() => {\n return props.hidden || form?.mode === 'preview'\n})\n\nconst formItemClass = computed(() => {\n return [\n `fat-form-item--${form?.layout || 'horizontal'}`,\n {\n 'fat-form-item--error': !!errorMessage.value,\n 'fat-form-item--required': props.required,\n 'fat-form-item--disabled': props.disabled || form?.disabled\n }\n ]\n})\n\nconst labelStyle = computed(() => {\n const style: Record<string, string> = {}\n if (form?.layout === 'horizontal' && (props.labelWidth || (form as any).labelWidth)) {\n const width = props.labelWidth || (form as any).labelWidth\n style.width = typeof width === 'number' ? `${width}px` : width\n }\n return style\n})\n\nconst contentStyle = computed(() => {\n const style: Record<string, string> = {}\n if (props.width) {\n style.width = typeof props.width === 'number' ? `${props.width}px` : props.width\n }\n return style\n})\n\nwatch(\n () => value.value,\n (newVal) => {\n if (form) {\n form.setFieldValue(props.prop, newVal)\n }\n },\n { deep: true }\n)\n</script>\n\n<style scoped>\n.fat-form-item {\n display: flex;\n margin-bottom: 18px;\n}\n\n.fat-form-item--horizontal {\n flex-direction: row;\n align-items: flex-start;\n}\n\n.fat-form-item--vertical {\n flex-direction: column;\n}\n\n.fat-form-item__label {\n padding-right: 12px;\n line-height: 32px;\n color: #606266;\n font-size: 14px;\n flex-shrink: 0;\n}\n\n.fat-form-item__required {\n color: #f56c6c;\n margin-right: 4px;\n}\n\n.fat-form-item__content {\n flex: 1;\n position: relative;\n}\n\n.fat-form-item__error {\n color: #f56c6c;\n font-size: 12px;\n line-height: 1;\n padding-top: 4px;\n}\n\n.fat-form-item--error .fat-form-item__content {\n /* 错误状态样式 */\n}\n\n.fat-form-item--disabled {\n opacity: 0.6;\n pointer-events: none;\n}\n</style>\n","import FatForm from './FatForm.vue'\nimport FatFormItem from './FatFormItem.vue'\nimport type { App } from 'vue'\n\nFatForm.install = (app: App) => {\n app.component('FatForm', FatForm)\n app.component('FatFormItem', FatFormItem)\n}\n\nexport default FatForm\nexport { FatFormItem }\nexport * from './types'\n","<template>\n <div class=\"fat-table-layout\">\n <div v-if=\"title || $slots.title\" class=\"fat-table-layout__header\">\n <slot name=\"title\">\n <h2 v-if=\"title\" class=\"fat-table-layout__title\">{{ title }}</h2>\n </slot>\n </div>\n \n <div v-if=\"showQuery && $slots.query\" class=\"fat-table-layout__query\">\n <slot name=\"query\" />\n </div>\n \n <div v-if=\"showToolbar && $slots.toolbar\" class=\"fat-table-layout__toolbar\">\n <slot name=\"toolbar\" />\n </div>\n \n <div class=\"fat-table-layout__table\">\n <slot name=\"default\" />\n </div>\n \n <div v-if=\"showPagination && $slots.pagination\" class=\"fat-table-layout__pagination\">\n <slot name=\"pagination\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { FatTableLayoutProps } from './types'\n\nwithDefaults(defineProps<FatTableLayoutProps>(), {\n showQuery: true,\n showToolbar: true,\n showPagination: true\n})\n</script>\n\n<style scoped>\n.fat-table-layout {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.fat-table-layout__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.fat-table-layout__title {\n margin: 0;\n font-size: 18px;\n font-weight: 500;\n color: #303133;\n}\n\n.fat-table-layout__query {\n padding: 16px;\n background-color: #fff;\n border-radius: 4px;\n border: 1px solid #ebeef5;\n}\n\n.fat-table-layout__toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 0;\n}\n\n.fat-table-layout__table {\n flex: 1;\n}\n\n.fat-table-layout__pagination {\n display: flex;\n justify-content: flex-end;\n padding: 12px 0;\n}\n</style>\n","import FatTableLayout from './FatTableLayout.vue'\nimport type { App } from 'vue'\n\nFatTableLayout.install = (app: App) => {\n app.component('FatTableLayout', FatTableLayout)\n}\n\nexport default FatTableLayout\nexport * from './types'\n","<template>\n <div class=\"fat-form-layout\">\n <div v-if=\"title || $slots.title || showBack\" class=\"fat-form-layout__header\">\n <div class=\"fat-form-layout__header-left\">\n <button\n v-if=\"showBack\"\n class=\"fat-form-layout__back-btn\"\n @click=\"handleBack\"\n >\n ← {{ t('common.cancel') }}\n </button>\n <slot name=\"title\">\n <h2 v-if=\"title\" class=\"fat-form-layout__title\">{{ title }}</h2>\n </slot>\n </div>\n <div v-if=\"$slots.extra\" class=\"fat-form-layout__header-extra\">\n <slot name=\"extra\" />\n </div>\n </div>\n \n <div class=\"fat-form-layout__content\">\n <slot name=\"default\" />\n </div>\n \n <div v-if=\"showSubmitter && $slots.submitter\" class=\"fat-form-layout__footer\">\n <slot name=\"submitter\" />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useI18n } from 'vue-i18n'\nimport type { FatFormLayoutProps } from './types'\n\nwithDefaults(defineProps<FatFormLayoutProps>(), {\n showSubmitter: true,\n showBack: false\n})\n\nconst emit = defineEmits<{\n back: []\n}>()\n\nconst { t } = useI18n()\n\nconst handleBack = () => {\n emit('back')\n}\n</script>\n\n<style scoped>\n.fat-form-layout {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.fat-form-layout__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-bottom: 16px;\n border-bottom: 1px solid #ebeef5;\n}\n\n.fat-form-layout__header-left {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.fat-form-layout__back-btn {\n padding: 4px 8px;\n background: transparent;\n border: none;\n cursor: pointer;\n color: #606266;\n font-size: 14px;\n transition: color 0.25s;\n}\n\n.fat-form-layout__back-btn:hover {\n color: #409eff;\n}\n\n.fat-form-layout__title {\n margin: 0;\n font-size: 20px;\n font-weight: 500;\n color: #303133;\n}\n\n.fat-form-layout__content {\n flex: 1;\n}\n\n.fat-form-layout__footer {\n padding-top: 16px;\n border-top: 1px solid #ebeef5;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n}\n</style>\n","import FatFormLayout from './FatFormLayout.vue'\nimport type { App } from 'vue'\n\nFatFormLayout.install = (app: App) => {\n app.component('FatFormLayout', FatFormLayout)\n}\n\nexport default FatFormLayout\nexport * from './types'\n","import { useI18n } from 'vue-i18n'\nimport type { Composer } from 'vue-i18n'\n\nexport const useI18nT = (): Composer['t'] => {\n const { t } = useI18n()\n return t\n}\n\nexport * from './types'\n","import { useI18n } from 'vue-i18n'\nimport type { Composer } from 'vue-i18n'\n\nexport const useT = (): Composer['t'] => {\n const { t } = useI18n()\n return t\n}\n","import type { App } from 'vue'\nimport { i18n } from './i18n'\nimport './style/index.scss'\n\n// 组件\nimport FatTable from './components/FatTable'\nimport FatForm from './components/FatForm'\nimport FatTableLayout from './components/FatTableLayout'\nimport FatFormLayout from './components/FatFormLayout'\n\n// 导出类型\nexport * from './components/FatTable/types'\nexport * from './components/FatForm/types'\nexport * from './components/FatTableLayout/types'\nexport * from './components/FatFormLayout/types'\n\n// 导出组件\nexport { FatTable, FatForm, FatTableLayout, FatFormLayout }\nexport { default as i18n } from './i18n'\n\n// 导出工具函数\nexport * from './utils'\nexport * from './hooks'\n\n// 组件列表\nconst components = [\n FatTable,\n FatForm,\n FatTableLayout,\n FatFormLayout\n]\n\n// 安装函数\nconst install = (app: App) => {\n components.forEach(component => {\n const comp = component as any\n if (comp.install) {\n app.use(comp)\n } else if (comp.name) {\n app.component(comp.name, comp)\n }\n })\n \n // 安装 i18n\n app.use(i18n)\n}\n\n// 支持按需引入\nexport default {\n install,\n FatTable,\n FatForm,\n FatTableLayout,\n FatFormLayout\n}\n"],"names":["index","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_Fragment","_renderList","_normalizeStyle","_normalizeClass","_hoisted_4","_renderSlot","_hoisted_5","_createBlock","_resolveDynamicComponent","_hoisted_6","_toDisplayString","_unref","$slots","_hoisted_7","FatTable"],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|