@ditari/bsui 5.1.4 → 5.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/layout/Layout.vue2.cjs +4 -18
- package/dist/cjs/components/layout/Layout.vue2.cjs.map +1 -1
- package/dist/cjs/components/layout/components/layout/HeaderLayout.vue2.cjs +3 -25
- package/dist/cjs/components/layout/components/layout/HeaderLayout.vue2.cjs.map +1 -1
- package/dist/cjs/components/tab/Tab.vue2.cjs +264 -180
- package/dist/cjs/components/tab/Tab.vue2.cjs.map +1 -1
- package/dist/cjs/components/table/Table.cjs +2 -2
- package/dist/cjs/components/table/Table.cjs.map +1 -1
- package/dist/cjs/components/table-form/TableForm.cjs +2 -2
- package/dist/cjs/components/table-form/TableForm.cjs.map +1 -1
- package/dist/cjs/components/table-form/interface.cjs.map +1 -1
- package/dist/css/components/tab/style/index.css +1 -1
- package/dist/css/index.css +1 -1
- package/dist/esm/components/layout/Layout.vue2.mjs +6 -20
- package/dist/esm/components/layout/Layout.vue2.mjs.map +1 -1
- package/dist/esm/components/layout/components/layout/HeaderLayout.vue2.mjs +5 -27
- package/dist/esm/components/layout/components/layout/HeaderLayout.vue2.mjs.map +1 -1
- package/dist/esm/components/tab/Tab.vue2.mjs +268 -184
- package/dist/esm/components/tab/Tab.vue2.mjs.map +1 -1
- package/dist/esm/components/table/Table.mjs +1 -1
- package/dist/esm/components/table/Table.mjs.map +1 -1
- package/dist/esm/components/table-form/TableForm.mjs +1 -1
- package/dist/esm/components/table-form/TableForm.mjs.map +1 -1
- package/dist/esm/components/table-form/interface.mjs.map +1 -1
- package/dist/style/tab/style/index.scss +10 -4
- package/dist/types/components/layout/Layout.vue.d.ts +63 -51
- package/dist/types/components/layout/Layout.vue.d.ts.map +1 -1
- package/dist/types/components/layout/components/layout/HeaderLayout.vue.d.ts +63 -50
- package/dist/types/components/layout/components/layout/HeaderLayout.vue.d.ts.map +1 -1
- package/dist/types/components/tab/Tab.vue.d.ts +61 -22
- package/dist/types/components/tab/Tab.vue.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, ref, onMounted, computed, watch, nextTick, createVNode, mergeProps } from 'vue';
|
|
2
2
|
import { Flex, Table, Pagination } from 'ant-design-vue';
|
|
3
3
|
import { css } from '@emotion/css';
|
|
4
|
-
import { merge } from 'lodash';
|
|
4
|
+
import { merge } from 'lodash-es';
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
var __defProp = Object.defineProperty;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.mjs","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\";\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 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 <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","console","log","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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"}
|
|
1
|
+
{"version":3,"file":"Table.mjs","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 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 <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","console","log","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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"}
|
|
@@ -3,7 +3,7 @@ import { Col, FormItem, Form, Row } from 'ant-design-vue';
|
|
|
3
3
|
import { DEFAULT_STYLES_CONFIG, tableFormProps } from './interface.mjs';
|
|
4
4
|
import { useFormItemStyle } from './style.mjs';
|
|
5
5
|
import { css, cx } from '@emotion/css';
|
|
6
|
-
import { merge } from 'lodash';
|
|
6
|
+
import { merge } from 'lodash-es';
|
|
7
7
|
import { useAntdToken, useDesign } from '../../hooks/useDesign.mjs';
|
|
8
8
|
import { withInstall } from '../../utils/withInstall.mjs';
|
|
9
9
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableForm.mjs","sources":["../../../../src/components/table-form/TableForm.tsx"],"sourcesContent":["import {\r\n Comment,\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n isVNode,\r\n provide,\r\n ref,\r\n Text\r\n} from \"vue\";\r\nimport {\r\n Col,\r\n Form,\r\n FormInstance,\r\n FormItem,\r\n Row\r\n} from \"ant-design-vue\";\r\n\r\nimport {\r\n DEFAULT_STYLES_CONFIG,\r\n StylesConfig,\r\n tableFormProps\r\n} from \"./interface\";\r\nimport { useFormItemStyle } from \"./style\";\r\nimport { css, cx } from \"@emotion/css\";\r\nimport { merge } from \"lodash\";\r\n\r\nimport {\r\n useAntdToken,\r\n useDesign\r\n} from \"../../hooks/useDesign\";\r\n\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\nexport const FormContextKey = Symbol(\r\n \"d-table-form-context\"\r\n);\r\n\r\n// ⭐️ Context 接口,包含错误状态映射\r\nexport interface TableFormContext {\r\n isFormParent: true;\r\n span: ComputedRef<number>;\r\n isReadonly: ComputedRef<boolean>;\r\n fieldErrors: ComputedRef<\r\n Record<string, string | undefined>\r\n >;\r\n stylesConfig: ComputedRef<StylesConfig>;\r\n model: ComputedRef<Record<string, unknown>>;\r\n}\r\n\r\n// 辅助函数:计算插槽中有效 VNode 的数量\r\nconst getValidVNodesCount = (vnodes: unknown): number => {\r\n let count = 0;\r\n if (Array.isArray(vnodes)) {\r\n vnodes.forEach(vnode => {\r\n if (isVNode(vnode)) {\r\n // 忽略注释、文本节点、或仅空白的节点\r\n if (\r\n vnode.type !== Comment &&\r\n vnode.type !== Text &&\r\n vnode.children !== \" \"\r\n ) {\r\n count++;\r\n }\r\n } else if (Array.isArray(vnode)) {\r\n // 处理 Fragment 或嵌套数组\r\n count += getValidVNodesCount(vnode);\r\n } else if (\r\n typeof vnode === \"string\" &&\r\n vnode.trim() !== \"\"\r\n ) {\r\n // 处理非空字符串(虽然不常见,但保险起见)\r\n count++;\r\n }\r\n });\r\n }\r\n return count;\r\n};\r\n\r\nconst containerBorderStyle = css`\r\n /* 顶部边框 */\r\n border-top: 1px solid #d9d9d9;\r\n /* 左侧边框 */\r\n border-left: 1px solid #d9d9d9;\r\n`;\r\n\r\nconst _TableForm = defineComponent({\r\n name: \"DTableForm\",\r\n props: tableFormProps,\r\n\r\n setup(props, { slots, attrs, expose }) {\r\n const token = useAntdToken();\r\n\r\n const { getPrefixCls } = useDesign(\"table-form\");\r\n // 表单对象\r\n const formRef = ref<FormInstance | null>();\r\n\r\n //动态计算一个col的span值是多少\r\n const calculatedSpan = computed(() =>\r\n Math.floor(24 / props.colCount)\r\n );\r\n\r\n // ⭐️ 新增:计算只读状态\r\n const isReadonly = computed(() => props.readonly);\r\n const finalStylesConfig = computed<StylesConfig>(() => {\r\n // 1. 创建默认配置的深拷贝\r\n const defaultCopy = JSON.parse(\r\n JSON.stringify(DEFAULT_STYLES_CONFIG)\r\n );\r\n // 2. 使用 Lodash merge (或 mergeWith) 合并用户传入的配置\r\n return merge(defaultCopy, props.stylesConfig);\r\n });\r\n const modelState = computed(() => attrs.model);\r\n\r\n // ⭐️ FIX 2: 提供 Context 时,传递 ComputedRef 本身,而不是它的 .value\r\n provide(FormContextKey, {\r\n isFormParent: true,\r\n span: calculatedSpan,\r\n fieldErrors: {},\r\n isReadonly: isReadonly,\r\n stylesConfig: finalStylesConfig,\r\n model: modelState\r\n });\r\n\r\n // ⭐️ 核心逻辑:计算并渲染占位符\r\n const fillerCols = computed(() => {\r\n const colCls = getPrefixCls(\"item-col\");\r\n const styles = useFormItemStyle(\r\n finalStylesConfig.value,\r\n token\r\n );\r\n\r\n const defaultSlot = slots.default\r\n ? slots.default()\r\n : [];\r\n const itemCounts = getValidVNodesCount(defaultSlot);\r\n const colCount = props.colCount;\r\n\r\n // 计算当前行已占用的位置 (余数)\r\n const remainder = itemCounts % colCount;\r\n const fillerCount =\r\n remainder === 0 ? 0 : colCount - remainder;\r\n\r\n const span = calculatedSpan.value;\r\n const fillerNodes = [];\r\n\r\n // 渲染所需数量的空 Col\r\n for (let i = 0; i < fillerCount; i++) {\r\n fillerNodes.push(\r\n <Col\r\n key={`filler-${i}`}\r\n span={span}\r\n class={cx(colCls, styles.cellBorderStyle)}\r\n >\r\n <FormItem label={\" \"}></FormItem>\r\n </Col>\r\n );\r\n }\r\n return fillerNodes;\r\n });\r\n\r\n expose({\r\n form: formRef\r\n });\r\n\r\n return () => {\r\n const rootCls = getPrefixCls();\r\n\r\n return (\r\n <Form\r\n class={cx(rootCls, containerBorderStyle)}\r\n {...attrs}\r\n ref={formRef}\r\n >\r\n <Row>\r\n {/* 渲染所有传入的 FormItem */}\r\n {slots.default ? slots.default() : null}\r\n {/* 渲染计算出的占位 Col */}\r\n {fillerCols.value}\r\n </Row>\r\n </Form>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const TableForm = withInstall(_TableForm);\r\n"],"names":["FormContextKey","Symbol","getValidVNodesCount","vnodes","count","Array","isArray","forEach","vnode","isVNode","type","Comment","Text","children","trim","containerBorderStyle","css","_TableForm","defineComponent","name","props","tableFormProps","setup","slots","attrs","expose","token","useAntdToken","getPrefixCls","useDesign","formRef","ref","calculatedSpan","computed","Math","floor","colCount","isReadonly","readonly","finalStylesConfig","defaultCopy","JSON","parse","stringify","DEFAULT_STYLES_CONFIG","merge","stylesConfig","modelState","model","provide","isFormParent","span","fieldErrors","fillerCols","colCls","styles","useFormItemStyle","value","defaultSlot","default","itemCounts","remainder","fillerCount","fillerNodes","i","push","_createVNode","Col","cx","cellBorderStyle","FormItem","form","rootCls","Form","_mergeProps","Row","TableForm","withInstall"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableForm.mjs","sources":["../../../../src/components/table-form/TableForm.tsx"],"sourcesContent":["import {\r\n Comment,\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n isVNode,\r\n provide,\r\n ref,\r\n Text\r\n} from \"vue\";\r\nimport {\r\n Col,\r\n Form,\r\n FormInstance,\r\n FormItem,\r\n Row\r\n} from \"ant-design-vue\";\r\n\r\nimport {\r\n DEFAULT_STYLES_CONFIG,\r\n StylesConfig,\r\n tableFormProps\r\n} from \"./interface\";\r\nimport { useFormItemStyle } from \"./style\";\r\nimport { css, cx } from \"@emotion/css\";\r\nimport { merge } from \"lodash-es\";\r\n\r\nimport {\r\n useAntdToken,\r\n useDesign\r\n} from \"../../hooks/useDesign\";\r\n\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\nexport const FormContextKey = Symbol(\r\n \"d-table-form-context\"\r\n);\r\n\r\n// ⭐️ Context 接口,包含错误状态映射\r\nexport interface TableFormContext {\r\n isFormParent: true;\r\n span: ComputedRef<number>;\r\n isReadonly: ComputedRef<boolean>;\r\n fieldErrors: ComputedRef<\r\n Record<string, string | undefined>\r\n >;\r\n stylesConfig: ComputedRef<StylesConfig>;\r\n model: ComputedRef<Record<string, unknown>>;\r\n}\r\n\r\n// 辅助函数:计算插槽中有效 VNode 的数量\r\nconst getValidVNodesCount = (vnodes: unknown): number => {\r\n let count = 0;\r\n if (Array.isArray(vnodes)) {\r\n vnodes.forEach(vnode => {\r\n if (isVNode(vnode)) {\r\n // 忽略注释、文本节点、或仅空白的节点\r\n if (\r\n vnode.type !== Comment &&\r\n vnode.type !== Text &&\r\n vnode.children !== \" \"\r\n ) {\r\n count++;\r\n }\r\n } else if (Array.isArray(vnode)) {\r\n // 处理 Fragment 或嵌套数组\r\n count += getValidVNodesCount(vnode);\r\n } else if (\r\n typeof vnode === \"string\" &&\r\n vnode.trim() !== \"\"\r\n ) {\r\n // 处理非空字符串(虽然不常见,但保险起见)\r\n count++;\r\n }\r\n });\r\n }\r\n return count;\r\n};\r\n\r\nconst containerBorderStyle = css`\r\n /* 顶部边框 */\r\n border-top: 1px solid #d9d9d9;\r\n /* 左侧边框 */\r\n border-left: 1px solid #d9d9d9;\r\n`;\r\n\r\nconst _TableForm = defineComponent({\r\n name: \"DTableForm\",\r\n props: tableFormProps,\r\n\r\n setup(props, { slots, attrs, expose }) {\r\n const token = useAntdToken();\r\n\r\n const { getPrefixCls } = useDesign(\"table-form\");\r\n // 表单对象\r\n const formRef = ref<FormInstance | null>();\r\n\r\n //动态计算一个col的span值是多少\r\n const calculatedSpan = computed(() =>\r\n Math.floor(24 / props.colCount)\r\n );\r\n\r\n // ⭐️ 新增:计算只读状态\r\n const isReadonly = computed(() => props.readonly);\r\n const finalStylesConfig = computed<StylesConfig>(() => {\r\n // 1. 创建默认配置的深拷贝\r\n const defaultCopy = JSON.parse(\r\n JSON.stringify(DEFAULT_STYLES_CONFIG)\r\n );\r\n // 2. 使用 Lodash merge (或 mergeWith) 合并用户传入的配置\r\n return merge(defaultCopy, props.stylesConfig);\r\n });\r\n const modelState = computed(() => attrs.model);\r\n\r\n // ⭐️ FIX 2: 提供 Context 时,传递 ComputedRef 本身,而不是它的 .value\r\n provide(FormContextKey, {\r\n isFormParent: true,\r\n span: calculatedSpan,\r\n fieldErrors: {},\r\n isReadonly: isReadonly,\r\n stylesConfig: finalStylesConfig,\r\n model: modelState\r\n });\r\n\r\n // ⭐️ 核心逻辑:计算并渲染占位符\r\n const fillerCols = computed(() => {\r\n const colCls = getPrefixCls(\"item-col\");\r\n const styles = useFormItemStyle(\r\n finalStylesConfig.value,\r\n token\r\n );\r\n\r\n const defaultSlot = slots.default\r\n ? slots.default()\r\n : [];\r\n const itemCounts = getValidVNodesCount(defaultSlot);\r\n const colCount = props.colCount;\r\n\r\n // 计算当前行已占用的位置 (余数)\r\n const remainder = itemCounts % colCount;\r\n const fillerCount =\r\n remainder === 0 ? 0 : colCount - remainder;\r\n\r\n const span = calculatedSpan.value;\r\n const fillerNodes = [];\r\n\r\n // 渲染所需数量的空 Col\r\n for (let i = 0; i < fillerCount; i++) {\r\n fillerNodes.push(\r\n <Col\r\n key={`filler-${i}`}\r\n span={span}\r\n class={cx(colCls, styles.cellBorderStyle)}\r\n >\r\n <FormItem label={\" \"}></FormItem>\r\n </Col>\r\n );\r\n }\r\n return fillerNodes;\r\n });\r\n\r\n expose({\r\n form: formRef\r\n });\r\n\r\n return () => {\r\n const rootCls = getPrefixCls();\r\n\r\n return (\r\n <Form\r\n class={cx(rootCls, containerBorderStyle)}\r\n {...attrs}\r\n ref={formRef}\r\n >\r\n <Row>\r\n {/* 渲染所有传入的 FormItem */}\r\n {slots.default ? slots.default() : null}\r\n {/* 渲染计算出的占位 Col */}\r\n {fillerCols.value}\r\n </Row>\r\n </Form>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const TableForm = withInstall(_TableForm);\r\n"],"names":["FormContextKey","Symbol","getValidVNodesCount","vnodes","count","Array","isArray","forEach","vnode","isVNode","type","Comment","Text","children","trim","containerBorderStyle","css","_TableForm","defineComponent","name","props","tableFormProps","setup","slots","attrs","expose","token","useAntdToken","getPrefixCls","useDesign","formRef","ref","calculatedSpan","computed","Math","floor","colCount","isReadonly","readonly","finalStylesConfig","defaultCopy","JSON","parse","stringify","DEFAULT_STYLES_CONFIG","merge","stylesConfig","modelState","model","provide","isFormParent","span","fieldErrors","fillerCols","colCls","styles","useFormItemStyle","value","defaultSlot","default","itemCounts","remainder","fillerCount","fillerNodes","i","push","_createVNode","Col","cx","cellBorderStyle","FormItem","form","rootCls","Form","_mergeProps","Row","TableForm","withInstall"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.mjs","sources":["../../../../src/components/table-form/interface.ts"],"sourcesContent":["import { isUndefined } from \"lodash\";\r\nimport type { ExtractPropTypes, PropType } from \"vue\";\r\n\r\n// 接口:定义你的 Props 应该有哪些属性和类型\r\nexport interface DTableFormItemProps {\r\n name: string;\r\n label?: string;\r\n required?: boolean;\r\n rules?: unknown[]; // 简化,实际应定义详细校验规则类型\r\n colon?: boolean;\r\n extra?: string;\r\n}\r\n\r\nexport type Formatter = (\r\n value: unknown,\r\n name: unknown\r\n) => unknown;\r\n\r\n// 运行时 Props 的定义 (常量)\r\nexport const tableFormItemProps = {\r\n // 字典名字\r\n dicName: {\r\n type: String,\r\n default: undefined\r\n },\r\n format: {\r\n type: Function as PropType<Formatter> | undefined,\r\n // 默认值\r\n default: undefined\r\n }\r\n};\r\n\r\n// ⭐️ 导出默认值常量\r\nexport const DEFAULT_STYLES_CONFIG: StylesConfig = {\r\n rowHeight: 32,\r\n borderColor: \"#dfdfdf\",\r\n borderWidth: 1,\r\n labelBgColor: \"#EEEEEE\",\r\n focusBorderColor: \"#1677ff\"\r\n};\r\n\r\nexport interface StylesConfig {\r\n /**\r\n * 表格行高度\r\n */\r\n rowHeight?: number;\r\n // 边框颜色\r\n borderColor?: string;\r\n // 边框\r\n borderWidth?: number;\r\n // 标签颜色label\r\n labelBgColor?: string;\r\n //焦点边框颜色\r\n focusBorderColor?: string;\r\n}\r\n\r\nexport const tableFormProps = {\r\n colCount: {\r\n type: Number,\r\n default: 4,\r\n required: true as const\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n stylesConfig: {\r\n type: Object as PropType<StylesConfig>,\r\n default: () => ({ ...DEFAULT_STYLES_CONFIG })\r\n }\r\n};\r\n\r\n// 导出 Prop 类型,供外部使用 (例如,在 TSX 中使用)\r\nexport type TableFormItemProps = Partial<\r\n ExtractPropTypes<typeof tableFormItemProps>\r\n>;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmBO,MAAM,kBAAA,GAAqB;AAAA;AAAA,EAEhC,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA;AAAA,IAEN,OAAA,EAAS,KAAA;AAAA;AAEb;AAGO,MAAM,qBAAA,GAAsC;AAAA,EACjD,SAAA,EAAW,EAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,CAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,gBAAA,EAAkB;AACpB;AAiBO,MAAM,cAAA,GAAiB;AAAA,EAC5B,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,CAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,MAAO,cAAA,CAAA,EAAA,EAAK,qBAAA;AAAA;AAEzB;;;;"}
|
|
1
|
+
{"version":3,"file":"interface.mjs","sources":["../../../../src/components/table-form/interface.ts"],"sourcesContent":["import { isUndefined } from \"lodash-es\";\r\nimport type { ExtractPropTypes, PropType } from \"vue\";\r\n\r\n// 接口:定义你的 Props 应该有哪些属性和类型\r\nexport interface DTableFormItemProps {\r\n name: string;\r\n label?: string;\r\n required?: boolean;\r\n rules?: unknown[]; // 简化,实际应定义详细校验规则类型\r\n colon?: boolean;\r\n extra?: string;\r\n}\r\n\r\nexport type Formatter = (\r\n value: unknown,\r\n name: unknown\r\n) => unknown;\r\n\r\n// 运行时 Props 的定义 (常量)\r\nexport const tableFormItemProps = {\r\n // 字典名字\r\n dicName: {\r\n type: String,\r\n default: undefined\r\n },\r\n format: {\r\n type: Function as PropType<Formatter> | undefined,\r\n // 默认值\r\n default: undefined\r\n }\r\n};\r\n\r\n// ⭐️ 导出默认值常量\r\nexport const DEFAULT_STYLES_CONFIG: StylesConfig = {\r\n rowHeight: 32,\r\n borderColor: \"#dfdfdf\",\r\n borderWidth: 1,\r\n labelBgColor: \"#EEEEEE\",\r\n focusBorderColor: \"#1677ff\"\r\n};\r\n\r\nexport interface StylesConfig {\r\n /**\r\n * 表格行高度\r\n */\r\n rowHeight?: number;\r\n // 边框颜色\r\n borderColor?: string;\r\n // 边框\r\n borderWidth?: number;\r\n // 标签颜色label\r\n labelBgColor?: string;\r\n //焦点边框颜色\r\n focusBorderColor?: string;\r\n}\r\n\r\nexport const tableFormProps = {\r\n colCount: {\r\n type: Number,\r\n default: 4,\r\n required: true as const\r\n },\r\n readonly: {\r\n type: Boolean,\r\n default: false\r\n },\r\n stylesConfig: {\r\n type: Object as PropType<StylesConfig>,\r\n default: () => ({ ...DEFAULT_STYLES_CONFIG })\r\n }\r\n};\r\n\r\n// 导出 Prop 类型,供外部使用 (例如,在 TSX 中使用)\r\nexport type TableFormItemProps = Partial<\r\n ExtractPropTypes<typeof tableFormItemProps>\r\n>;\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmBO,MAAM,kBAAA,GAAqB;AAAA;AAAA,EAEhC,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,KAAA;AAAA,GACX;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,QAAA;AAAA;AAAA,IAEN,OAAA,EAAS,KAAA;AAAA;AAEb;AAGO,MAAM,qBAAA,GAAsC;AAAA,EACjD,SAAA,EAAW,EAAA;AAAA,EACX,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,CAAA;AAAA,EACb,YAAA,EAAc,SAAA;AAAA,EACd,gBAAA,EAAkB;AACpB;AAiBO,MAAM,cAAA,GAAiB;AAAA,EAC5B,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,CAAA;AAAA,IACT,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS,MAAO,cAAA,CAAA,EAAA,EAAK,qBAAA;AAAA;AAEzB;;;;"}
|
|
@@ -74,7 +74,11 @@
|
|
|
74
74
|
&:before,
|
|
75
75
|
&:after {
|
|
76
76
|
z-index: 10;
|
|
77
|
-
box-shadow: 0 0 0 30px var(--active-
|
|
77
|
+
box-shadow: 0 0 0 30px var(--active-shadow-color);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.ant-tabs-tab-btn {
|
|
81
|
+
color: var(--active-text-color);
|
|
78
82
|
}
|
|
79
83
|
}
|
|
80
84
|
|
|
@@ -109,11 +113,11 @@
|
|
|
109
113
|
|
|
110
114
|
&:not(.ant-tabs-tab-active) {
|
|
111
115
|
.close-btn {
|
|
112
|
-
color: white;
|
|
116
|
+
//color: white;
|
|
113
117
|
}
|
|
114
118
|
|
|
115
119
|
.tab-item {
|
|
116
|
-
color: #fff;
|
|
120
|
+
//color: #fff;
|
|
117
121
|
}
|
|
118
122
|
}
|
|
119
123
|
}
|
|
@@ -126,6 +130,7 @@
|
|
|
126
130
|
.ant-tabs-tab-btn {
|
|
127
131
|
display: flex;
|
|
128
132
|
align-items: center;
|
|
133
|
+
color: var(--tabs-text-color);
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
136
|
|
|
@@ -154,7 +159,8 @@
|
|
|
154
159
|
}
|
|
155
160
|
|
|
156
161
|
.tab-item {
|
|
157
|
-
padding-
|
|
162
|
+
padding-left: 10px;
|
|
163
|
+
padding-right: 20px;
|
|
158
164
|
}
|
|
159
165
|
|
|
160
166
|
.tab-dividers {
|
|
@@ -57,7 +57,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
57
57
|
[key: string]: unknown;
|
|
58
58
|
}) => void;
|
|
59
59
|
};
|
|
60
|
-
useKeepAlive: () => void;
|
|
61
60
|
useStyle: () => {
|
|
62
61
|
layoutStyle: string;
|
|
63
62
|
siderStyle: import("vue").ComputedRef<string>;
|
|
@@ -118,25 +117,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
118
117
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
119
118
|
}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
120
119
|
HeaderLayout: import("vue").DefineComponent<{}, {
|
|
121
|
-
|
|
122
|
-
appStore: import("pinia").Store<"_STORE_APP_ID", import("@ditari/store").App, {}, {}> | null;
|
|
123
|
-
defaultLayout: {
|
|
124
|
-
sideWidth: number;
|
|
125
|
-
headerHeight: number;
|
|
126
|
-
collapsedWidth: number;
|
|
127
|
-
collapsed: boolean;
|
|
128
|
-
};
|
|
129
|
-
defaultModeConfig: {
|
|
130
|
-
mode: string;
|
|
131
|
-
list: {
|
|
132
|
-
value: string;
|
|
133
|
-
label: string;
|
|
134
|
-
}[];
|
|
135
|
-
};
|
|
136
|
-
defaultHeaderTokenStyle: {
|
|
137
|
-
bgColor: string;
|
|
138
|
-
txtColor: string;
|
|
139
|
-
};
|
|
120
|
+
appStore: import("pinia").Store<"_STORE_APP_ID", import("@ditari/store").App, {}, {}>;
|
|
140
121
|
layout: import("vue").Ref<{
|
|
141
122
|
sideWidth: number;
|
|
142
123
|
headerHeight: number;
|
|
@@ -149,16 +130,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
149
130
|
collapsed: boolean;
|
|
150
131
|
}>;
|
|
151
132
|
modeConfig: import("vue").Ref<import("@ditari/store/dist/types/modules/useAppStore").Mode, import("@ditari/store/dist/types/modules/useAppStore").Mode>;
|
|
152
|
-
headerTokenStyle: import("vue").Ref<
|
|
153
|
-
bgColor: string;
|
|
154
|
-
txtColor: string;
|
|
155
|
-
}, {
|
|
156
|
-
bgColor: string;
|
|
157
|
-
txtColor: string;
|
|
158
|
-
} | {
|
|
159
|
-
bgColor: string;
|
|
160
|
-
txtColor: string;
|
|
161
|
-
}>;
|
|
133
|
+
headerTokenStyle: import("vue").Ref<import("@ditari/store/dist/types/modules/useAppStore").HeaderStyle, import("@ditari/store/dist/types/modules/useAppStore").HeaderStyle>;
|
|
162
134
|
headerStyle: import("vue").ComputedRef<string>;
|
|
163
135
|
headerTabStyle: import("vue").ComputedRef<string>;
|
|
164
136
|
collapsedStyle: import("vue").ComputedRef<string>;
|
|
@@ -172,39 +144,79 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
172
144
|
readonly MenuFoldOutlined: import("@ant-design/icons-vue/lib/icons/MenuFoldOutlined").MenuFoldOutlinedIconType;
|
|
173
145
|
readonly MenuUnfoldOutlined: import("@ant-design/icons-vue/lib/icons/MenuUnfoldOutlined").MenuUnfoldOutlinedIconType;
|
|
174
146
|
Tab: import("vue").DefineComponent<{}, {
|
|
175
|
-
tabsNavStyle: import("vue").ComputedRef<string>;
|
|
176
|
-
tabHoverBgStyle: import("vue").ComputedRef<string>;
|
|
177
|
-
closeBtnStyle: import("vue").ComputedRef<string>;
|
|
178
|
-
activeKey: import("vue").Ref<string, string>;
|
|
179
|
-
list: import("vue").Ref<import("@ditari/store").NavTabsState[], import("@ditari/store").NavTabsState[]>;
|
|
180
|
-
closeBtnStatus: (item: import("@ditari/store").NavTabsState) => boolean;
|
|
181
|
-
onChange: (key: string) => void;
|
|
182
|
-
onClose: ($event: Event, key: string | undefined) => void;
|
|
183
|
-
enableTabContextMenu: boolean;
|
|
184
|
-
onContextMenuClick: ({ key }: {
|
|
185
|
-
key: string;
|
|
186
|
-
}, item: any) => void;
|
|
187
147
|
useStyle: () => {
|
|
188
148
|
tabsNavStyle: import("vue").ComputedRef<string>;
|
|
189
149
|
tabHoverBgStyle: import("vue").ComputedRef<string>;
|
|
190
150
|
closeBtnStyle: import("vue").ComputedRef<string>;
|
|
151
|
+
dynamicVars: import("vue").ComputedRef<{
|
|
152
|
+
"--active-tab-color": string | undefined;
|
|
153
|
+
"--splitColor": string | undefined;
|
|
154
|
+
"--active-text-color": string | undefined;
|
|
155
|
+
"--active-shadow-color": string | undefined;
|
|
156
|
+
"--tabs-text-color": string | undefined;
|
|
157
|
+
}>;
|
|
191
158
|
};
|
|
192
|
-
|
|
159
|
+
useTabAndMenu: () => {
|
|
193
160
|
activeKey: import("vue").Ref<string, string>;
|
|
194
|
-
list: import("vue").
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
161
|
+
list: import("vue").ComputedRef<{
|
|
162
|
+
closeBtnVisible: boolean;
|
|
163
|
+
menus: {
|
|
164
|
+
key: string;
|
|
165
|
+
title: string;
|
|
166
|
+
icon: import("@ant-design/icons-vue/lib/icons/ReloadOutlined").ReloadOutlinedIconType;
|
|
167
|
+
disabled: boolean;
|
|
168
|
+
}[];
|
|
169
|
+
path?: string;
|
|
170
|
+
fullPath?: string;
|
|
171
|
+
query?: import("vue-router").LocationQuery;
|
|
172
|
+
params?: import("vue-router").RouteParams;
|
|
173
|
+
meta?: import("vue-router").RouteMeta;
|
|
174
|
+
name?: string;
|
|
175
|
+
openTime?: number | undefined;
|
|
176
|
+
}[]>;
|
|
200
177
|
enableTabContextMenu: boolean;
|
|
178
|
+
onChange: (key: string | number) => void;
|
|
179
|
+
onClose: ($event: Event, key: string | undefined) => void;
|
|
201
180
|
onContextMenuClick: ({ key }: {
|
|
202
|
-
key: string;
|
|
181
|
+
key: string | number;
|
|
203
182
|
}, item: any) => void;
|
|
204
183
|
};
|
|
184
|
+
tabsNavStyle: import("vue").ComputedRef<string>;
|
|
185
|
+
tabHoverBgStyle: import("vue").ComputedRef<string>;
|
|
186
|
+
closeBtnStyle: import("vue").ComputedRef<string>;
|
|
187
|
+
dynamicVars: import("vue").ComputedRef<{
|
|
188
|
+
"--active-tab-color": string | undefined;
|
|
189
|
+
"--splitColor": string | undefined;
|
|
190
|
+
"--active-text-color": string | undefined;
|
|
191
|
+
"--active-shadow-color": string | undefined;
|
|
192
|
+
"--tabs-text-color": string | undefined;
|
|
193
|
+
}>;
|
|
194
|
+
activeKey: import("vue").Ref<string, string>;
|
|
195
|
+
list: import("vue").ComputedRef<{
|
|
196
|
+
closeBtnVisible: boolean;
|
|
197
|
+
menus: {
|
|
198
|
+
key: string;
|
|
199
|
+
title: string;
|
|
200
|
+
icon: import("@ant-design/icons-vue/lib/icons/ReloadOutlined").ReloadOutlinedIconType;
|
|
201
|
+
disabled: boolean;
|
|
202
|
+
}[];
|
|
203
|
+
path?: string;
|
|
204
|
+
fullPath?: string;
|
|
205
|
+
query?: import("vue-router").LocationQuery;
|
|
206
|
+
params?: import("vue-router").RouteParams;
|
|
207
|
+
meta?: import("vue-router").RouteMeta;
|
|
208
|
+
name?: string;
|
|
209
|
+
openTime?: number | undefined;
|
|
210
|
+
}[]>;
|
|
211
|
+
enableTabContextMenu: boolean;
|
|
212
|
+
onChange: (key: string | number) => void;
|
|
213
|
+
onClose: ($event: Event, key: string | undefined) => void;
|
|
214
|
+
onContextMenuClick: ({ key }: {
|
|
215
|
+
key: string | number;
|
|
216
|
+
}, item: any) => void;
|
|
205
217
|
readonly Search: import("vue").DefineComponent<{}, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
206
218
|
readonly CloseOutlined: import("@ant-design/icons-vue/lib/icons/CloseOutlined").CloseOutlinedIconType;
|
|
207
|
-
readonly
|
|
219
|
+
readonly cx: (...classNames: import("@emotion/css/dist/declarations/src/create-instance").ClassNamesArg[]) => string;
|
|
208
220
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
209
221
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
210
222
|
RouterContent: import("vue").DefineComponent<{}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/Layout.vue.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"Layout.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/Layout.vue.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAgI6B,KAAK;;yBAlEJ;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;;;;;;;6BAA1B;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE;;;;;;;;;4BAkE3B,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDA7Hd,oDAEb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBP,wBA4HE"}
|
|
@@ -1,24 +1,6 @@
|
|
|
1
1
|
import { type ComputedRef } from "vue";
|
|
2
2
|
declare const _default: import("vue").DefineComponent<{}, {
|
|
3
|
-
|
|
4
|
-
appStore: import("pinia").Store<"_STORE_APP_ID", import("@ditari/store").App, {}, {}> | null;
|
|
5
|
-
defaultLayout: {
|
|
6
|
-
sideWidth: number;
|
|
7
|
-
headerHeight: number;
|
|
8
|
-
collapsedWidth: number;
|
|
9
|
-
collapsed: boolean;
|
|
10
|
-
};
|
|
11
|
-
defaultModeConfig: {
|
|
12
|
-
mode: string;
|
|
13
|
-
list: {
|
|
14
|
-
value: string;
|
|
15
|
-
label: string;
|
|
16
|
-
}[];
|
|
17
|
-
};
|
|
18
|
-
defaultHeaderTokenStyle: {
|
|
19
|
-
bgColor: string;
|
|
20
|
-
txtColor: string;
|
|
21
|
-
};
|
|
3
|
+
appStore: import("pinia").Store<"_STORE_APP_ID", import("@ditari/store").App, {}, {}>;
|
|
22
4
|
layout: import("vue").Ref<{
|
|
23
5
|
sideWidth: number;
|
|
24
6
|
headerHeight: number;
|
|
@@ -31,16 +13,7 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
31
13
|
collapsed: boolean;
|
|
32
14
|
}>;
|
|
33
15
|
modeConfig: import("vue").Ref<import("@ditari/store/dist/types/modules/useAppStore").Mode, import("@ditari/store/dist/types/modules/useAppStore").Mode>;
|
|
34
|
-
headerTokenStyle: import("vue").Ref<
|
|
35
|
-
bgColor: string;
|
|
36
|
-
txtColor: string;
|
|
37
|
-
}, {
|
|
38
|
-
bgColor: string;
|
|
39
|
-
txtColor: string;
|
|
40
|
-
} | {
|
|
41
|
-
bgColor: string;
|
|
42
|
-
txtColor: string;
|
|
43
|
-
}>;
|
|
16
|
+
headerTokenStyle: import("vue").Ref<import("@ditari/store/dist/types/modules/useAppStore").HeaderStyle, import("@ditari/store/dist/types/modules/useAppStore").HeaderStyle>;
|
|
44
17
|
headerStyle: ComputedRef<string>;
|
|
45
18
|
headerTabStyle: ComputedRef<string>;
|
|
46
19
|
collapsedStyle: ComputedRef<string>;
|
|
@@ -54,39 +27,79 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
54
27
|
readonly MenuFoldOutlined: import("@ant-design/icons-vue/lib/icons/MenuFoldOutlined").MenuFoldOutlinedIconType;
|
|
55
28
|
readonly MenuUnfoldOutlined: import("@ant-design/icons-vue/lib/icons/MenuUnfoldOutlined").MenuUnfoldOutlinedIconType;
|
|
56
29
|
Tab: import("vue").DefineComponent<{}, {
|
|
57
|
-
tabsNavStyle: ComputedRef<string>;
|
|
58
|
-
tabHoverBgStyle: ComputedRef<string>;
|
|
59
|
-
closeBtnStyle: ComputedRef<string>;
|
|
60
|
-
activeKey: import("vue").Ref<string, string>;
|
|
61
|
-
list: import("vue").Ref<import("@ditari/store").NavTabsState[], import("@ditari/store").NavTabsState[]>;
|
|
62
|
-
closeBtnStatus: (item: import("@ditari/store").NavTabsState) => boolean;
|
|
63
|
-
onChange: (key: string) => void;
|
|
64
|
-
onClose: ($event: Event, key: string | undefined) => void;
|
|
65
|
-
enableTabContextMenu: boolean;
|
|
66
|
-
onContextMenuClick: ({ key }: {
|
|
67
|
-
key: string;
|
|
68
|
-
}, item: any) => void;
|
|
69
30
|
useStyle: () => {
|
|
70
31
|
tabsNavStyle: ComputedRef<string>;
|
|
71
32
|
tabHoverBgStyle: ComputedRef<string>;
|
|
72
33
|
closeBtnStyle: ComputedRef<string>;
|
|
34
|
+
dynamicVars: ComputedRef<{
|
|
35
|
+
"--active-tab-color": string | undefined;
|
|
36
|
+
"--splitColor": string | undefined;
|
|
37
|
+
"--active-text-color": string | undefined;
|
|
38
|
+
"--active-shadow-color": string | undefined;
|
|
39
|
+
"--tabs-text-color": string | undefined;
|
|
40
|
+
}>;
|
|
73
41
|
};
|
|
74
|
-
|
|
42
|
+
useTabAndMenu: () => {
|
|
75
43
|
activeKey: import("vue").Ref<string, string>;
|
|
76
|
-
list:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
44
|
+
list: ComputedRef<{
|
|
45
|
+
closeBtnVisible: boolean;
|
|
46
|
+
menus: {
|
|
47
|
+
key: string;
|
|
48
|
+
title: string;
|
|
49
|
+
icon: import("@ant-design/icons-vue/lib/icons/ReloadOutlined").ReloadOutlinedIconType;
|
|
50
|
+
disabled: boolean;
|
|
51
|
+
}[];
|
|
52
|
+
path?: string;
|
|
53
|
+
fullPath?: string;
|
|
54
|
+
query?: import("vue-router").LocationQuery;
|
|
55
|
+
params?: import("vue-router").RouteParams;
|
|
56
|
+
meta?: import("vue-router").RouteMeta;
|
|
57
|
+
name?: string;
|
|
58
|
+
openTime?: number | undefined;
|
|
59
|
+
}[]>;
|
|
82
60
|
enableTabContextMenu: boolean;
|
|
61
|
+
onChange: (key: string | number) => void;
|
|
62
|
+
onClose: ($event: Event, key: string | undefined) => void;
|
|
83
63
|
onContextMenuClick: ({ key }: {
|
|
84
|
-
key: string;
|
|
64
|
+
key: string | number;
|
|
85
65
|
}, item: any) => void;
|
|
86
66
|
};
|
|
67
|
+
tabsNavStyle: ComputedRef<string>;
|
|
68
|
+
tabHoverBgStyle: ComputedRef<string>;
|
|
69
|
+
closeBtnStyle: ComputedRef<string>;
|
|
70
|
+
dynamicVars: ComputedRef<{
|
|
71
|
+
"--active-tab-color": string | undefined;
|
|
72
|
+
"--splitColor": string | undefined;
|
|
73
|
+
"--active-text-color": string | undefined;
|
|
74
|
+
"--active-shadow-color": string | undefined;
|
|
75
|
+
"--tabs-text-color": string | undefined;
|
|
76
|
+
}>;
|
|
77
|
+
activeKey: import("vue").Ref<string, string>;
|
|
78
|
+
list: ComputedRef<{
|
|
79
|
+
closeBtnVisible: boolean;
|
|
80
|
+
menus: {
|
|
81
|
+
key: string;
|
|
82
|
+
title: string;
|
|
83
|
+
icon: import("@ant-design/icons-vue/lib/icons/ReloadOutlined").ReloadOutlinedIconType;
|
|
84
|
+
disabled: boolean;
|
|
85
|
+
}[];
|
|
86
|
+
path?: string;
|
|
87
|
+
fullPath?: string;
|
|
88
|
+
query?: import("vue-router").LocationQuery;
|
|
89
|
+
params?: import("vue-router").RouteParams;
|
|
90
|
+
meta?: import("vue-router").RouteMeta;
|
|
91
|
+
name?: string;
|
|
92
|
+
openTime?: number | undefined;
|
|
93
|
+
}[]>;
|
|
94
|
+
enableTabContextMenu: boolean;
|
|
95
|
+
onChange: (key: string | number) => void;
|
|
96
|
+
onClose: ($event: Event, key: string | undefined) => void;
|
|
97
|
+
onContextMenuClick: ({ key }: {
|
|
98
|
+
key: string | number;
|
|
99
|
+
}, item: any) => void;
|
|
87
100
|
readonly Search: import("vue").DefineComponent<{}, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
88
101
|
readonly CloseOutlined: import("@ant-design/icons-vue/lib/icons/CloseOutlined").CloseOutlinedIconType;
|
|
89
|
-
readonly
|
|
102
|
+
readonly cx: (...classNames: import("@emotion/css/dist/declarations/src/create-instance").ClassNamesArg[]) => string;
|
|
90
103
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
91
104
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
92
105
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeaderLayout.vue.d.ts","sourceRoot":"","sources":["../../../../../../src/components/layout/components/layout/HeaderLayout.vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"HeaderLayout.vue.d.ts","sourceRoot":"","sources":["../../../../../../src/components/layout/components/layout/HeaderLayout.vue.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;oBAgC5B;QACnB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CArC0C,oDAC7B;;;AAed,wBAsFE"}
|