@ditari/bsui 5.1.15 → 5.1.17

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.
Files changed (99) hide show
  1. package/dist/cjs/components/card/Card.cjs.map +1 -1
  2. package/dist/cjs/components/card/Card.d.ts +6 -0
  3. package/dist/cjs/components/card/index.d.ts +3 -0
  4. package/dist/cjs/components/card/style.d.ts +9 -0
  5. package/dist/cjs/components/date/RangePicker.vue.d.ts +64 -0
  6. package/dist/cjs/components/date/index.d.ts +3 -0
  7. package/dist/cjs/components/dic/DicReplace.d.ts +24 -0
  8. package/dist/cjs/components/dic/index.d.ts +3 -0
  9. package/dist/cjs/components/form/FormLayout.d.ts +49 -0
  10. package/dist/cjs/components/form/index.d.ts +3 -0
  11. package/dist/cjs/components/icon/index.d.ts +4 -0
  12. package/dist/cjs/components/index.d.ts +11 -0
  13. package/dist/cjs/components/layout/AppContext.d.ts +16 -0
  14. package/dist/cjs/components/layout/AppLayout.d.ts +3 -0
  15. package/dist/cjs/components/layout/Layout.vue.d.ts +269 -0
  16. package/dist/cjs/components/layout/List.d.ts +5 -0
  17. package/dist/cjs/components/layout/Show.d.ts +33 -0
  18. package/dist/cjs/components/layout/components/index.d.ts +5 -0
  19. package/dist/cjs/components/layout/components/layout/HeaderLayout.vue.d.ts +106 -0
  20. package/dist/cjs/components/layout/components/layout/RouterContent.vue.d.ts +11 -0
  21. package/dist/cjs/components/layout/components/layout/RouterContentName.vue.d.ts +19 -0
  22. package/dist/cjs/components/layout/components/layout/ThemeApp.vue.d.ts +24 -0
  23. package/dist/cjs/components/layout/components/menu/Menu.d.ts +5 -0
  24. package/dist/cjs/components/layout/components/mobile/MobileList.d.ts +3 -0
  25. package/dist/cjs/components/layout/components/settings/BlockCheckbox.vue.d.ts +47 -0
  26. package/dist/cjs/components/layout/components/settings/SettingDrawer.d.ts +50 -0
  27. package/dist/cjs/components/layout/index.d.ts +8 -0
  28. package/dist/cjs/components/layout/style.d.ts +5 -0
  29. package/dist/cjs/components/select/Select.vue.d.ts +98 -0
  30. package/dist/cjs/components/select/index.d.ts +3 -0
  31. package/dist/cjs/components/tab/Search.d.ts +3 -0
  32. package/dist/cjs/components/tab/Tab.vue.d.ts +78 -0
  33. package/dist/cjs/components/tab/index.d.ts +3 -0
  34. package/dist/cjs/components/table/Table.cjs +5 -48
  35. package/dist/cjs/components/table/Table.cjs.map +1 -1
  36. package/dist/cjs/components/table/Table.d.ts +137 -0
  37. package/dist/cjs/components/table/index.d.ts +4 -0
  38. package/dist/cjs/components/table/interface.d.ts +46 -0
  39. package/dist/cjs/components/table-form/TableForm.d.ts +46 -0
  40. package/dist/cjs/components/table-form/TableFormItem.d.ts +32 -0
  41. package/dist/cjs/components/table-form/index.d.ts +9 -0
  42. package/dist/cjs/components/table-form/interface.d.ts +56 -0
  43. package/dist/cjs/components/table-form/style.d.ts +12 -0
  44. package/dist/cjs/hooks/useDesign.d.ts +8 -0
  45. package/dist/cjs/index.d.ts +8 -0
  46. package/dist/cjs/utils/useMenuCore.d.ts +9 -0
  47. package/dist/cjs/utils/useTheme.d.ts +9 -0
  48. package/dist/cjs/utils/withInstall.d.ts +12 -0
  49. package/dist/esm/components/card/Card.d.ts +6 -0
  50. package/dist/esm/components/card/Card.mjs.map +1 -1
  51. package/dist/esm/components/card/index.d.ts +3 -0
  52. package/dist/esm/components/card/style.d.ts +9 -0
  53. package/dist/esm/components/date/RangePicker.vue.d.ts +64 -0
  54. package/dist/esm/components/date/index.d.ts +3 -0
  55. package/dist/esm/components/dic/DicReplace.d.ts +24 -0
  56. package/dist/esm/components/dic/index.d.ts +3 -0
  57. package/dist/esm/components/form/FormLayout.d.ts +49 -0
  58. package/dist/esm/components/form/index.d.ts +3 -0
  59. package/dist/esm/components/icon/index.d.ts +4 -0
  60. package/dist/esm/components/index.d.ts +11 -0
  61. package/dist/esm/components/layout/AppContext.d.ts +16 -0
  62. package/dist/esm/components/layout/AppLayout.d.ts +3 -0
  63. package/dist/esm/components/layout/Layout.vue.d.ts +269 -0
  64. package/dist/esm/components/layout/List.d.ts +5 -0
  65. package/dist/esm/components/layout/Show.d.ts +33 -0
  66. package/dist/esm/components/layout/components/index.d.ts +5 -0
  67. package/dist/esm/components/layout/components/layout/HeaderLayout.vue.d.ts +106 -0
  68. package/dist/esm/components/layout/components/layout/RouterContent.vue.d.ts +11 -0
  69. package/dist/esm/components/layout/components/layout/RouterContentName.vue.d.ts +19 -0
  70. package/dist/esm/components/layout/components/layout/ThemeApp.vue.d.ts +24 -0
  71. package/dist/esm/components/layout/components/menu/Menu.d.ts +5 -0
  72. package/dist/esm/components/layout/components/mobile/MobileList.d.ts +3 -0
  73. package/dist/esm/components/layout/components/settings/BlockCheckbox.vue.d.ts +47 -0
  74. package/dist/esm/components/layout/components/settings/SettingDrawer.d.ts +50 -0
  75. package/dist/esm/components/layout/index.d.ts +8 -0
  76. package/dist/esm/components/layout/style.d.ts +5 -0
  77. package/dist/esm/components/select/Select.vue.d.ts +98 -0
  78. package/dist/esm/components/select/index.d.ts +3 -0
  79. package/dist/esm/components/tab/Search.d.ts +3 -0
  80. package/dist/esm/components/tab/Tab.vue.d.ts +78 -0
  81. package/dist/esm/components/tab/index.d.ts +3 -0
  82. package/dist/esm/components/table/Table.d.ts +137 -0
  83. package/dist/esm/components/table/Table.mjs +6 -49
  84. package/dist/esm/components/table/Table.mjs.map +1 -1
  85. package/dist/esm/components/table/index.d.ts +4 -0
  86. package/dist/esm/components/table/interface.d.ts +46 -0
  87. package/dist/esm/components/table-form/TableForm.d.ts +46 -0
  88. package/dist/esm/components/table-form/TableFormItem.d.ts +32 -0
  89. package/dist/esm/components/table-form/index.d.ts +9 -0
  90. package/dist/esm/components/table-form/interface.d.ts +56 -0
  91. package/dist/esm/components/table-form/style.d.ts +12 -0
  92. package/dist/esm/hooks/useDesign.d.ts +8 -0
  93. package/dist/esm/index.d.ts +8 -0
  94. package/dist/esm/utils/useMenuCore.d.ts +9 -0
  95. package/dist/esm/utils/useTheme.d.ts +9 -0
  96. package/dist/esm/utils/withInstall.d.ts +12 -0
  97. package/dist/types/components/card/Card.d.ts.map +1 -1
  98. package/dist/types/components/table/Table.d.ts.map +1 -1
  99. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Table.cjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type {\r\n ColumnsType,\r\n ColumnType\r\n} from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash-es\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型类型\r\ninterface BodyCellParams<T = any> {\r\n column: ColumnType<T> & {\r\n width?: number | string;\r\n minWidth?: number | string;\r\n ellipsis?: boolean | { showTitle?: boolean };\r\n customRender?: (params: {\r\n text: any;\r\n record: T;\r\n index: number;\r\n column: ColumnType<T>;\r\n }) => any;\r\n };\r\n record: T;\r\n index: number;\r\n text?: any;\r\n}\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots, attrs }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n function useSlots() {\r\n const divTextStyle = css`\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n display: inline-block;\r\n max-width: 100%;\r\n vertical-align: middle;\r\n `;\r\n // 定义插槽\r\n const tableSlots = {\r\n bodyCell: <T = any,>(params: BodyCellParams<T>) => {\r\n const { column, record, index } = params;\r\n\r\n // 获取列的数据索引\r\n const dataIndex = column.dataIndex as string;\r\n\r\n // 检查是否需要处理省略号\r\n if (\r\n (column.width || column.minWidth) &&\r\n column.ellipsis\r\n ) {\r\n const { customRender } = column;\r\n const width = column.width || column.minWidth;\r\n\r\n // 获取原始文本\r\n const originalText = (\r\n record as Record<string, any>\r\n )[dataIndex];\r\n\r\n // 如果有自定义渲染,使用它\r\n let content: any;\r\n if (customRender) {\r\n content = customRender({\r\n text: originalText,\r\n record,\r\n index,\r\n column\r\n });\r\n } else {\r\n content = originalText;\r\n }\r\n return (\r\n <div\r\n class={divTextStyle}\r\n style={{\r\n width:\r\n typeof width === \"number\"\r\n ? `${width}px`\r\n : width\r\n }}\r\n >\r\n {content}\r\n </div>\r\n );\r\n }\r\n return slots.bodyCell?.(params);\r\n },\r\n summary: () => slots.summary?.()\r\n };\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n let headerHeight = 0,\r\n tableEl: HTMLElement;\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val !== 0) {\r\n nextTick(() => {\r\n _tableBodyHeight(val);\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n tableEl = tableRef?.value?.$el;\r\n //表头高度\r\n headerHeight = useEleHeight(\r\n tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0]\r\n );\r\n // 分页\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight =\r\n useEleHeight(paginationEl as never) ?? 0;\r\n }\r\n\r\n //总结行\r\n let summaryHeight = 0;\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n if (summaryEl) {\r\n summaryHeight =\r\n useEleHeight(summaryEl as HTMLElement) ?? 0;\r\n }\r\n\r\n tableHeight.value =\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight;\r\n\r\n antTableBodyRef.value =\r\n tableEl.getElementsByClassName(\r\n \"ant-table-content\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height =\r\n tableHeight.value + \"px\";\r\n //TODO antTableBodyRef 滚动到底部的时候,需要去除底部边框,否则边框会重叠\r\n //antTableBodyRef.value.style.borderBottom = \"1px solid #f0f0f0\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig =\r\n computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (\r\n page: number,\r\n pageSize: number\r\n ) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value =\r\n selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key)\r\n );\r\n console.log(\"onSelect\", selectedRowKeys.value);\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n },\r\n {\r\n deep: true,\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <div style={{ height: tableHeight.value + \"px\" }}>\r\n <Table\r\n {...attrs}\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n x: \"max-content\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n </div>\r\n {pagination.value && (\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {\r\n <Pagination\r\n v-model:current={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n }\r\n </div>\r\n )}\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (node: Element) => {\r\n if (!node) return 0;\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10))\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n });\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","divTextStyle","bodyCell","params","column","record","index","dataIndex","width","minWidth","ellipsis","customRender","originalText","content","text","_createVNode","summary","headerHeight","tableEl","watch","val","nextTick","_tableBodyHeight","immediate","$el","useEleHeight","getElementsByClassName","paginationEl","paginationHeight","style","marginBottom","summaryHeight","summaryEl","changePagination","position","page","scrollTop","length","useCustomRow","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","console","log","deep","fixed","columnTitle","columnWidth","Flex","Table","_mergeProps","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
1
+ {"version":3,"file":"Table.cjs","sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { type ExtractPropTypes, type PropType } from \"vue\";\r\nimport { Flex, Pagination, Table } from \"ant-design-vue\";\r\nimport { type TablePaginationConfig } from \"ant-design-vue\";\r\n\r\nimport { type PaginationProps } from \"./interface\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { ColumnsType } from \"ant-design-vue/es/table\";\r\nimport type {\r\n SelectionSelectFn,\r\n TableRowSelection\r\n} from \"ant-design-vue/es/table/interface\";\r\nimport { merge } from \"lodash-es\";\r\n\r\nexport type Key = string | number;\r\nexport type SizeType =\r\n | \"small\"\r\n | \"middle\"\r\n | \"large\"\r\n | undefined;\r\n\r\n// 定义分页\r\ninterface Page {\r\n total: number;\r\n current: number;\r\n pageSize: number;\r\n}\r\n\r\n// 定义表格配置接口,支持泛型\r\ninterface Config<T = unknown> {\r\n columns: ColumnsType<T>;\r\n // 分页\r\n pagination?: Page | undefined;\r\n // 分页配置\r\n paginationConfig?: PaginationProps;\r\n changePagination?: (\r\n current: number,\r\n size: number\r\n ) => void;\r\n // 单击\r\n click?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 双击\r\n dbClick?: (\r\n record: Record<string, unknown>,\r\n index: number\r\n ) => void;\r\n // 选择框的默认属性配置\r\n getCheckboxProps?: (\r\n record: unknown\r\n ) => Record<string, unknown> | undefined; // 返回一个对象或者 undefined\r\n // 点击行号激活的class\r\n activeRowClass?: string;\r\n // 复选框方式\r\n selection?: string;\r\n // 切换分页是否保留选中的ID\r\n keepSelected?: boolean;\r\n}\r\n\r\n// 定义 Props 类型,支持泛型\r\nexport const tableProps = <T = unknown,>() => ({\r\n height: { type: Number, default: 0 },\r\n data: { type: Array as PropType<T[]>, default: () => [] }, // 泛型约束\r\n loading: { type: Boolean, default: false },\r\n rowKey: { type: String, default: \"id\" },\r\n bordered: { type: Boolean, default: false },\r\n size: {\r\n type: String as PropType<SizeType>,\r\n default: \"small\"\r\n },\r\n keys: {\r\n type: Array as PropType<Key[]>,\r\n default: () => []\r\n },\r\n config: {\r\n type: Object as PropType<Config<T>>,\r\n required: true\r\n }\r\n});\r\n\r\nexport type TableProps = Partial<\r\n ExtractPropTypes<ReturnType<typeof tableProps>>\r\n>;\r\n\r\n// 分页组件默认配置\r\nconst defaultPaginationProps: PaginationProps = {\r\n defaultPageSize: 20,\r\n disabled: false,\r\n hideOnSinglePage: false,\r\n pageSize: 20,\r\n pageSizeOptions: [\"20\", \"40\", \"60\", \"80\", \"99\"],\r\n responsive: false,\r\n showLessItems: false,\r\n showQuickJumper: true,\r\n showSizeChanger: true, // 默认展示切换器\r\n showTotal: total => `总共 ${total} 条数据`,\r\n simple: false,\r\n size: \"default\",\r\n total: 0\r\n};\r\n\r\n// 表格默认配置\r\nconst defaultConfig: Config = {\r\n columns: [],\r\n pagination: undefined,\r\n paginationConfig: defaultPaginationProps,\r\n activeRowClass: \"\",\r\n selection: \"N\",\r\n keepSelected: false\r\n};\r\n\r\nconst paginationStyle = css`\r\n display: flex;\r\n justify-content: center;\r\n padding-top: 6px;\r\n`;\r\n\r\n// 定义泛型组件\r\nconst DTable = defineComponent({\r\n name: \"DTable\",\r\n props: tableProps(), // 初始泛型设置为 `unknown`\r\n emits: [\"update:keys\"],\r\n setup(props, { emit, slots, attrs }) {\r\n // 保存选中的唯一id\r\n const selectedRowKeys = ref<Key[]>(props.keys || []);\r\n // 计算表格高度\r\n //const height = computed(() => props.height);\r\n\r\n const { columns, data, pagination } = useProps();\r\n const { tableSlots } = useSlots();\r\n const { paginationConfig, onPaginationChange } =\r\n usePagination();\r\n const { tableRef, tableHeight, antTableBodyRef } =\r\n useHeight();\r\n const rowSelection = useRowSelection();\r\n\r\n onMounted(() => {});\r\n\r\n /**\r\n * props计算属性处理\r\n */\r\n function useProps() {\r\n // 定义计算属性\r\n const _config = computed(() =>\r\n merge({}, defaultConfig, props.config)\r\n );\r\n const columns = computed(() => _config.value.columns);\r\n const data = computed(() => props.data || []);\r\n const pagination = computed(\r\n () => _config.value.pagination || false\r\n );\r\n\r\n return {\r\n columns,\r\n data,\r\n pagination\r\n };\r\n }\r\n\r\n /**\r\n * 插槽处理\r\n */\r\n function useSlots() {\r\n // 定义插槽\r\n const tableSlots = {\r\n bodyCell: (params: unknown) =>\r\n slots.bodyCell?.(params),\r\n summary: () => slots.summary?.()\r\n };\r\n\r\n return {\r\n tableSlots\r\n };\r\n }\r\n\r\n function useHeight() {\r\n const tableRef = ref();\r\n const tableHeight = ref(0);\r\n let headerHeight = 0,\r\n tableEl: HTMLElement;\r\n\r\n // 表格body对象\r\n const antTableBodyRef = ref<HTMLElement>();\r\n\r\n watch(\r\n () => props.height,\r\n val => {\r\n if (val !== 0) {\r\n nextTick(() => {\r\n _tableBodyHeight(val);\r\n });\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n function _tableBodyHeight(height: number) {\r\n tableEl = tableRef?.value?.$el;\r\n //表头高度\r\n headerHeight = useEleHeight(\r\n tableEl.getElementsByClassName(\r\n \"ant-table-header\"\r\n )[0]\r\n );\r\n // 分页\r\n const paginationEl = tableEl.getElementsByClassName(\r\n \"d-pagination\"\r\n )[0] as HTMLElement | undefined;\r\n let paginationHeight = 0;\r\n if (paginationEl) {\r\n paginationEl.style.marginBottom = \"0\";\r\n paginationHeight =\r\n useEleHeight(paginationEl as never) ?? 0;\r\n }\r\n\r\n //总结行\r\n let summaryHeight = 0;\r\n const summaryEl = tableEl.getElementsByClassName(\r\n \"ant-table-summary\"\r\n )[0] as HTMLElement | undefined;\r\n if (summaryEl) {\r\n summaryHeight =\r\n useEleHeight(summaryEl as HTMLElement) ?? 0;\r\n }\r\n\r\n tableHeight.value =\r\n height -\r\n paginationHeight -\r\n headerHeight -\r\n summaryHeight;\r\n\r\n antTableBodyRef.value =\r\n tableEl.getElementsByClassName(\r\n \"ant-table-body\"\r\n )[0] as HTMLElement;\r\n\r\n if (antTableBodyRef.value) {\r\n // 设置body高度\r\n antTableBodyRef.value.style.height =\r\n tableHeight.value + \"px\";\r\n //TODO antTableBodyRef 滚动到底部的时候,需要去除底部边框,否则边框会重叠\r\n //antTableBodyRef.value.style.borderBottom = \"1px solid #f0f0f0\";\r\n }\r\n }\r\n\r\n return {\r\n tableRef,\r\n tableHeight,\r\n antTableBodyRef\r\n };\r\n }\r\n\r\n function usePagination() {\r\n const { changePagination } = props.config!;\r\n const paginationConfig =\r\n computed<TablePaginationConfig>(() => {\r\n return {\r\n position: [\"bottomCenter\"], // 符合类型的分页位置\r\n total: 0, // 确保符合要求\r\n ...defaultPaginationProps,\r\n ...pagination.value\r\n };\r\n });\r\n\r\n const onPaginationChange = (\r\n page: number,\r\n pageSize: number\r\n ) => {\r\n const { selection, keepSelected } = props.config!;\r\n changePagination?.(page, pageSize);\r\n // 切换分页的时候,表体滚动到顶部\r\n antTableBodyRef.value!.scrollTop = 0;\r\n\r\n // 如果当前为单选或未开启分页保留数据选中的数据都会被清除\r\n // 清空历史选中数据\r\n if (selection === \"S\" || !keepSelected) {\r\n // 只有selectedRowKeys被清空时,这里才触发update;\r\n // 不加判断,会出现执行update后,父组件监听的watch每次都会触发\r\n if (selectedRowKeys.value.length > 0) {\r\n selectedRowKeys.value = [];\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n }\r\n }\r\n };\r\n\r\n return {\r\n paginationConfig,\r\n onPaginationChange\r\n };\r\n }\r\n\r\n function useCustomRow() {\r\n return (record: never, index: number) => {\r\n // 用于存储 在某个事件内双击两次 则取消单击事件业务\r\n let clickTimeout: number = 0;\r\n const {\r\n rowKey,\r\n config: {\r\n click,\r\n dbClick,\r\n selection,\r\n getCheckboxProps\r\n } = {} as Config\r\n } = props;\r\n\r\n // 当前点击行的唯一ID,通过rowKey从record中取值\r\n const id = record[rowKey];\r\n\r\n /**\r\n * 处理单击事件业务\r\n * @param record 当前点击行数据\r\n */\r\n const onClick = () => {\r\n // 获取getCheckboxProps方法,如果不等于undefined,则执行方法获取disabled的值\r\n // 否则checkEnable为false\r\n const checkEnable =\r\n getCheckboxProps === undefined\r\n ? false\r\n : getCheckboxProps(record)?.disabled;\r\n\r\n if (selection === \"N\" || checkEnable) {\r\n // 1. 未开启复选框 则不处理数据选中操作\r\n // 2. 如果当前点击的行 包含在禁用的数据项目里面 则不进行选中操作\r\n // 3. checkEnable 用来判断复选框属性的值,如果当前的数据满足getCheckboxProps这个\r\n // 方法返回的disabled为true就不执行\r\n // 复选框选中的操作\r\n return;\r\n }\r\n const haveState = selectedRowKeys.value.some(\r\n (key: Key) => key === id\r\n );\r\n if (haveState) {\r\n //如果 当前点击行的ID 已存在 那么直接过滤掉当前的id\r\n selectedRowKeys.value =\r\n selectedRowKeys.value.filter(\r\n (key: Key) => key !== id\r\n );\r\n } else {\r\n if (selection === \"S\") {\r\n //单选的时候 清空选中的数据 再赋值新的ID\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value.push(id);\r\n } else {\r\n //多选直接追加ID\r\n selectedRowKeys.value.push(id);\r\n }\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n function activeRowBackground(event: Event) {\r\n const { activeRowClass } = props.config!;\r\n if (!activeRowClass) return;\r\n const curEl = event.target;\r\n if (curEl instanceof HTMLElement) {\r\n const parentElement =\r\n curEl.parentNode as HTMLElement;\r\n if (\r\n parentElement &&\r\n parentElement.classList.contains(\r\n activeRowClass\r\n )\r\n ) {\r\n parentElement.classList.remove(\r\n activeRowClass\r\n );\r\n } else {\r\n parentElement?.classList.add(activeRowClass);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n onClick: (event: Event) => {\r\n clearTimeout(clickTimeout);\r\n clickTimeout = window.setTimeout(() => {\r\n // 处理背景激活逻辑\r\n activeRowBackground(event);\r\n // 处理单击事件业务\r\n onClick();\r\n // 回传数据 自定义单击后的业务\r\n click?.(record, index);\r\n }, 200);\r\n }, // 点击行\r\n onDblclick: () => {\r\n clearTimeout(clickTimeout);\r\n // 回传数据 自定义单击后的业务\r\n dbClick?.(record, index);\r\n }\r\n };\r\n };\r\n }\r\n\r\n function useRowSelection() {\r\n const rowSelection = ref<\r\n TableRowSelection<unknown> | undefined\r\n >(undefined);\r\n\r\n const {\r\n rowKey,\r\n config: { getCheckboxProps, selection } = {}\r\n } = props;\r\n\r\n const onSelect: SelectionSelectFn<unknown> = (\r\n record,\r\n selected\r\n ) => {\r\n const data = record as Record<string, never>;\r\n if (selection === \"S\") {\r\n selectedRowKeys.value = [];\r\n selectedRowKeys.value = selected\r\n ? [data[rowKey]]\r\n : [];\r\n } else {\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(data[rowKey])\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => key !== data[rowKey]\r\n );\r\n }\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n const onSelectAll = (\r\n selected: boolean,\r\n selectedRows: unknown[],\r\n changeRows: unknown[]\r\n ) => {\r\n const _ids = changeRows.map(\r\n (record: unknown) =>\r\n (record as { [key: string]: never })[rowKey]\r\n );\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(_ids)\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key as never)\r\n );\r\n\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n //TODO 这个方法在单选的时候 会出现异常bug,暂时不知道怎么解决\r\n const onChange = (\r\n rowKeys: Key[],\r\n selectedRows: unknown[]\r\n ) => {\r\n // 显式转换 selectedRows 的类型为 Record<string, never>[]\r\n const data = selectedRows as Record<\r\n string,\r\n never\r\n >[];\r\n // 等于0 说明是取消全选,反之\r\n const selected = data.length !== 0;\r\n // 显式转换 _ids 的类型为 Key[]\r\n const _ids: Key[] = props.data.map(\r\n record =>\r\n (record as Record<string, unknown>)[\r\n rowKey\r\n ] as Key\r\n );\r\n\r\n // 更新 selectedRowKeys\r\n // selected 为true,说明是全选,那么rowKeys是权限后的数组ID,需要过滤掉selectedRowKeys里的不在id才进行添加,\r\n // 否则会出现,比如一开始选择了两条数据,然后再进行全选的话 会多出两个重复ID\r\n // selected 为false,说明是取消全选,那么需要从selectedRowKeys过滤掉 _ids的id\r\n selectedRowKeys.value = selected\r\n ? selectedRowKeys.value.concat(\r\n rowKeys.filter(\r\n (key: Key) =>\r\n !selectedRowKeys.value.includes(key)\r\n )\r\n )\r\n : selectedRowKeys.value.filter(\r\n (key: Key) => !_ids.includes(key)\r\n );\r\n emit(\"update:keys\", selectedRowKeys.value);\r\n };\r\n\r\n // 监听父组件手动改变keys 重新赋值给 表格选中变量selectedRowKeys\r\n // 否则父组件 改变keys后当前selectedRowKeys还是原来的值\r\n watch(\r\n () => props.keys,\r\n val => {\r\n selectedRowKeys.value = val;\r\n },\r\n {\r\n deep: true,\r\n immediate: true\r\n }\r\n );\r\n\r\n watch(\r\n () => props.config?.selection,\r\n val => {\r\n if (val !== \"N\") {\r\n rowSelection.value = {\r\n selectedRowKeys: selectedRowKeys as never,\r\n onSelect,\r\n onSelectAll,\r\n fixed: true,\r\n columnTitle:\r\n selection === \"S\" ? \"选择\" : null,\r\n columnWidth: selection === \"S\" ? 60 : 40,\r\n getCheckboxProps: getCheckboxProps as never\r\n };\r\n } else {\r\n rowSelection.value = undefined;\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n return rowSelection;\r\n }\r\n\r\n return () => (\r\n <Flex vertical={true} ref={tableRef}>\r\n <Table\r\n {...attrs}\r\n loading={props.loading}\r\n size={props.size}\r\n bordered={props.bordered}\r\n dataSource={data.value}\r\n columns={columns.value}\r\n rowSelection={rowSelection.value}\r\n customRow={useCustomRow() as never}\r\n pagination={false}\r\n rowKey={props.rowKey}\r\n v-slots={tableSlots}\r\n scroll={{\r\n y: tableHeight.value,\r\n x: \"100%\",\r\n scrollToFirstRowOnChange: true\r\n }}\r\n />\r\n {pagination.value && (\r\n <div class={[paginationStyle, \"d-pagination\"]}>\r\n {\r\n <Pagination\r\n v-model:current={\r\n paginationConfig.value.current\r\n }\r\n v-model:pageSize={\r\n paginationConfig.value.pageSize\r\n }\r\n total={paginationConfig.value.total}\r\n disabled={props.loading}\r\n show-size-changer\r\n size={\"default\"}\r\n hide-on-single-page={\r\n paginationConfig.value.hideOnSinglePage\r\n }\r\n show-quick-jumper={\r\n paginationConfig.value.showQuickJumper\r\n }\r\n default-page-size={\r\n paginationConfig.value.defaultPageSize\r\n }\r\n page-size-options={\r\n paginationConfig.value.pageSizeOptions\r\n }\r\n show-total={\r\n paginationConfig.value.showTotal\r\n }\r\n onChange={onPaginationChange}\r\n showLessItems={true}\r\n ></Pagination>\r\n }\r\n </div>\r\n )}\r\n </Flex>\r\n );\r\n }\r\n});\r\n\r\nexport const useEleHeight = (node: Element) => {\r\n const list = [\r\n \"margin-top\",\r\n \"margin-bottom\",\r\n \"border-top\",\r\n \"border-bottom\",\r\n \"padding-top\",\r\n \"padding-bottom\",\r\n \"height\"\r\n ];\r\n const style = getComputedStyle(node);\r\n return list\r\n .map(k => parseInt(style.getPropertyValue(k), 10))\r\n .reduce((prev, cur) => {\r\n return prev + cur;\r\n });\r\n};\r\n\r\nexport default DTable;\r\n"],"names":["tableProps","height","type","Number","default","data","Array","loading","Boolean","rowKey","String","bordered","size","keys","config","Object","required","defaultPaginationProps","defaultPageSize","disabled","hideOnSinglePage","pageSize","pageSizeOptions","responsive","showLessItems","showQuickJumper","showSizeChanger","showTotal","total","simple","defaultConfig","columns","pagination","undefined","paginationConfig","activeRowClass","selection","keepSelected","paginationStyle","css","DTable","defineComponent","name","props","emits","setup","emit","slots","attrs","selectedRowKeys","ref","useProps","tableSlots","useSlots","onPaginationChange","usePagination","tableRef","tableHeight","antTableBodyRef","useHeight","rowSelection","useRowSelection","onMounted","_config","computed","merge","value","bodyCell","params","summary","headerHeight","tableEl","watch","val","nextTick","_tableBodyHeight","immediate","$el","useEleHeight","getElementsByClassName","paginationEl","paginationHeight","style","marginBottom","summaryHeight","summaryEl","changePagination","position","page","scrollTop","length","useCustomRow","record","index","clickTimeout","click","dbClick","getCheckboxProps","id","onClick","checkEnable","haveState","some","key","filter","push","activeRowBackground","event","curEl","target","HTMLElement","parentElement","parentNode","classList","contains","remove","add","clearTimeout","window","setTimeout","onDblclick","onSelect","selected","concat","onSelectAll","selectedRows","changeRows","_ids","map","includes","onChange","rowKeys","deep","fixed","columnTitle","columnWidth","_createVNode","Flex","Table","_mergeProps","y","x","scrollToFirstRowOnChange","Pagination","current","$event","node","list","getComputedStyle","k","parseInt","getPropertyValue","reduce","prev","cur"],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { type ExtractPropTypes, type PropType } from "vue";
2
+ import { type PaginationProps } from "./interface";
3
+ import type { ColumnsType } from "ant-design-vue/es/table";
4
+ export type Key = string | number;
5
+ export type SizeType = "small" | "middle" | "large" | undefined;
6
+ interface Page {
7
+ total: number;
8
+ current: number;
9
+ pageSize: number;
10
+ }
11
+ interface Config<T = unknown> {
12
+ columns: ColumnsType<T>;
13
+ pagination?: Page | undefined;
14
+ paginationConfig?: PaginationProps;
15
+ changePagination?: (current: number, size: number) => void;
16
+ click?: (record: Record<string, unknown>, index: number) => void;
17
+ dbClick?: (record: Record<string, unknown>, index: number) => void;
18
+ getCheckboxProps?: (record: unknown) => Record<string, unknown> | undefined;
19
+ activeRowClass?: string;
20
+ selection?: string;
21
+ keepSelected?: boolean;
22
+ }
23
+ export declare const tableProps: <T = unknown>() => {
24
+ height: {
25
+ type: NumberConstructor;
26
+ default: number;
27
+ };
28
+ data: {
29
+ type: PropType<T[]>;
30
+ default: () => never[];
31
+ };
32
+ loading: {
33
+ type: BooleanConstructor;
34
+ default: boolean;
35
+ };
36
+ rowKey: {
37
+ type: StringConstructor;
38
+ default: string;
39
+ };
40
+ bordered: {
41
+ type: BooleanConstructor;
42
+ default: boolean;
43
+ };
44
+ size: {
45
+ type: PropType<SizeType>;
46
+ default: string;
47
+ };
48
+ keys: {
49
+ type: PropType<Key[]>;
50
+ default: () => never[];
51
+ };
52
+ config: {
53
+ type: PropType<Config<T>>;
54
+ required: boolean;
55
+ };
56
+ };
57
+ export type TableProps = Partial<ExtractPropTypes<ReturnType<typeof tableProps>>>;
58
+ declare const DTable: import("vue").DefineComponent<ExtractPropTypes<{
59
+ height: {
60
+ type: NumberConstructor;
61
+ default: number;
62
+ };
63
+ data: {
64
+ type: PropType<unknown[]>;
65
+ default: () => never[];
66
+ };
67
+ loading: {
68
+ type: BooleanConstructor;
69
+ default: boolean;
70
+ };
71
+ rowKey: {
72
+ type: StringConstructor;
73
+ default: string;
74
+ };
75
+ bordered: {
76
+ type: BooleanConstructor;
77
+ default: boolean;
78
+ };
79
+ size: {
80
+ type: PropType<SizeType>;
81
+ default: string;
82
+ };
83
+ keys: {
84
+ type: PropType<Key[]>;
85
+ default: () => never[];
86
+ };
87
+ config: {
88
+ type: PropType<Config<unknown>>;
89
+ required: boolean;
90
+ };
91
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:keys"[], "update:keys", import("vue").PublicProps, Readonly<ExtractPropTypes<{
92
+ height: {
93
+ type: NumberConstructor;
94
+ default: number;
95
+ };
96
+ data: {
97
+ type: PropType<unknown[]>;
98
+ default: () => never[];
99
+ };
100
+ loading: {
101
+ type: BooleanConstructor;
102
+ default: boolean;
103
+ };
104
+ rowKey: {
105
+ type: StringConstructor;
106
+ default: string;
107
+ };
108
+ bordered: {
109
+ type: BooleanConstructor;
110
+ default: boolean;
111
+ };
112
+ size: {
113
+ type: PropType<SizeType>;
114
+ default: string;
115
+ };
116
+ keys: {
117
+ type: PropType<Key[]>;
118
+ default: () => never[];
119
+ };
120
+ config: {
121
+ type: PropType<Config<unknown>>;
122
+ required: boolean;
123
+ };
124
+ }>> & Readonly<{
125
+ "onUpdate:keys"?: ((...args: any[]) => any) | undefined;
126
+ }>, {
127
+ keys: Key[];
128
+ data: unknown[];
129
+ size: SizeType;
130
+ height: number;
131
+ loading: boolean;
132
+ rowKey: string;
133
+ bordered: boolean;
134
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
135
+ export declare const useEleHeight: (node: Element) => number;
136
+ export default DTable;
137
+ //# sourceMappingURL=Table.d.ts.map
@@ -0,0 +1,4 @@
1
+ import Table from "./Table";
2
+ export * from "./Table";
3
+ export default Table;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,46 @@
1
+ export interface PaginationProps {
2
+ /** 默认的每页条数 */
3
+ defaultPageSize?: number;
4
+ /** 禁用分页 */
5
+ disabled?: boolean;
6
+ /** 只有一页时是否隐藏分页器 */
7
+ hideOnSinglePage?: boolean;
8
+ /**
9
+ * 用于自定义页码的结构,可用于优化 SEO
10
+ * @param page 当前页码
11
+ * @param type 页码类型 ('page' | 'prev' | 'next')
12
+ * @param originalElement 默认的节点
13
+ * @returns 自定义的 VNode
14
+ */
15
+ itemRender?: (opt: {
16
+ page: number;
17
+ type: "page" | "prev" | "next" | "jump-prev" | "jump-next";
18
+ originalElement: unknown;
19
+ }) => unknown;
20
+ /** 每页条数(支持 v-model) */
21
+ pageSize?: number;
22
+ /** 指定每页可以显示的条数 */
23
+ pageSizeOptions?: (string | number)[];
24
+ /** 当 size 未指定时,根据屏幕宽度自动调整尺寸 */
25
+ responsive?: boolean;
26
+ /** 是否显示较少页面内容 */
27
+ showLessItems?: boolean;
28
+ /** 是否可以快速跳转至某页 */
29
+ showQuickJumper?: boolean;
30
+ /** 是否展示 pageSize 切换器,当 total 大于 50 时默认为 true */
31
+ showSizeChanger?: boolean;
32
+ /**
33
+ * 用于显示数据总量和当前数据顺序
34
+ * @param total 数据总数
35
+ * @param range 当前数据范围
36
+ * @returns 显示的文本内容
37
+ */
38
+ showTotal?: (total: number, range: [number, number]) => string;
39
+ /** 当添加该属性时,显示为简单分页 */
40
+ simple?: boolean;
41
+ /** 当为「small」时,是小尺寸分页 */
42
+ size?: "default" | "small";
43
+ /** 数据总数 */
44
+ total?: number;
45
+ }
46
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1,46 @@
1
+ import { ComputedRef } from "vue";
2
+ import { StylesConfig } from "./interface";
3
+ export declare const FormContextKey: unique symbol;
4
+ export interface TableFormContext {
5
+ isFormParent: true;
6
+ span: ComputedRef<number>;
7
+ isReadonly: ComputedRef<boolean>;
8
+ fieldErrors: ComputedRef<Record<string, string | undefined>>;
9
+ stylesConfig: ComputedRef<StylesConfig>;
10
+ model: ComputedRef<Record<string, unknown>>;
11
+ }
12
+ export declare const TableForm: import("../../utils/withInstall").SFCWithInstall<import("vue").DefineComponent<import("vue").ExtractPropTypes<{
13
+ readonly: {
14
+ type: BooleanConstructor;
15
+ default: boolean;
16
+ };
17
+ stylesConfig: {
18
+ type: import("vue").PropType<StylesConfig>;
19
+ default: () => {
20
+ rowHeight?: number;
21
+ borderColor?: string;
22
+ borderWidth?: number;
23
+ labelBgColor?: string;
24
+ focusBorderColor?: string;
25
+ };
26
+ };
27
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
28
+ readonly: {
29
+ type: BooleanConstructor;
30
+ default: boolean;
31
+ };
32
+ stylesConfig: {
33
+ type: import("vue").PropType<StylesConfig>;
34
+ default: () => {
35
+ rowHeight?: number;
36
+ borderColor?: string;
37
+ borderWidth?: number;
38
+ labelBgColor?: string;
39
+ focusBorderColor?: string;
40
+ };
41
+ };
42
+ }>> & Readonly<{}>, {
43
+ readonly: boolean;
44
+ stylesConfig: StylesConfig;
45
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>>;
46
+ //# sourceMappingURL=TableForm.d.ts.map
@@ -0,0 +1,32 @@
1
+ export declare const TableFormItem: import("../../utils/withInstall").SFCWithInstall<import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ dicName: {
3
+ type: StringConstructor;
4
+ default: undefined;
5
+ };
6
+ format: {
7
+ type: import("vue").PropType<import("./interface").Formatter> | undefined;
8
+ default: undefined;
9
+ };
10
+ span: {
11
+ type: NumberConstructor;
12
+ default: number;
13
+ };
14
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
+ dicName: {
16
+ type: StringConstructor;
17
+ default: undefined;
18
+ };
19
+ format: {
20
+ type: import("vue").PropType<import("./interface").Formatter> | undefined;
21
+ default: undefined;
22
+ };
23
+ span: {
24
+ type: NumberConstructor;
25
+ default: number;
26
+ };
27
+ }>> & Readonly<{}>, {
28
+ format: import("./interface").Formatter;
29
+ dicName: string;
30
+ span: number;
31
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>>;
32
+ //# sourceMappingURL=TableFormItem.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { TableForm } from "./TableForm";
2
+ import { TableFormItem } from "./TableFormItem";
3
+ type TableFormWithItem = typeof TableForm & {
4
+ Item: typeof TableFormItem;
5
+ };
6
+ declare const TableFormExport: TableFormWithItem;
7
+ export { TableFormExport as TableForm, TableFormItem };
8
+ export * from "./interface";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,56 @@
1
+ import type { ExtractPropTypes, PropType } from "vue";
2
+ export interface DTableFormItemProps {
3
+ name: string;
4
+ label?: string;
5
+ required?: boolean;
6
+ rules?: unknown[];
7
+ colon?: boolean;
8
+ extra?: string;
9
+ }
10
+ export type Formatter = (value: unknown, name: unknown) => unknown;
11
+ export declare const tableFormItemProps: {
12
+ dicName: {
13
+ type: StringConstructor;
14
+ default: undefined;
15
+ };
16
+ format: {
17
+ type: PropType<Formatter> | undefined;
18
+ default: undefined;
19
+ };
20
+ span: {
21
+ type: NumberConstructor;
22
+ default: number;
23
+ };
24
+ };
25
+ export declare const DEFAULT_STYLES_CONFIG: StylesConfig;
26
+ export interface StylesConfig {
27
+ /**
28
+ * 表格行高度
29
+ */
30
+ rowHeight?: number;
31
+ borderColor?: string;
32
+ borderWidth?: number;
33
+ labelBgColor?: string;
34
+ focusBorderColor?: string;
35
+ }
36
+ export declare const tableFormProps: {
37
+ readonly: {
38
+ type: BooleanConstructor;
39
+ default: boolean;
40
+ };
41
+ stylesConfig: {
42
+ type: PropType<StylesConfig>;
43
+ default: () => {
44
+ /**
45
+ * 表格行高度
46
+ */
47
+ rowHeight?: number;
48
+ borderColor?: string;
49
+ borderWidth?: number;
50
+ labelBgColor?: string;
51
+ focusBorderColor?: string;
52
+ };
53
+ };
54
+ };
55
+ export type TableFormItemProps = Partial<ExtractPropTypes<typeof tableFormItemProps>>;
56
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1,12 @@
1
+ import { ComputedRef } from "vue";
2
+ import { StylesConfig } from "./interface";
3
+ import type { GlobalToken } from "ant-design-vue/es/theme/interface";
4
+ /**
5
+ * 表单项样式
6
+ */
7
+ export declare const useFormItemStyle: (styles: StylesConfig, _token: ComputedRef<GlobalToken>) => {
8
+ cellBorderStyle: string;
9
+ valueDisplayClass: string;
10
+ textWrapperClass: string;
11
+ };
12
+ //# sourceMappingURL=style.d.ts.map
@@ -0,0 +1,8 @@
1
+ import { ComputedRef } from "vue";
2
+ import type { GlobalToken } from "ant-design-vue/es/theme/interface";
3
+ export declare function useDesign(scope: string): {
4
+ prefixCls: ComputedRef<string>;
5
+ getPrefixCls: (blockSuffix?: string) => string;
6
+ };
7
+ export declare function useAntdToken(): ComputedRef<GlobalToken>;
8
+ //# sourceMappingURL=useDesign.d.ts.map
@@ -0,0 +1,8 @@
1
+ import type { App } from "vue";
2
+ export * from "./components";
3
+ export declare const install: (app: App) => void;
4
+ declare const _default: {
5
+ install: (app: App) => void;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,9 @@
1
+ declare const _default: () => {
2
+ findMatchedMenuById: (id: string, menuItems: any[]) => {
3
+ parentItem: any;
4
+ matchItem: any;
5
+ };
6
+ findMenuItemByUrl: (url: string, menuItems: any[]) => any;
7
+ };
8
+ export default _default;
9
+ //# sourceMappingURL=useMenuCore.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { type Ref } from "vue";
2
+ import type { GlobalToken } from "ant-design-vue/es/theme";
3
+ type UseAntdTokenReturn = {
4
+ token: Ref<GlobalToken>;
5
+ setToken: (globalToken: GlobalToken) => void;
6
+ };
7
+ export declare const useAntdToken: () => UseAntdTokenReturn;
8
+ export {};
9
+ //# sourceMappingURL=useTheme.d.ts.map
@@ -0,0 +1,12 @@
1
+ import type { Component, Plugin } from "vue";
2
+ export type SFCWithInstall<T> = T & Plugin & {
3
+ [key: string]: T;
4
+ };
5
+ /**
6
+ * 优化后的 withInstall 辅助函数
7
+ * * 关键修改:
8
+ * - 将泛型 T 的约束改为更通用的 Vue Component 类型。
9
+ * - 使用 'Component' 或 'ComponentOptionsBase' 来确保兼容性。
10
+ */
11
+ export declare const withInstall: <T extends Component>(component: T) => SFCWithInstall<T>;
12
+ //# sourceMappingURL=withInstall.d.ts.map
@@ -0,0 +1,6 @@
1
+ export declare const Card: import("../../utils/withInstall").SFCWithInstall<import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ title: StringConstructor;
3
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
4
+ title: StringConstructor;
5
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>>;
6
+ //# sourceMappingURL=Card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.mjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["// components/card/index.tsx\r\nimport { defineComponent } from \"vue\";\r\n\r\nimport { cx } from \"@emotion/css\"; // 引入 cx\r\n\r\nimport { useDesign } from \"../../hooks/useDesign\"; // 引入我们刚才写的 hook\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\nimport { useStyle } from \"./style\";\r\n\r\nconst _Card = defineComponent({\r\n name: \"DCard\",\r\n props: {\r\n title: String\r\n },\r\n setup(props, { slots }) {\r\n // 初始化 Design Hook,传入组件名 'card'\r\n const { getPrefixCls } = useDesign(\"card\");\r\n\r\n // 初始化 Emotion 样式\r\n const styles = useStyle();\r\n\r\n return () => {\r\n // 生成语义化类名\r\n const rootCls = getPrefixCls();\r\n const headerCls = getPrefixCls(\"head\");\r\n const iconCls = getPrefixCls(\"icon\");\r\n const titleCls = getPrefixCls(\"title\");\r\n const actionCls = getPrefixCls(\"action\");\r\n const bodyCls = getPrefixCls(\"body\");\r\n\r\n return (\r\n <div class={cx(rootCls, styles.container)}>\r\n {/* Header 区域 */}\r\n <div class={cx(headerCls, styles.header)}>\r\n {slots.icon && <div class={cx(iconCls, styles.icon)}>{slots.icon()}</div>}\r\n <div class={cx(titleCls, styles.header_title)}>{props.title}</div>\r\n </div>\r\n {/*action*/}\r\n {slots.action && <div class={cx(actionCls, styles.action)}>{slots.action()}</div>}\r\n\r\n {/* Body 区域 */}\r\n <div class={cx(bodyCls, styles.body)}>{slots.default?.()}</div>\r\n </div>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const Card = withInstall(_Card);\r\n"],"names":["_Card","defineComponent","name","props","title","String","setup","slots","getPrefixCls","useDesign","styles","useStyle","rootCls","headerCls","iconCls","titleCls","actionCls","bodyCls","_createVNode","cx","container","header","icon","header_title","action","body","default","Card","withInstall"],"mappings":";;;;;;;AAUA,MAAMA,wBAAQC,eAAAA,CAAgB;AAAA,EAC5BC,IAAAA,EAAM,OAAA;AAAA,EACNC,KAAAA,EAAO;AAAA,IACLC,KAAAA,EAAOC;AAAAA,GACT;AAAA,EACAC,MAAMH,KAAAA,EAAO;AAAA,IAAEI;AAAAA,GAAM,EAAG;AAEtB,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAa,GAAIC,UAAU,MAAM,CAAA;AAGzC,IAAA,MAAMC,SAASC,QAAAA,EAAS;AAExB,IAAA,OAAO,MAAM;AAtBjB,MAAA,IAAA,EAAA;AAwBM,MAAA,MAAMC,UAAUJ,YAAAA,EAAa;AAC7B,MAAA,MAAMK,SAAAA,GAAYL,aAAa,MAAM,CAAA;AACrC,MAAA,MAAMM,OAAAA,GAAUN,aAAa,MAAM,CAAA;AACnC,MAAA,MAAMO,QAAAA,GAAWP,aAAa,OAAO,CAAA;AACrC,MAAA,MAAMQ,SAAAA,GAAYR,aAAa,QAAQ,CAAA;AACvC,MAAA,MAAMS,OAAAA,GAAUT,aAAa,MAAM,CAAA;AAEnC,MAAA,OAAAU,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,EAAAA,CAAGP,OAAAA,EAASF,MAAAA,CAAOU,SAAS;AAAA,OAAC,EAAA,CAAAF,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAE3BC,EAAAA,CAAGN,SAAAA,EAAWH,MAAAA,CAAOW,MAAM;AAAA,OAAC,EAAA,CACrCd,KAAAA,CAAMe,IAAAA,IAAIJ,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAgBC,EAAAA,CAAGL,OAAAA,EAASJ,MAAAA,CAAOY,IAAI;AAAA,OAAC,EAAA,CAAGf,KAAAA,CAAMe,IAAAA,EAAM,CAAA,CAAA,EAAOJ,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAC7DC,EAAAA,CAAGJ,QAAAA,EAAUL,MAAAA,CAAOa,YAAY;AAAA,OAAC,EAAA,CAAGpB,KAAAA,CAAMC,KAAK,CAAA,CAAA,CAAA,CAAA,EAG5DG,KAAAA,CAAMiB,MAAAA,IAAMN,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAgBC,EAAAA,CAAGH,SAAAA,EAAWN,MAAAA,CAAOc,MAAM;AAAA,OAAC,EAAA,CAAGjB,KAAAA,CAAMiB,MAAAA,EAAQ,CAAA,CAAA,EAAON,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAGrEC,EAAAA,CAAGF,OAAAA,EAASP,MAAAA,CAAOe,IAAI;AAAA,SAAC,CAAA,CAAGlB,EAAAA,GAAAA,KAAAA,CAAMmB,YAANnB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAiB,CAAA,CAAA,CAAA,CAAA;AAAA,IAG9D,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMoB,IAAAA,GAAOC,YAAY5B,KAAK;;;;"}
1
+ {"version":3,"file":"Card.mjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["// components/card/index.tsx\r\nimport { defineComponent } from \"vue\";\r\n\r\nimport { cx } from \"@emotion/css\"; // 引入 cx\r\n\r\nimport { useDesign } from \"../../hooks/useDesign\"; // 引入我们刚才写的 hook\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\nimport { useStyle } from \"./style\";\r\n\r\nconst _Card = defineComponent({\r\n name: \"DCard\",\r\n props: {\r\n title: String\r\n },\r\n setup(props, { slots }) {\r\n // 初始化 Design Hook,传入组件名 'card'\r\n const { getPrefixCls } = useDesign(\"card\");\r\n\r\n // 初始化 Emotion 样式\r\n const styles = useStyle();\r\n\r\n return () => {\r\n // 生成语义化类名\r\n const rootCls = getPrefixCls();\r\n const headerCls = getPrefixCls(\"head\");\r\n const iconCls = getPrefixCls(\"icon\");\r\n const titleCls = getPrefixCls(\"title\");\r\n const actionCls = getPrefixCls(\"action\");\r\n const bodyCls = getPrefixCls(\"body\");\r\n\r\n return (\r\n <div class={cx(rootCls, styles.container)}>\r\n {/* Header 区域 */}\r\n <div class={cx(headerCls, styles.header)}>\r\n {slots.icon && (\r\n <div class={cx(iconCls, styles.icon)}>\r\n {slots.icon()}\r\n </div>\r\n )}\r\n <div class={cx(titleCls, styles.header_title)}>\r\n {props.title}\r\n </div>\r\n </div>\r\n {/*action*/}\r\n {slots.action && (\r\n <div class={cx(actionCls, styles.action)}>\r\n {slots.action()}\r\n </div>\r\n )}\r\n\r\n {/* Body 区域 */}\r\n <div class={cx(bodyCls, styles.body)}>\r\n {slots.default?.()}\r\n </div>\r\n </div>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const Card = withInstall(_Card);\r\n"],"names":["_Card","defineComponent","name","props","title","String","setup","slots","getPrefixCls","useDesign","styles","useStyle","rootCls","headerCls","iconCls","titleCls","actionCls","bodyCls","_createVNode","cx","container","header","icon","header_title","action","body","default","Card","withInstall"],"mappings":";;;;;;;AAUA,MAAMA,wBAAQC,eAAAA,CAAgB;AAAA,EAC5BC,IAAAA,EAAM,OAAA;AAAA,EACNC,KAAAA,EAAO;AAAA,IACLC,KAAAA,EAAOC;AAAAA,GACT;AAAA,EACAC,MAAMH,KAAAA,EAAO;AAAA,IAAEI;AAAAA,GAAM,EAAG;AAEtB,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAa,GAAIC,UAAU,MAAM,CAAA;AAGzC,IAAA,MAAMC,SAASC,QAAAA,EAAS;AAExB,IAAA,OAAO,MAAM;AAtBjB,MAAA,IAAA,EAAA;AAwBM,MAAA,MAAMC,UAAUJ,YAAAA,EAAa;AAC7B,MAAA,MAAMK,SAAAA,GAAYL,aAAa,MAAM,CAAA;AACrC,MAAA,MAAMM,OAAAA,GAAUN,aAAa,MAAM,CAAA;AACnC,MAAA,MAAMO,QAAAA,GAAWP,aAAa,OAAO,CAAA;AACrC,MAAA,MAAMQ,SAAAA,GAAYR,aAAa,QAAQ,CAAA;AACvC,MAAA,MAAMS,OAAAA,GAAUT,aAAa,MAAM,CAAA;AAEnC,MAAA,OAAAU,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,EAAAA,CAAGP,OAAAA,EAASF,MAAAA,CAAOU,SAAS;AAAA,OAAC,EAAA,CAAAF,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAE3BC,EAAAA,CAAGN,SAAAA,EAAWH,MAAAA,CAAOW,MAAM;AAAA,OAAC,EAAA,CACrCd,KAAAA,CAAMe,IAAAA,IAAIJ,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACGC,EAAAA,CAAGL,OAAAA,EAASJ,MAAAA,CAAOY,IAAI;AAAA,OAAC,EAAA,CACjCf,KAAAA,CAAMe,IAAAA,EAAM,CAAA,CAAA,EAEhBJ,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACWC,EAAAA,CAAGJ,QAAAA,EAAUL,MAAAA,CAAOa,YAAY;AAAA,OAAC,EAAA,CAC1CpB,KAAAA,CAAMC,KAAK,CAAA,CAAA,CAAA,CAAA,EAIfG,KAAAA,CAAMiB,MAAAA,IAAMN,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACCC,EAAAA,CAAGH,SAAAA,EAAWN,MAAAA,CAAOc,MAAM;AAAA,OAAC,EAAA,CACrCjB,KAAAA,CAAMiB,MAAAA,EAAQ,CAAA,CAAA,EAElBN,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAGWC,EAAAA,CAAGF,OAAAA,EAASP,MAAAA,CAAOe,IAAI;AAAA,SAAC,CAAA,CACjClB,EAAAA,GAAAA,KAAAA,CAAMmB,YAANnB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAiB,CAAA,CAAA,CAAA,CAAA;AAAA,IAI1B,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMoB,IAAAA,GAAOC,YAAY5B,KAAK;;;;"}
@@ -0,0 +1,3 @@
1
+ import { Card } from "./Card";
2
+ export { Card };
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,9 @@
1
+ export declare const useStyle: () => {
2
+ container: string;
3
+ header: string;
4
+ header_title: string;
5
+ icon: string;
6
+ action: string;
7
+ body: string;
8
+ };
9
+ //# sourceMappingURL=style.d.ts.map