ivue-material-plus
Version:
A high quality UI components Library with Vue.js
1 lines • 18.3 kB
Source Map (JSON)
{"version":3,"file":"defaults.mjs","sources":["../../../../../../src/components/ivue-table/table/defaults.ts"],"sourcesContent":["import type {\r\n ComponentInternalInstance,\r\n VNode,\r\n Ref,\r\n PropType,\r\n CSSProperties,\r\n InjectionKey,\r\n} from 'vue';\r\nimport { oneOf } from '../../../utils/assist';\r\n\r\nimport type { TableColumnCtx } from '../table-column/defaults';\r\nimport type { Store } from '../store/index';\r\nimport type TableLayout from '../table-layout';\r\n\r\n// 列表行hover状态\r\ntype HoverState = NonNullable<{\r\n cell: HTMLElement;\r\n column: TableColumnCtx;\r\n row: TableColumnCtx;\r\n}>;\r\n\r\n// 渲染可展开的按钮的内容\r\ntype RenderExpanded = ({ row, $index, store, expanded }: Column) => VNode;\r\n\r\n// 列表行\r\ntype Column = {\r\n row: TableColumnCtx;\r\n $index: number;\r\n store: Store;\r\n expanded: boolean;\r\n};\r\n\r\n// 列表行样式\r\ntype ColumnCls =\r\n | string\r\n | ((data: { row: TableColumnCtx; rowIndex: number }) => string);\r\n\r\ntype ColumnStyle =\r\n | CSSProperties\r\n | ((data: { row: TableColumnCtx; rowIndex: number }) => CSSProperties);\r\n\r\n// 自定义的合计计算方法\r\ntype SummaryMethod = (data: {\r\n columns: TableColumnCtx[];\r\n data: any[];\r\n}) => string[];\r\n\r\n// 设置表格单元、行和列的布局方式\r\ntype Layout = 'fixed' | 'auto';\r\n\r\ntype CellStyle =\r\n | CSSProperties\r\n | ((data: {\r\n row: TableColumnCtx;\r\n rowIndex: number;\r\n column: TableColumnCtx;\r\n columnIndex: number;\r\n }) => CSSProperties);\r\n\r\ntype CellCls =\r\n | string\r\n | ((data: {\r\n row: TableColumnCtx;\r\n rowIndex: number;\r\n column: TableColumnCtx;\r\n columnIndex: number;\r\n }) => string);\r\n\r\n// refs\r\ninterface TableRefs {\r\n tableWrapper?: HTMLElement;\r\n headerWrapper?: HTMLElement;\r\n footerWrapper?: HTMLElement;\r\n fixedBodyWrapper?: HTMLElement;\r\n rightFixedBodyWrapper?: HTMLElement;\r\n bodyWrapper?: HTMLElement;\r\n [key: string]: any;\r\n}\r\n\r\n// 树节点\r\ninterface TreeNode {\r\n expanded?: boolean;\r\n loading?: boolean;\r\n noLazyChildren?: boolean;\r\n indent?: number;\r\n level?: number;\r\n display?: boolean;\r\n}\r\n\r\n// 渲染行数据\r\ninterface RenderRowData {\r\n treeNode?: TreeNode;\r\n store: Store;\r\n _self: Table;\r\n expanded: boolean;\r\n column: TableColumnCtx;\r\n row: TableColumnCtx;\r\n $index: number;\r\n cellIndex: number;\r\n}\r\n\r\n// 表格状态\r\ninterface TableState {\r\n isGroup: Ref<boolean>;\r\n resizeState: Ref<{\r\n width: null | number;\r\n height: null | number;\r\n }>;\r\n updateLayout: () => void;\r\n debouncedUpdateLayout: () => void;\r\n}\r\n\r\n// 过滤\r\ninterface Filter {\r\n column: TableColumnCtx;\r\n values: string[];\r\n silent: boolean;\r\n}\r\n\r\ninterface Sort {\r\n prop: string;\r\n order: 'ascending' | 'descending';\r\n init?: boolean;\r\n silent?: boolean;\r\n}\r\n\r\n// 表格 data\r\ninterface Table extends ComponentInternalInstance {\r\n // onMounted 是否渲染完成\r\n $ready?: boolean;\r\n // 列表行hover状态\r\n hoverState?: HoverState | null;\r\n // 渲染可展开的按钮的内容\r\n renderExpanded?: RenderExpanded;\r\n // store\r\n store?: Store;\r\n // layout\r\n layout?: TableLayout;\r\n // refs\r\n refs: TableRefs;\r\n // id\r\n tableId?: string;\r\n // 行id\r\n columnId?: string;\r\n // 表格状态\r\n state?: TableState;\r\n}\r\n\r\n// 表格 props\r\ninterface TableProps {\r\n data: any[];\r\n // 列的宽度是否自撑开\r\n fit?: boolean;\r\n // 是否带有纵向边框\r\n border: boolean;\r\n // Table 的最大高度。 合法的值为数字或者单位为 px 的高度。\r\n maxHeight: string | number;\r\n // 是否显示表头\r\n showHeader?: boolean;\r\n // 渲染嵌套数据的配置选项\r\n // { hasChildren: 'hasChildren', children: 'children' }\r\n treeProps?: {\r\n hasChildren?: string;\r\n children?: string;\r\n };\r\n // 行数据的 Key\r\n rowKey?: string | ((row: TableColumnCtx) => string);\r\n // 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效\r\n defaultExpandAll?: boolean;\r\n // 在多选表格中,当仅有部分行被选中时,点击表头的多选框时的行为。\r\n // 若为 true,则选中所有行;若为 false,则取消选择所有行\r\n selectOnIndeterminate?: boolean;\r\n // 是否懒加载子节点数据\r\n lazy?: boolean;\r\n // 是否在表尾显示合计行\r\n showSummary?: boolean;\r\n // 设置表格单元、行和列的布局方式\r\n tableLayout: Layout;\r\n // Table 的高度 默认为自动高度\r\n height?: string | number;\r\n // 默认的排序列的 prop 和顺序。\r\n // 它的 prop 属性指定默认的排序的列,order 指定默认排序的顺序\r\n defaultSort?: Sort;\r\n // 内容\r\n context?: Table;\r\n // 是否为斑马纹 table\r\n stripe?: boolean;\r\n // 行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className。\r\n rowClassName?: ColumnCls;\r\n // 行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style\r\n rowStyle?: ColumnStyle;\r\n // 是否要高亮当前行\r\n highlightCurrentRow?: boolean;\r\n // 以通过该属性设置 Table 目前的展开行\r\n expandRowKeys?: any[];\r\n // 加载子节点数据的函数\r\n load?: (\r\n row: TableColumnCtx,\r\n treeNode: TreeNode,\r\n resolve: (data: any[]) => void\r\n ) => void;\r\n // 合计行第一列的文本\r\n sumText?: string;\r\n // 自定义的合计计算方法\r\n summaryMethod?: SummaryMethod;\r\n // 合并行或列的计算方法\r\n spanMethod?: (data: {\r\n row: TableColumnCtx;\r\n rowIndex: number;\r\n column: TableColumnCtx;\r\n columnIndex: number;\r\n }) =>\r\n | number[]\r\n | {\r\n rowspan: number;\r\n colspan: number;\r\n }\r\n | undefined;\r\n // 表头单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有表头单元格设置一样的 Style\r\n headerCellStyle?: CellStyle;\r\n // 表头单元格的 className 的回调方法,也可以使用字符串为所有表头单元格设置一个固定的 className\r\n headerCellClassName?: CellCls;\r\n // 表头行的 style 的回调方法,也可以使用一个固定的 Object 为所有表头行设置一样的 Style\r\n headerRowStyle?: ColumnStyle;\r\n // 表头行的 className 的回调方法\r\n headerRowClassName?: ColumnCls;\r\n // 单元格的 style 的回调方法\r\n cellStyle?: CellStyle;\r\n // 单元格的 className 的回调方法\r\n cellClassName?: CellCls;\r\n // tooltip 主题\r\n tooltipTheme?: 'dark' | 'light';\r\n // tooltip点击是否阻止当前事件在捕获和冒泡阶段的进一步传播\r\n tooltipStop?: boolean;\r\n}\r\n\r\n// 行样式\r\ntype rowClass =\r\n | string\r\n | ((data: { row: TableColumnCtx; rowIndex: number }) => string);\r\n\r\n// 行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style。\r\ntype rowStyle =\r\n | CSSProperties\r\n | ((data: { row: TableColumnCtx; rowIndex: number }) => CSSProperties);\r\n\r\nexport const TableContextKey: InjectionKey<Table> = Symbol('ivue-table');\r\n\r\nexport default {\r\n /**\r\n * 显示的数据\r\n *\r\n * @type {Array}\r\n */\r\n data: {\r\n type: Array as PropType<TableColumnCtx[]>,\r\n default: () => {\r\n return [];\r\n },\r\n },\r\n /**\r\n * 列的宽度是否自撑开\r\n *\r\n * @type {Boolean}\r\n */\r\n fit: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * 是否带有纵向边框\r\n *\r\n * @type {Boolean}\r\n */\r\n border: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * Table 的高度, 默认为自动高度。\r\n * 如果 height 为 number 类型,单位 px;\r\n * 如果 height 为 string 类型,\r\n * 则这个高度会设置为 Table 的 style.height 的值,\r\n * Table 的高度会受控于外部样式。\r\n *\r\n * @type {String | Number}\r\n */\r\n height: {\r\n type: [String, Number],\r\n default: null,\r\n },\r\n /**\r\n * Table 的最大高度。 合法的值为数字或者单位为 px 的高度。\r\n *\r\n * @type {String, Number}\r\n */\r\n maxHeight: {\r\n type: [String, Number],\r\n default: null,\r\n },\r\n /**\r\n * 是否显示表头\r\n *\r\n * @type {Boolean}\r\n */\r\n showHeader: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * 渲染嵌套数据的配置选项\r\n *\r\n * { hasChildren: 'hasChildren', children: 'children' }\r\n *\r\n * @type {Object}\r\n */\r\n treeProps: {\r\n type: Object as PropType<TableProps['treeProps']>,\r\n default: () => {\r\n return {\r\n hasChildren: 'hasChildren',\r\n children: 'children',\r\n };\r\n },\r\n },\r\n /**\r\n * 行数据的 Key\r\n *\r\n * @type {String, Function}\r\n */\r\n rowKey: {\r\n type: [String, Function] as PropType<TableProps['rowKey']>,\r\n },\r\n /**\r\n * 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效\r\n *\r\n * @type {Boolean}\r\n */\r\n defaultExpandAll: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * 在多选表格中,当仅有部分行被选中时,点击表头的多选框时的行为。\r\n * 若为 true,则选中所有行;若为 false,则取消选择所有行\r\n *\r\n * @type {Boolean}\r\n */\r\n selectOnIndeterminate: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * indent\t展示树形数据时,树节点的缩进\r\n *\r\n * @type {Number}\r\n */\r\n indent: {\r\n type: Number,\r\n default: 16,\r\n },\r\n /**\r\n * 是否懒加载子节点数据\r\n *\r\n * @type {Boolean}\r\n */\r\n lazy: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * 是否在表尾显示合计行\r\n *\r\n * @type {Boolean}\r\n */\r\n showSummary: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * 设置表格单元、行和列的布局方式\r\n *\r\n * fixed / auto\r\n *\r\n * @type {String}\r\n */\r\n tableLayout: {\r\n type: String as PropType<Layout>,\r\n validator(value: string) {\r\n return oneOf(value, ['fixed', 'auto']);\r\n },\r\n default: 'fixed',\r\n },\r\n /**\r\n * 默认的排序列的 prop 和顺序。\r\n * 它的 prop 属性指定默认的排序的列,order 指定默认排序的顺序\r\n *\r\n * @type {object}\r\n */\r\n defaultSort: {\r\n type: Object as PropType<TableProps['defaultSort']>,\r\n },\r\n /**\r\n * 提示\r\n *\r\n * @type {String}\r\n */\r\n placeholder: {\r\n type: String,\r\n default: 'No Data',\r\n },\r\n /**\r\n * 滚动条总是显示\r\n *\r\n * @type {Boolean}\r\n */\r\n scrollbarAlways: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * 是否为斑马纹 table\r\n *\r\n * @type {Boolean}\r\n */\r\n stripe: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * 行的 className 的回调方法,也可以使用字符串为所有行设置一个固定的 className。\r\n *\r\n * @type {String | Function}\r\n */\r\n rowClassName: {\r\n type: [String, Function] as PropType<TableProps['rowClassName']>,\r\n },\r\n /**\r\n * 行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style。\r\n *\r\n * @type {Object, Function}\r\n */\r\n rowStyle: {\r\n type: [Object, Function] as PropType<TableProps['rowStyle']>,\r\n },\r\n /**\r\n * 是否要高亮当前行\r\n *\r\n * @type {Boolean}\r\n */\r\n highlightCurrentRow: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * 可以通过该属性设置 Table 目前的展开行\r\n *\r\n * @type {Array}\r\n */\r\n expandRowKeys: {\r\n type: Array as PropType<TableProps['expandRowKeys']>,\r\n },\r\n /**\r\n * 加载子节点数据的函数\r\n *\r\n * @type {Function}\r\n */\r\n load: {\r\n type: Function as PropType<TableProps['load']>,\r\n },\r\n /**\r\n * 合计行第一列的文本\r\n *\r\n * @type {String}\r\n */\r\n sumText: {\r\n type: String,\r\n default: '合计',\r\n },\r\n /**\r\n * 自定义的合计计算方法\r\n *\r\n * @type {Function}\r\n */\r\n summaryMethod: {\r\n type: Function as PropType<TableProps['summaryMethod']>,\r\n },\r\n /**\r\n * 合并行或列的计算方法\r\n *\r\n * @type {Function}\r\n */\r\n spanMethod: {\r\n type: Function as PropType<TableProps['spanMethod']>,\r\n },\r\n /**\r\n * 表头单元格的 style 的回调方法,\r\n * 也可以使用一个固定的 Object 为所有表头单元格设置一样的 Style\r\n *\r\n * @type {Object, Function}\r\n */\r\n headerCellStyle: {\r\n type: [Object, Function] as PropType<TableProps['headerCellStyle']>,\r\n },\r\n /**\r\n * 表头单元格的 className 的回调方法,\r\n * 也可以使用字符串为所有表头单元格设置一个固定的 className\r\n *\r\n * @type {String, Function}\r\n */\r\n headerCellClassName: {\r\n type: [String, Function] as PropType<TableProps['headerCellClassName']>,\r\n },\r\n /**\r\n * 表头行的 style 的回调方法,\r\n * 也可以使用一个固定的 Object 为所有表头行设置一样的 Style\r\n *\r\n * @type {Object, Function}\r\n */\r\n headerRowStyle: {\r\n type: [Object, Function] as PropType<TableProps['headerRowStyle']>,\r\n },\r\n /**\r\n * 表头行的 className 的回调方法\r\n *\r\n * @type {String, Function}\r\n */\r\n headerRowClassName: {\r\n type: [String, Function] as PropType<TableProps['headerRowClassName']>,\r\n },\r\n /**\r\n * 单元格的 style 的回调方法\r\n *\r\n * @type {Object, Function}\r\n */\r\n cellStyle: {\r\n type: [Object, Function] as PropType<TableProps['cellStyle']>,\r\n },\r\n /**\r\n * 单元格的 className 的回调方法\r\n *\r\n * @type {String, Function}\r\n */\r\n cellClassName: {\r\n type: [String, Function] as PropType<TableProps['cellClassName']>,\r\n },\r\n /**\r\n * tooltip主题\r\n *\r\n * @type {String}\r\n */\r\n tooltipTheme: {\r\n type: String as PropType<TableProps['tooltipTheme']>,\r\n validator(value: string) {\r\n return oneOf(value, ['dark', 'light']);\r\n },\r\n default: 'dark',\r\n },\r\n /**\r\n * tooltip点击是否阻止当前事件在捕获和冒泡阶段的进一步传播\r\n *\r\n * @type {String}\r\n */\r\n tooltipStop: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n};\r\n\r\nexport type {\r\n Table,\r\n TableProps,\r\n TreeNode,\r\n RenderRowData,\r\n Sort,\r\n rowClass,\r\n rowStyle,\r\n ColumnCls,\r\n Filter,\r\n SummaryMethod,\r\n TableRefs,\r\n RenderExpanded,\r\n};\r\n"],"names":[],"mappings":"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"}