ivue-material-plus
Version:
A high quality UI components Library with Vue.js
1 lines • 11.7 kB
Source Map (JSON)
{"version":3,"file":"defaults.mjs","sources":["../../../../../../src/components/ivue-table/table-column/defaults.ts"],"sourcesContent":["import type { VNode, ComponentInternalInstance, Ref, PropType } from 'vue';\r\nimport type { Table, TableRefs } from '../table/defaults';\r\n\r\nimport { oneOf } from '../../../utils/assist';\r\n\r\n// 插槽内容 slots\r\ntype SlotsContent = { column: TableColumnCtx; $index: number };\r\n\r\ntype FilterMethods = (value, row: any, column: TableColumnCtx) => void;\r\n\r\n// 数据过滤的选项\r\n// 数组格式,数组中的元素需要有 text 和 value 属性。 数组中的每个元素都需要有 text 和 value 属性。\r\n// array[{ text, value }]\r\ntype Filters = {\r\n text: string;\r\n value: string;\r\n}[];\r\n\r\n// 列参数\r\ninterface TableColumnCtx {\r\n id: string;\r\n prop: string;\r\n label: string;\r\n width: string | number;\r\n minWidth: string | number;\r\n children?: TableColumnCtx[];\r\n isSubColumn: boolean;\r\n type: string;\r\n sortable: boolean | string;\r\n property: string;\r\n align: string;\r\n headerAlign: string;\r\n showOverflowTooltip: boolean;\r\n filters: Filters;\r\n filterMethod: FilterMethods;\r\n filterPlacement: string;\r\n filterOpened?: boolean;\r\n index: number | ((index: number) => number);\r\n rawColumnKey: string;\r\n renderHeader: (data: SlotsContent) => VNode;\r\n renderCell: (data: any) => void;\r\n formatter: (\r\n row: Record<string, any>,\r\n column: TableColumnCtx,\r\n cellValue,\r\n index: number\r\n ) => VNode | string;\r\n columnWidth: number;\r\n className: string;\r\n fixed: boolean | string;\r\n getColumnIndex: () => number;\r\n currentIndex: number;\r\n level: number;\r\n rowSpan: number;\r\n colSpan: number;\r\n order: string | null;\r\n labelClassName: string;\r\n columns: TableColumnCtx[];\r\n resizable: boolean;\r\n selectable: (row: any, index: number | string) => boolean;\r\n reserveSelection: boolean;\r\n sortOrders: ('ascending' | 'descending' | null)[];\r\n sortBy: string | ((row: any, index: number) => string) | string[];\r\n sortMethod: (a: any, b: any) => number;\r\n columnKey: string;\r\n filterable: boolean | FilterMethods | Filters;\r\n filterMultiple: boolean;\r\n filteredValue: string[];\r\n}\r\n\r\n// 列节点内容\r\ninterface TableColumn extends ComponentInternalInstance {\r\n vnode: {\r\n vParent: TableColumn | Table;\r\n } & VNode;\r\n vParent: TableColumn | Table;\r\n columnId: string;\r\n columnConfig: Ref<Partial<TableColumnCtx>>;\r\n}\r\n\r\ninterface ColumnParent {\r\n columnConfig?: Ref<Partial<TableColumnCtx>>;\r\n tableId?: string;\r\n vnode?: {\r\n vParent?: TableColumn | Table;\r\n } & VNode;\r\n parent?: Table;\r\n refs?: TableRefs;\r\n columnId?: string;\r\n}\r\n\r\nexport type { TableColumnCtx, TableColumn, ColumnParent };\r\n\r\nexport default {\r\n /**\r\n * 对应列的类型\r\n *\r\n * selection / index / expand\r\n *\r\n * @type {String}\r\n */\r\n type: {\r\n type: String,\r\n validator(value: string | boolean) {\r\n return oneOf(value, ['selection', 'index', 'expand', 'default']);\r\n },\r\n default: 'default',\r\n },\r\n /**\r\n * 字段名称 对应列内容的字段名\r\n *\r\n * @type {String}\r\n */\r\n prop: {\r\n type: String,\r\n },\r\n /**\r\n * column 的 key\r\n *\r\n * @type {String}\r\n */\r\n label: {\r\n type: String,\r\n },\r\n /**\r\n * 对应列的宽度\r\n *\r\n * @type {String | Number}\r\n */\r\n width: {\r\n type: [String, Number],\r\n default: '',\r\n },\r\n /**\r\n * 对应列的最小宽度\r\n *\r\n * @type {String | Number}\r\n */\r\n minWidth: {\r\n type: [String, Number],\r\n default: '',\r\n },\r\n /**\r\n * 对应列是否可以排序\r\n *\r\n * @type {Boolean | String}\r\n */\r\n sortable: {\r\n type: [Boolean, String],\r\n validator(value: string | boolean) {\r\n return oneOf(value, ['custom', false, true]);\r\n },\r\n default: false,\r\n },\r\n /**\r\n * 字段名称 对应列内容的字段名\r\n *\r\n * @type {String}\r\n */\r\n property: {\r\n type: String,\r\n },\r\n /**\r\n * 对齐方式\r\n *\r\n * left / center / right\r\n *\r\n * @type {String}\r\n */\r\n align: {\r\n type: String,\r\n validator(value: string | boolean) {\r\n return oneOf(value, ['left', 'center', 'right']);\r\n },\r\n default: 'left',\r\n },\r\n /**\r\n * 表头对齐方式\r\n *\r\n * left / center / right\r\n *\r\n * @type {String}\r\n */\r\n headerAlign: {\r\n type: String,\r\n validator(value: string | boolean) {\r\n return oneOf(value, ['left', 'center', 'right', '']);\r\n },\r\n default: '',\r\n },\r\n /**\r\n * 当内容过长被隐藏时显示 tooltip\r\n *\r\n * @type {Boolean}\r\n */\r\n showOverflowTooltip: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * 数据过滤的选项\r\n * 数组格式,数组中的元素需要有 text 和 value 属性\r\n * 数组中的每个元素都需要有 text 和 value 属性。\r\n *\r\n * @type {Array}\r\n */\r\n filters: {\r\n type: Array as PropType<TableColumnCtx['filters']>,\r\n },\r\n /**\r\n * 数据过滤使用的方法\r\n * 如果是多选的筛选项\r\n * 对每一条数据会执行多次\r\n * 任意一次返回 true 就会显示。\r\n *\r\n * @type {Function}\r\n */\r\n filterMethod: {\r\n type: Function as PropType<TableColumnCtx['filterMethod']>,\r\n },\r\n /**\r\n * 过滤弹出框的定位\r\n *\r\n * @type {String}\r\n */\r\n filterPlacement: {\r\n type: String,\r\n default: 'bottom-start',\r\n },\r\n /**\r\n * 如果设置了 type=index,可以通过传递 index 属性来自定义索引\r\n *\r\n * @type {Number, Function}\r\n */\r\n index: {\r\n type: [Number, Function] as PropType<TableColumnCtx['index']>,\r\n },\r\n /**\r\n * 列标题 Label 区域渲染使用的 Function\r\n *\r\n * @type {Function}\r\n */\r\n renderHeader: {\r\n type: Function as PropType<TableColumnCtx['renderHeader']>,\r\n },\r\n /**\r\n * 用来格式化内容\r\n *\r\n * @type {Function}\r\n */\r\n formatter: {\r\n type: Function as PropType<TableColumnCtx['formatter']>,\r\n },\r\n /**\r\n * 列的 className\r\n *\r\n * @type {String}\r\n */\r\n className: {\r\n type: String,\r\n },\r\n /**\r\n * 列是否固定在左侧或者右侧。\r\n *\r\n * @type {Boolean | String}\r\n */\r\n fixed: {\r\n type: [Boolean, String],\r\n validator(value: string | boolean) {\r\n return oneOf(value, ['left', 'right', true, false]);\r\n },\r\n },\r\n /**\r\n * 当前列标题的自定义类名\r\n *\r\n * @type {String}\r\n */\r\n labelClassName: {\r\n type: String,\r\n },\r\n /**\r\n * 对应列是否可以通过拖动改变宽度(需要在设置 border 属性为真)\r\n *\r\n * @type {Boolean}\r\n */\r\n resizable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * 仅对 type=selection 的列有效,\r\n * 类型为 Function,\r\n * Function 的返回值用来决定这一行的 CheckBox 是否可以勾选\r\n *\r\n * @type {Function}\r\n */\r\n selectable: {\r\n type: Function as PropType<TableColumnCtx['selectable']>,\r\n },\r\n /**\r\n * 保存数据更新前选中的值\r\n *\r\n * @type {Boolean}\r\n */\r\n reserveSelection: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * 数据在排序时所使用排序策略的轮转顺序\r\n *\r\n * @type {Array}\r\n */\r\n sortOrders: {\r\n type: Array as PropType<TableColumnCtx['sortOrders']>,\r\n default: () => {\r\n return ['ascending', 'descending', null];\r\n },\r\n },\r\n /**\r\n * 没有指定数据按照哪个属性进行排序\r\n *\r\n * @type {String, Function, Array}\r\n */\r\n sortBy: {\r\n type: [String, Function, Array] as PropType<TableColumnCtx['sortBy']>,\r\n },\r\n /**\r\n * 自定义排序方法\r\n *\r\n * @type {Function}\r\n */\r\n sortMethod: {\r\n type: Function as PropType<TableColumnCtx['sortMethod']>,\r\n },\r\n /**\r\n * column 的 key, column 的 key\r\n * 如果需要使用 filter-change 事件\r\n * 则需要此属性标识是哪个 column 的筛选条件\r\n *\r\n * @type {String}\r\n */\r\n columnKey: {\r\n type: String,\r\n },\r\n /**\r\n * 数据过滤的选项是否多选\r\n *\r\n * @type {Boolean}\r\n */\r\n filterMultiple: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n /**\r\n * 选中的数据过滤项\r\n * 如果需要自定义表头过滤的渲染方式\r\n * 可能会需要此属性。\r\n *\r\n * @type {Array}\r\n */\r\n filteredValue: {\r\n type: Array as PropType<TableColumnCtx['filteredValue']>,\r\n },\r\n};\r\n"],"names":[],"mappings":"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"}