{"version":3,"file":"table.type.mjs","names":[],"sources":["../../../../src/components/table/src/table.type.ts"],"sourcesContent":["import type { TableColumnCtx } from \"element-plus\";\nimport type { VNode } from \"vue\";\nimport type { FaLayoutGridBreakpoint, FaLayoutGridItemResponsive } from \"../../layoutGrid\";\nimport type { PagedInput } from \"./page.type\";\nimport type { DefaultRow, FaTableState } from \"./table.state\";\n\n/** FaTable 默认插槽共享的状态与操作。 */\nexport interface FaTableDefaultSlotsResult {\n\tloading: boolean;\n\tsearchParam: PagedInput;\n\tselected: boolean;\n\tselectedList: DefaultRow[];\n\tselectedListIds: (string | number)[];\n\tindeterminateSelectedListIds: (string | number)[];\n\t/** 可能为空 */\n\tsearch?: () => Promise<void>;\n}\n\n/**\n * 获取 FaTable 默认插槽共享数据。\n * @param state - FaTable 内部状态。\n * @returns 可传给业务插槽的选择、搜索和加载状态。\n */\nexport const getTableDefaultSlots = (state: FaTableState): FaTableDefaultSlotsResult => {\n\treturn {\n\t\tloading: state.loading,\n\t\tsearchParam: state.searchParam,\n\t\tselected: state.selected,\n\t\tselectedList: state.selectedList,\n\t\tselectedListIds: state.selectedListIds,\n\t\tindeterminateSelectedListIds: state.indeterminateSelectedListIds,\n\t};\n};\n\n/** FaTable 默认时间搜索支持的快捷日期范围 */\nexport type FaTableDataRange = \"Past1D\" | \"Past3D\" | \"Past1W\" | \"Past1M\" | \"Past3M\" | \"Past6M\" | \"Past1Y\" | \"Past3Y\";\n\n/** FaTable 枚举列的选项配置 */\nexport interface FaTableEnumColumnCtx {\n\t/**\n\t * 选项框显示的文字\n\t */\n\tlabel: string;\n\t/**\n\t * 选项框值\n\t */\n\tvalue: string | number | boolean;\n\t/**\n\t * 显示\n\t */\n\tshow?: boolean;\n\t/**\n\t * 是否禁用此选项\n\t */\n\tdisabled?: boolean;\n\t/**\n\t * 为树形选择是，可以通过 children 属性指定子选项\n\t */\n\tchildren?: FaTableEnumColumnCtx[];\n\t/**\n\t * 提示\n\t */\n\ttips?: string;\n\t/**\n\t * Tag的类型，默认 \"primary\"\n\t */\n\ttype?: \"primary\" | \"success\" | \"info\" | \"warning\" | \"danger\";\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- 枚举项允许携带业务接口定义的附加字段。\n\t[key: string]: any;\n}\n\n/** FaTable 枚举列接受的字典名称、选项集合或选项工厂。 */\nexport type FaTableEnumColumnType = string | FaTableEnumColumnCtx[] | ((context?: { row: DefaultRow }) => FaTableEnumColumnCtx[]);\n\n/** FaTable 搜索项支持的内置组件名或自定义组件名 */\nexport type FaTableSearchColumnEl =\n\t| \"\"\n\t| \"el-input\"\n\t| \"el-input-number\"\n\t| \"el-select\"\n\t| \"el-select-v2\"\n\t| \"el-tree-select\"\n\t| \"el-cascader\"\n\t| \"el-date-picker\"\n\t| \"el-time-picker\"\n\t| \"el-time-select\"\n\t| \"el-switch\"\n\t| \"el-slider\"\n\t| \"slot\"\n\t| (string & Record<never, never>);\n\n/** FaTable 单列搜索项的组件、布局和默认值配置 */\nexport type FaTableSearchColumnCtx = Partial<Record<FaLayoutGridBreakpoint, FaLayoutGridItemResponsive>> & {\n\t/**\n\t * 当前项搜索框的类型\n\t */\n\tel: FaTableSearchColumnEl;\n\t/**\n\t * 搜索项参数，根据 element plus 官方文档来传递，该属性所有值会透传到组件\n\t */\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any -- 搜索组件透传属性由具体组件和业务配置共同定义。\n\tprops?: Record<string, any>;\n\t/**\n\t * 当搜索项 label 不为列 label 属性时，可通过 label 指定\n\t */\n\tlabel?: string;\n\t/**\n\t * 当搜索项 key 不为 prop 属性时，可通过 key 指定\n\t */\n\tkey?: string;\n\t/**\n\t * 搜索项排序（从大到小）\n\t */\n\torder?: number;\n\t/**\n\t * 搜索项所占用的列数，默认为1列\n\t */\n\tspan?: number;\n\t/**\n\t * 搜索字段左侧偏移列数\n\t */\n\toffset?: number;\n\t/**\n\t * 插槽名称\n\t */\n\tslot?: string;\n\t/**\n\t * 搜索项默认值\n\t */\n\tdefaultValue?: unknown;\n};\n\n/**\n * FaTable 内置业务列类型\n * @property default     默认\n * @property image       图片列\n * @property date        日期显示（格式 \"YYYY-MM-DD\"）\n * @property time        时间显示（格式 \"HH:mm:ss\"）\n * @property dateTime    日期时间显示（格式 \"YYYY-MM-DD HH:mm:ss\"）\n * @property d2          数值列，保留 2 位小数，不带千分位\n * @property d4          数值列，保留 4 位小数，不带千分位\n * @property d6          数值列，保留 6 位小数，不带千分位\n * @property gd2         数值列，保留 2 位小数，带千分位\n * @property gd4         数值列，保留 4 位小数，带千分位\n * @property gd6         数值列，保留 6 位小数，带千分位\n * @property timeInfo  时间信息列\n */\nexport type FaTableColumnType = \"default\" | \"image\" | \"date\" | \"time\" | \"dateTime\" | \"d2\" | \"d4\" | \"d6\" | \"gd2\" | \"gd4\" | \"gd6\" | \"timeInfo\";\n\n/** FaTable 日期、时间列支持的格式化模板。 */\nexport type FaTableColumnDateFormat =\n\t| \"YYYY-MM-DD HH:mm:ss\"\n\t| \"YYYY-MM-DD HH:mm\"\n\t| \"YYYY-MM-DD\"\n\t| \"YYYY-MM\"\n\t| \"YYYY\"\n\t| \"MM\"\n\t| \"DD\"\n\t| \"MM-DD\"\n\t| \"HH:mm:ss\"\n\t| \"HH:mm\"\n\t| \"HH\"\n\t| \"mm:ss\"\n\t| \"mm\"\n\t| \"ss\";\n\n/** FaTable 列配置，扩展 Element Plus 列能力和 Fast 业务渲染选项。 */\nexport type FaTableColumnCtx<T extends DefaultRow = DefaultRow> = Partial<\n\tOmit<TableColumnCtx<T>, \"order\" | \"type\" | \"prop\" | \"sortable\" | \"_children\">\n> & {\n\t/**\n\t * 内部的计算属性，一般不做使用\n\t */\n\tmultiOrder?: \"\" | \"ascending\" | \"descending\";\n\t/**\n\t * 列Id\n\t */\n\tcolumnId?: number | string;\n\t/**\n\t * 排序\n\t */\n\torder?: number;\n\t/**\n\t * 排序字段\n\t */\n\tsortableField?: string;\n\t/**\n\t * 禁用排序配置\n\t */\n\tdisabledSortable?: boolean;\n\t/**\n\t * 合并行字段\n\t */\n\tspanProp?: string;\n\t/**\n\t * 纯搜索\n\t */\n\tpureSearch?: boolean;\n\t/**\n\t * 搜索项配置\n\t */\n\tsearch?: FaTableSearchColumnCtx;\n\t/** 上面所有属性，全部非 FaTableColumn props，均为计算属性 */\n\t/**\n\t * 对应列的类型\n\t */\n\ttype?: FaTableColumnType;\n\t/**\n\t * 字段名称\n\t */\n\tprop?: string;\n\t/**\n\t * 是否显示在表格当中，默认 true\n\t */\n\tshow?: boolean;\n\t/**\n\t * 对应列是否可以排序，\n\t * 默认为 'custom' 模式，即远程排序，\n\t * 需要监听 Table 的 sort-change 事件\n\t */\n\tsortable?: boolean;\n\t/**\n\t * 小页面的宽度，如果为空，则继承默认宽度\n\t */\n\tsmallWidth?: string | number;\n\t/**\n\t * 自适应宽度\n\t */\n\tautoWidth?: boolean;\n\t/**\n\t * 插槽名称\n\t */\n\tslot?: string;\n\t/**\n\t * 表格头部插槽名称\n\t */\n\theaderSlot?: string;\n\t/**\n\t * 自定义表头内容渲染（tsx语法）\n\t */\n\theaderRender?: ({ column, $index }: { column: TableColumnCtx<DefaultRow>; $index: number } & FaTableDefaultSlotsResult) => VNode[];\n\t/**\n\t * 自定义单元格内容渲染（tsx语法）\n\t */\n\trender?: ({ row, column, $index }: { row: DefaultRow; column: FaTableColumnCtx; $index: number } & FaTableDefaultSlotsResult) => VNode[];\n\t/**\n\t * 多级表头\n\t */\n\t_children?: FaTableColumnCtx<T>[];\n\t/**\n\t * 复制\n\t */\n\tcopy?: boolean;\n\t/**\n\t * 是否为 Link Button\n\t */\n\tlink?: boolean;\n\t/**\n\t * 点击事件，优先级最高\n\t */\n\tclick?: ({ row, $index }: { row: T; $index?: number } & FaTableDefaultSlotsResult) => void;\n\t/**\n\t * 点击Emits事件回调\n\t */\n\tclickEmit?: string;\n\t/**\n\t * 图片列是否显示为原图，默认 false 显示缩略图\n\t */\n\toriginalImage?: boolean;\n\t/**\n\t * 显示时间格式化字符串，默认 false\n\t */\n\tdateFix?: boolean;\n\t/**\n\t * 显示在页面中的日期格式\n\t */\n\tdateFormat?: FaTableColumnDateFormat;\n\t/**\n\t * 是否是标签展示，默认 false\n\t */\n\ttag?: boolean;\n\t/**\n\t * 枚举类型（渲染值的字典）\n\t */\n\tenum?: FaTableEnumColumnType;\n\t/**\n\t * 数据删除字段，如果为 true 会显示遮罩层\n\t */\n\tdataDeleteField?: string;\n\t/**\n\t * 时间信息字段\n\t */\n\ttimeInfoField?: { userName?: string; time?: string };\n};\n"],"mappings":";;;;;;AAuBA,MAAa,wBAAwB,UAAmD;CACvF,OAAO;EACN,SAAS,MAAM;EACf,aAAa,MAAM;EACnB,UAAU,MAAM;EAChB,cAAc,MAAM;EACpB,iBAAiB,MAAM;EACvB,8BAA8B,MAAM;CACrC;AACD"}