diff --git a/apps/core-ant-design-vue/src/types/components.d.ts b/apps/core-ant-design-vue/src/types/components.d.ts index 35aa0d3e..aed426a3 100755 --- a/apps/core-ant-design-vue/src/types/components.d.ts +++ b/apps/core-ant-design-vue/src/types/components.d.ts @@ -21,6 +21,7 @@ declare module 'vue' { AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] FaButton: typeof import('@fantastic-admin/components')['FaButton'] FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -56,7 +57,9 @@ declare module 'vue' { FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + FaTable: typeof import('@fantastic-admin/components')['FaTable'] FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + FaTag: typeof import('@fantastic-admin/components')['FaTag'] FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] FaToast: typeof import('@fantastic-admin/components')['FaToast'] FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] @@ -75,6 +78,7 @@ declare global { const AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] const FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] const FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + const FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] const FaButton: typeof import('@fantastic-admin/components')['FaButton'] const FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] const FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -110,7 +114,9 @@ declare global { const FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] const FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] const FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + const FaTable: typeof import('@fantastic-admin/components')['FaTable'] const FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + const FaTag: typeof import('@fantastic-admin/components')['FaTag'] const FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] const FaToast: typeof import('@fantastic-admin/components')['FaToast'] const FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] diff --git a/apps/core-antdv-next/src/types/components.d.ts b/apps/core-antdv-next/src/types/components.d.ts index 35aa0d3e..aed426a3 100755 --- a/apps/core-antdv-next/src/types/components.d.ts +++ b/apps/core-antdv-next/src/types/components.d.ts @@ -21,6 +21,7 @@ declare module 'vue' { AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] FaButton: typeof import('@fantastic-admin/components')['FaButton'] FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -56,7 +57,9 @@ declare module 'vue' { FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + FaTable: typeof import('@fantastic-admin/components')['FaTable'] FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + FaTag: typeof import('@fantastic-admin/components')['FaTag'] FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] FaToast: typeof import('@fantastic-admin/components')['FaToast'] FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] @@ -75,6 +78,7 @@ declare global { const AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] const FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] const FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + const FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] const FaButton: typeof import('@fantastic-admin/components')['FaButton'] const FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] const FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -110,7 +114,9 @@ declare global { const FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] const FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] const FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + const FaTable: typeof import('@fantastic-admin/components')['FaTable'] const FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + const FaTag: typeof import('@fantastic-admin/components')['FaTag'] const FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] const FaToast: typeof import('@fantastic-admin/components')['FaToast'] const FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] diff --git a/apps/core-arco-design-vue/src/types/components.d.ts b/apps/core-arco-design-vue/src/types/components.d.ts index 35aa0d3e..aed426a3 100755 --- a/apps/core-arco-design-vue/src/types/components.d.ts +++ b/apps/core-arco-design-vue/src/types/components.d.ts @@ -21,6 +21,7 @@ declare module 'vue' { AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] FaButton: typeof import('@fantastic-admin/components')['FaButton'] FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -56,7 +57,9 @@ declare module 'vue' { FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + FaTable: typeof import('@fantastic-admin/components')['FaTable'] FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + FaTag: typeof import('@fantastic-admin/components')['FaTag'] FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] FaToast: typeof import('@fantastic-admin/components')['FaToast'] FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] @@ -75,6 +78,7 @@ declare global { const AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] const FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] const FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + const FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] const FaButton: typeof import('@fantastic-admin/components')['FaButton'] const FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] const FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -110,7 +114,9 @@ declare global { const FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] const FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] const FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + const FaTable: typeof import('@fantastic-admin/components')['FaTable'] const FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + const FaTag: typeof import('@fantastic-admin/components')['FaTag'] const FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] const FaToast: typeof import('@fantastic-admin/components')['FaToast'] const FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] diff --git a/apps/core-naive-ui/src/types/components.d.ts b/apps/core-naive-ui/src/types/components.d.ts index 35aa0d3e..aed426a3 100755 --- a/apps/core-naive-ui/src/types/components.d.ts +++ b/apps/core-naive-ui/src/types/components.d.ts @@ -21,6 +21,7 @@ declare module 'vue' { AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] FaButton: typeof import('@fantastic-admin/components')['FaButton'] FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -56,7 +57,9 @@ declare module 'vue' { FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + FaTable: typeof import('@fantastic-admin/components')['FaTable'] FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + FaTag: typeof import('@fantastic-admin/components')['FaTag'] FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] FaToast: typeof import('@fantastic-admin/components')['FaToast'] FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] @@ -75,6 +78,7 @@ declare global { const AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] const FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] const FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + const FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] const FaButton: typeof import('@fantastic-admin/components')['FaButton'] const FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] const FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -110,7 +114,9 @@ declare global { const FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] const FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] const FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + const FaTable: typeof import('@fantastic-admin/components')['FaTable'] const FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + const FaTag: typeof import('@fantastic-admin/components')['FaTag'] const FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] const FaToast: typeof import('@fantastic-admin/components')['FaToast'] const FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] diff --git a/apps/core-tdesign/src/types/components.d.ts b/apps/core-tdesign/src/types/components.d.ts index 35aa0d3e..aed426a3 100755 --- a/apps/core-tdesign/src/types/components.d.ts +++ b/apps/core-tdesign/src/types/components.d.ts @@ -21,6 +21,7 @@ declare module 'vue' { AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] FaButton: typeof import('@fantastic-admin/components')['FaButton'] FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -56,7 +57,9 @@ declare module 'vue' { FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + FaTable: typeof import('@fantastic-admin/components')['FaTable'] FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + FaTag: typeof import('@fantastic-admin/components')['FaTag'] FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] FaToast: typeof import('@fantastic-admin/components')['FaToast'] FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] @@ -75,6 +78,7 @@ declare global { const AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] const FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] const FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + const FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] const FaButton: typeof import('@fantastic-admin/components')['FaButton'] const FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] const FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -110,7 +114,9 @@ declare global { const FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] const FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] const FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + const FaTable: typeof import('@fantastic-admin/components')['FaTable'] const FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + const FaTag: typeof import('@fantastic-admin/components')['FaTag'] const FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] const FaToast: typeof import('@fantastic-admin/components')['FaToast'] const FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] diff --git a/apps/core-vexip-ui/src/types/components.d.ts b/apps/core-vexip-ui/src/types/components.d.ts index 35aa0d3e..aed426a3 100755 --- a/apps/core-vexip-ui/src/types/components.d.ts +++ b/apps/core-vexip-ui/src/types/components.d.ts @@ -21,6 +21,7 @@ declare module 'vue' { AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] FaButton: typeof import('@fantastic-admin/components')['FaButton'] FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -56,7 +57,9 @@ declare module 'vue' { FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + FaTable: typeof import('@fantastic-admin/components')['FaTable'] FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + FaTag: typeof import('@fantastic-admin/components')['FaTag'] FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] FaToast: typeof import('@fantastic-admin/components')['FaToast'] FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] @@ -75,6 +78,7 @@ declare global { const AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] const FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] const FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + const FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] const FaButton: typeof import('@fantastic-admin/components')['FaButton'] const FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] const FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -110,7 +114,9 @@ declare global { const FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] const FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] const FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + const FaTable: typeof import('@fantastic-admin/components')['FaTable'] const FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + const FaTag: typeof import('@fantastic-admin/components')['FaTag'] const FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] const FaToast: typeof import('@fantastic-admin/components')['FaToast'] const FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] diff --git a/apps/core/src/types/components.d.ts b/apps/core/src/types/components.d.ts index 35aa0d3e..aed426a3 100644 --- a/apps/core/src/types/components.d.ts +++ b/apps/core/src/types/components.d.ts @@ -21,6 +21,7 @@ declare module 'vue' { AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] FaButton: typeof import('@fantastic-admin/components')['FaButton'] FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -56,7 +57,9 @@ declare module 'vue' { FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + FaTable: typeof import('@fantastic-admin/components')['FaTable'] FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + FaTag: typeof import('@fantastic-admin/components')['FaTag'] FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] FaToast: typeof import('@fantastic-admin/components')['FaToast'] FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] @@ -75,6 +78,7 @@ declare global { const AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] const FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] const FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + const FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] const FaButton: typeof import('@fantastic-admin/components')['FaButton'] const FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] const FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -110,7 +114,9 @@ declare global { const FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] const FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] const FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + const FaTable: typeof import('@fantastic-admin/components')['FaTable'] const FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + const FaTag: typeof import('@fantastic-admin/components')['FaTag'] const FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] const FaToast: typeof import('@fantastic-admin/components')['FaToast'] const FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] diff --git a/apps/example/src/router/modules/component.example.ts b/apps/example/src/router/modules/component.example.ts index 3299503e..633f3cbb 100755 --- a/apps/example/src/router/modules/component.example.ts +++ b/apps/example/src/router/modules/component.example.ts @@ -302,6 +302,14 @@ const routes: RouteRecordRaw = { title: '开关', }, }, + { + path: 'table', + name: 'componentExampleTable', + component: () => import('@/views/component_example/table.vue'), + meta: { + title: '表格', + }, + }, { path: 'tag', name: 'componentExampleTag', diff --git a/apps/example/src/types/components.d.ts b/apps/example/src/types/components.d.ts index 35aa0d3e..aed426a3 100644 --- a/apps/example/src/types/components.d.ts +++ b/apps/example/src/types/components.d.ts @@ -21,6 +21,7 @@ declare module 'vue' { AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] FaButton: typeof import('@fantastic-admin/components')['FaButton'] FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -56,7 +57,9 @@ declare module 'vue' { FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + FaTable: typeof import('@fantastic-admin/components')['FaTable'] FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + FaTag: typeof import('@fantastic-admin/components')['FaTag'] FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] FaToast: typeof import('@fantastic-admin/components')['FaToast'] FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] @@ -75,6 +78,7 @@ declare global { const AppSystemInfo: typeof import('./../components/AppSystemInfo/index.vue')['default'] const FaAlert: typeof import('@fantastic-admin/components')['FaAlert'] const FaAvatar: typeof import('@fantastic-admin/components')['FaAvatar'] + const FaBadge: typeof import('@fantastic-admin/components')['FaBadge'] const FaButton: typeof import('@fantastic-admin/components')['FaButton'] const FaButtonGroup: typeof import('@fantastic-admin/components')['FaButtonGroup'] const FaCard: typeof import('@fantastic-admin/components')['FaCard'] @@ -110,7 +114,9 @@ declare global { const FaSelect: typeof import('@fantastic-admin/components')['FaSelect'] const FaSlider: typeof import('@fantastic-admin/components')['FaSlider'] const FaSwitch: typeof import('@fantastic-admin/components')['FaSwitch'] + const FaTable: typeof import('@fantastic-admin/components')['FaTable'] const FaTabs: typeof import('@fantastic-admin/components')['FaTabs'] + const FaTag: typeof import('@fantastic-admin/components')['FaTag'] const FaTextarea: typeof import('@fantastic-admin/components')['FaTextarea'] const FaToast: typeof import('@fantastic-admin/components')['FaToast'] const FaTooltip: typeof import('@fantastic-admin/components')['FaTooltip'] diff --git a/apps/example/src/views/component_example/table.vue b/apps/example/src/views/component_example/table.vue new file mode 100644 index 00000000..82ec9cdf --- /dev/null +++ b/apps/example/src/views/component_example/table.vue @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/packages/components/package.json b/packages/components/package.json index 6d2beb88..3f802cf3 100755 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -29,6 +29,7 @@ "dependencies": { "@iconify/vue": "catalog:", "@lucide/vue": "catalog:", + "@tanstack/vue-table": "catalog:", "axios": "catalog:", "class-variance-authority": "catalog:", "clsx": "catalog:", diff --git a/packages/components/resolver.ts b/packages/components/resolver.ts index 80ca3ed2..1a0dbd65 100755 --- a/packages/components/resolver.ts +++ b/packages/components/resolver.ts @@ -8,6 +8,7 @@ const PACKAGE_NAME = createRequire(import.meta.url)('./package.json').name const BASIC_COMPONENT_NAMES = [ 'FaAlert', 'FaAvatar', + 'FaBadge', 'FaButton', 'FaButtonGroup', 'FaCard', @@ -43,7 +44,9 @@ const BASIC_COMPONENT_NAMES = [ 'FaSelect', 'FaSlider', 'FaSwitch', + 'FaTable', 'FaTabs', + 'FaTag', 'FaTextarea', 'FaToast', 'FaTooltip', diff --git a/packages/components/src/basic/checkbox-group/index.vue b/packages/components/src/basic/checkbox-group/index.vue index 6c29ce74..7b2294bd 100755 --- a/packages/components/src/basic/checkbox-group/index.vue +++ b/packages/components/src/basic/checkbox-group/index.vue @@ -1,6 +1,7 @@ @@ -83,7 +90,15 @@ function handleItemClick(item: { handle?: () => void }) { - + handleCheckboxItemChange(v, value)" + > + {{ v.label }} + + diff --git a/packages/components/src/basic/radio-group/index.vue b/packages/components/src/basic/radio-group/index.vue index c73c0500..24503716 100644 --- a/packages/components/src/basic/radio-group/index.vue +++ b/packages/components/src/basic/radio-group/index.vue @@ -1,7 +1,8 @@ + + + + diff --git a/packages/components/src/basic/table/_examples/_border.vue b/packages/components/src/basic/table/_examples/_border.vue new file mode 100644 index 00000000..46111ff0 --- /dev/null +++ b/packages/components/src/basic/table/_examples/_border.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/packages/components/src/basic/table/_examples/_column-visibility.vue b/packages/components/src/basic/table/_examples/_column-visibility.vue new file mode 100644 index 00000000..70198517 --- /dev/null +++ b/packages/components/src/basic/table/_examples/_column-visibility.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/packages/components/src/basic/table/_examples/_custom-column.vue b/packages/components/src/basic/table/_examples/_custom-column.vue new file mode 100644 index 00000000..5ff506f2 --- /dev/null +++ b/packages/components/src/basic/table/_examples/_custom-column.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/packages/components/src/basic/table/_examples/_fixed-column.vue b/packages/components/src/basic/table/_examples/_fixed-column.vue new file mode 100644 index 00000000..3d79d620 --- /dev/null +++ b/packages/components/src/basic/table/_examples/_fixed-column.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/packages/components/src/basic/table/_examples/_fixed-height.vue b/packages/components/src/basic/table/_examples/_fixed-height.vue new file mode 100644 index 00000000..f60d1162 --- /dev/null +++ b/packages/components/src/basic/table/_examples/_fixed-height.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/packages/components/src/basic/table/_examples/_multiple-selection.vue b/packages/components/src/basic/table/_examples/_multiple-selection.vue new file mode 100644 index 00000000..2da8da16 --- /dev/null +++ b/packages/components/src/basic/table/_examples/_multiple-selection.vue @@ -0,0 +1,72 @@ + + + + + + + + 已选中:{{ selectedNames }} + + + diff --git a/packages/components/src/basic/table/_examples/_single-selection.vue b/packages/components/src/basic/table/_examples/_single-selection.vue new file mode 100644 index 00000000..bf58f17c --- /dev/null +++ b/packages/components/src/basic/table/_examples/_single-selection.vue @@ -0,0 +1,71 @@ + + + + + + + + 当前选中:{{ selectedName }} + + + diff --git a/packages/components/src/basic/table/_examples/_slot.vue b/packages/components/src/basic/table/_examples/_slot.vue new file mode 100644 index 00000000..51f78752 --- /dev/null +++ b/packages/components/src/basic/table/_examples/_slot.vue @@ -0,0 +1,105 @@ + + + + + + + 商品 + 名称 / 编号 + + + + + + {{ row.original.name }} + + + {{ row.original.id }} + + + + + {{ formatCurrency(Number(value)) }} + + + + {{ value }} + + + + + {{ statusMap[value as Product['status']].label }} + + + + diff --git a/packages/components/src/basic/table/_examples/_sorting.vue b/packages/components/src/basic/table/_examples/_sorting.vue new file mode 100644 index 00000000..f62dda9c --- /dev/null +++ b/packages/components/src/basic/table/_examples/_sorting.vue @@ -0,0 +1,116 @@ + + + + + + + + 当前排序:{{ sortingText }} + + + diff --git a/packages/components/src/basic/table/_examples/_stripe.vue b/packages/components/src/basic/table/_examples/_stripe.vue new file mode 100644 index 00000000..6f381059 --- /dev/null +++ b/packages/components/src/basic/table/_examples/_stripe.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/packages/components/src/basic/table/_examples/_toolbar.vue b/packages/components/src/basic/table/_examples/_toolbar.vue new file mode 100644 index 00000000..fc5eade5 --- /dev/null +++ b/packages/components/src/basic/table/_examples/_toolbar.vue @@ -0,0 +1,57 @@ + + + + + + + + 新增 + + + + 刷新 + + + 共 {{ table.getRowModel().rows.length }} 条 + + + + diff --git a/packages/components/src/basic/table/_examples/_tree.vue b/packages/components/src/basic/table/_examples/_tree.vue new file mode 100644 index 00000000..e2e13f3b --- /dev/null +++ b/packages/components/src/basic/table/_examples/_tree.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/packages/components/src/basic/table/_examples/index.ts b/packages/components/src/basic/table/_examples/index.ts new file mode 100644 index 00000000..7be827cf --- /dev/null +++ b/packages/components/src/basic/table/_examples/index.ts @@ -0,0 +1,94 @@ +import Basic from './_basic.vue' +import BasicRaw from './_basic.vue?raw' +import Border from './_border.vue' +import BorderRaw from './_border.vue?raw' +import ColumnVisibility from './_column-visibility.vue' +import ColumnVisibilityRaw from './_column-visibility.vue?raw' +import CustomColumn from './_custom-column.vue' +import CustomColumnRaw from './_custom-column.vue?raw' +import FixedColumn from './_fixed-column.vue' +import FixedColumnRaw from './_fixed-column.vue?raw' +import FixedHeight from './_fixed-height.vue' +import FixedHeightRaw from './_fixed-height.vue?raw' +import MultipleSelection from './_multiple-selection.vue' +import MultipleSelectionRaw from './_multiple-selection.vue?raw' +import SingleSelection from './_single-selection.vue' +import SingleSelectionRaw from './_single-selection.vue?raw' +import Slot from './_slot.vue' +import SlotRaw from './_slot.vue?raw' +import Sorting from './_sorting.vue' +import SortingRaw from './_sorting.vue?raw' +import Stripe from './_stripe.vue' +import StripeRaw from './_stripe.vue?raw' +import Toolbar from './_toolbar.vue' +import ToolbarRaw from './_toolbar.vue?raw' +import Tree from './_tree.vue' +import TreeRaw from './_tree.vue?raw' + +export default [ + { + title: '基础', + component: Basic, + componentRaw: BasicRaw, + }, + { + title: '固定高度', + component: FixedHeight, + componentRaw: FixedHeightRaw, + }, + { + title: '工具栏插槽', + component: Toolbar, + componentRaw: ToolbarRaw, + }, + { + title: '固定列', + component: FixedColumn, + componentRaw: FixedColumnRaw, + }, + { + title: '自定义列', + component: CustomColumn, + componentRaw: CustomColumnRaw, + }, + { + title: '树型数据', + component: Tree, + componentRaw: TreeRaw, + }, + { + title: '自定义插槽', + component: Slot, + componentRaw: SlotRaw, + }, + { + title: '排序', + component: Sorting, + componentRaw: SortingRaw, + }, + { + title: '行选择 - 单选', + component: SingleSelection, + componentRaw: SingleSelectionRaw, + }, + { + title: '行选择 - 多选', + component: MultipleSelection, + componentRaw: MultipleSelectionRaw, + }, + { + title: '斑马纹', + component: Stripe, + componentRaw: StripeRaw, + }, + { + title: '边框', + component: Border, + componentRaw: BorderRaw, + }, + { + title: '列可见性', + component: ColumnVisibility, + componentRaw: ColumnVisibilityRaw, + }, +] diff --git a/packages/components/src/basic/table/index.vue b/packages/components/src/basic/table/index.vue new file mode 100644 index 00000000..3a1ec689 --- /dev/null +++ b/packages/components/src/basic/table/index.vue @@ -0,0 +1,1135 @@ + + + + + + + + + + + + + + + + + + + + + {{ caption }} + + + + + + + + + + + + + + + {{ getSortIndexLabel(header) }} + + + + + + + + + + + + + + + + + + + + + handleToggleRow(row, value)" + /> + + + + + + + + + handleToggleRow(row, value)" + /> + + + + + + + + + + {{ emptyText }} + + + + + + + diff --git a/packages/components/src/basic/table/table/Table.vue b/packages/components/src/basic/table/table/Table.vue new file mode 100644 index 00000000..62fded78 --- /dev/null +++ b/packages/components/src/basic/table/table/Table.vue @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/packages/components/src/basic/table/table/TableBody.vue b/packages/components/src/basic/table/table/TableBody.vue new file mode 100644 index 00000000..765ce1d7 --- /dev/null +++ b/packages/components/src/basic/table/table/TableBody.vue @@ -0,0 +1,17 @@ + + + + + + + diff --git a/packages/components/src/basic/table/table/TableCaption.vue b/packages/components/src/basic/table/table/TableCaption.vue new file mode 100644 index 00000000..40bd4f02 --- /dev/null +++ b/packages/components/src/basic/table/table/TableCaption.vue @@ -0,0 +1,17 @@ + + + + + + + diff --git a/packages/components/src/basic/table/table/TableCell.vue b/packages/components/src/basic/table/table/TableCell.vue new file mode 100644 index 00000000..92b7498c --- /dev/null +++ b/packages/components/src/basic/table/table/TableCell.vue @@ -0,0 +1,22 @@ + + + + + + + diff --git a/packages/components/src/basic/table/table/TableEmpty.vue b/packages/components/src/basic/table/table/TableEmpty.vue new file mode 100644 index 00000000..d3f84cd8 --- /dev/null +++ b/packages/components/src/basic/table/table/TableEmpty.vue @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/packages/components/src/basic/table/table/TableFooter.vue b/packages/components/src/basic/table/table/TableFooter.vue new file mode 100644 index 00000000..e365368a --- /dev/null +++ b/packages/components/src/basic/table/table/TableFooter.vue @@ -0,0 +1,17 @@ + + + + + + + diff --git a/packages/components/src/basic/table/table/TableHead.vue b/packages/components/src/basic/table/table/TableHead.vue new file mode 100644 index 00000000..d2d91531 --- /dev/null +++ b/packages/components/src/basic/table/table/TableHead.vue @@ -0,0 +1,17 @@ + + + + + + + diff --git a/packages/components/src/basic/table/table/TableHeader.vue b/packages/components/src/basic/table/table/TableHeader.vue new file mode 100644 index 00000000..3d14498e --- /dev/null +++ b/packages/components/src/basic/table/table/TableHeader.vue @@ -0,0 +1,17 @@ + + + + + + + diff --git a/packages/components/src/basic/table/table/TableRow.vue b/packages/components/src/basic/table/table/TableRow.vue new file mode 100644 index 00000000..c48f5271 --- /dev/null +++ b/packages/components/src/basic/table/table/TableRow.vue @@ -0,0 +1,17 @@ + + + + + + + diff --git a/packages/components/src/basic/table/table/index.ts b/packages/components/src/basic/table/table/index.ts new file mode 100644 index 00000000..2b4ce391 --- /dev/null +++ b/packages/components/src/basic/table/table/index.ts @@ -0,0 +1,9 @@ +export { default as Table } from './Table.vue' +export { default as TableBody } from './TableBody.vue' +export { default as TableCaption } from './TableCaption.vue' +export { default as TableCell } from './TableCell.vue' +export { default as TableEmpty } from './TableEmpty.vue' +export { default as TableFooter } from './TableFooter.vue' +export { default as TableHead } from './TableHead.vue' +export { default as TableHeader } from './TableHeader.vue' +export { default as TableRow } from './TableRow.vue' diff --git a/packages/components/src/basic/table/table/utils.ts b/packages/components/src/basic/table/table/utils.ts new file mode 100644 index 00000000..9b153026 --- /dev/null +++ b/packages/components/src/basic/table/table/utils.ts @@ -0,0 +1,9 @@ +import type { Updater } from '@tanstack/vue-table' +import type { Ref } from 'vue' +import { isFunction } from '@tanstack/vue-table' + +export function valueUpdater(updaterOrValue: Updater, ref: Ref) { + ref.value = isFunction(updaterOrValue) + ? updaterOrValue(ref.value) + : updaterOrValue +} diff --git a/packages/components/src/examples.ts b/packages/components/src/examples.ts index 642f54e7..e3e588d8 100644 --- a/packages/components/src/examples.ts +++ b/packages/components/src/examples.ts @@ -36,6 +36,7 @@ export { default as searchBar } from './basic/search-bar/_examples' export { default as select } from './basic/select/_examples' export { default as slider } from './basic/slider/_examples' export { default as switch } from './basic/switch/_examples' +export { default as table } from './basic/table/_examples' export { default as tabs } from './basic/tabs/_examples' export { default as tag } from './basic/tag/_examples' export { default as textarea } from './basic/textarea/_examples' diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts index c3289c38..8e0ce161 100644 --- a/packages/components/src/index.ts +++ b/packages/components/src/index.ts @@ -44,6 +44,8 @@ export { default as FaSearchBar } from './basic/search-bar/index.vue' export { default as FaSelect } from './basic/select/index.vue' export { default as FaSlider } from './basic/slider/index.vue' export { default as FaSwitch } from './basic/switch/index.vue' +export { default as FaTable } from './basic/table/index.vue' +export type { TableAlign, TableCellSlotProps, TableColumn, TableColumnFixed, TableEmptySlotProps, TableExpandedState, TableFooterSlotProps, TableHeaderSlotProps, TableProps, TableSelectionColumn, TableSelectionDisabled, TableSortingState, TableToolbarSlotProps } from './basic/table/index.vue' export { default as FaTabs } from './basic/tabs/index.vue' export { default as FaTag } from './basic/tag/index.vue' export { default as FaTextarea } from './basic/textarea/index.vue' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 212d3c46..81a9cbcf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,6 +51,9 @@ catalogs: '@stylistic/stylelint-config': specifier: ^5.0.0 version: 5.0.0 + '@tanstack/vue-table': + specifier: ^8.21.3 + version: 8.21.3 '@tinymce/tinymce-vue': specifier: ^6.3.0 version: 6.3.0 @@ -96,6 +99,9 @@ catalogs: '@vue/tsconfig': specifier: ^0.9.1 version: 0.9.1 + '@vueuse/components': + specifier: ^14.3.0 + version: 14.3.0 '@vueuse/core': specifier: ^14.3.0 version: 14.3.0 @@ -2035,6 +2041,9 @@ importers: '@lucide/vue': specifier: 'catalog:' version: 1.17.0(vue@3.5.35(typescript@6.0.3)) + '@tanstack/vue-table': + specifier: 'catalog:' + version: 8.21.3(vue@3.5.35(typescript@6.0.3)) '@vueuse/components': specifier: 'catalog:' version: 14.3.0(vue@3.5.35(typescript@6.0.3)) @@ -4417,9 +4426,19 @@ packages: '@sxzz/popperjs-es@2.11.8': resolution: {integrity: sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==} + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} + '@tanstack/virtual-core@3.13.23': resolution: {integrity: sha512-zSz2Z2HNyLjCplANTDyl3BcdQJc2k1+yyFoKhNRmCr7V7dY8o8q5m8uFTI1/Pg1kL+Hgrz6u3Xo6eFUB7l66cg==} + '@tanstack/vue-table@8.21.3': + resolution: {integrity: sha512-rusRyd77c5tDPloPskctMyPLFEQUeBzxdQ+2Eow4F7gDPlPOB1UnnhzfpdvqZ8ZyX2rRNGmqNnQWm87OI2OQPw==} + engines: {node: '>=12'} + peerDependencies: + vue: '>=3.2' + '@tanstack/vue-virtual@3.13.23': resolution: {integrity: sha512-b5jPluAR6U3eOq6GWAYSpj3ugnAIZgGR0e6aGAgyRse0Yu6MVQQ0ZWm9SArSXWtageogn6bkVD8D//c4IjW3xQ==} peerDependencies: @@ -11662,8 +11681,15 @@ snapshots: '@sxzz/popperjs-es@2.11.8': {} + '@tanstack/table-core@8.21.3': {} + '@tanstack/virtual-core@3.13.23': {} + '@tanstack/vue-table@8.21.3(vue@3.5.35(typescript@6.0.3))': + dependencies: + '@tanstack/table-core': 8.21.3 + vue: 3.5.35(typescript@6.0.3) + '@tanstack/vue-virtual@3.13.23(vue@3.5.35(typescript@6.0.3))': dependencies: '@tanstack/virtual-core': 3.13.23 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d55df401..5ad39283 100755 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -22,6 +22,7 @@ catalog: '@lucide/vue': ^1.17.0 '@spiriit/vite-plugin-svg-spritemap': ^7.0.0 '@stylistic/stylelint-config': ^5.0.0 + '@tanstack/vue-table': ^8.21.3 '@tinymce/tinymce-vue': ^6.3.0 '@types/fs-extra': ^11.0.4 '@types/node': ^25.9.1