UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

540 lines (539 loc) 17.3 kB
/** * Copyright (c) 2020 - present, Inspur Genersoft Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { ExtractPropTypes, PropType, VNode } from 'vue'; import { EditorConfig } from '../../dynamic-form'; import { HeaderCell, VisualData, VisualDataCell } from '../../data-view'; import { DataGridColumnCommand, SortType } from './designer/data-grid-column.props'; export interface DataGridColumn { dataType: string; draggable?: boolean; editor?: EditorConfig; id?: string; parentId?: any; field: string; title: string; width?: number | string; /** 记录原始定义宽度 */ actualWidth?: number; /** 标题对齐方式 */ halign?: 'left' | 'center' | 'right'; /** 文本对齐方式 */ align?: 'left' | 'center' | 'right'; /** 垂直对齐方式 */ valign?: 'top' | 'middle' | 'bottom'; left?: number; /** 是否固定 */ fixed?: 'left' | 'right'; /** 是否显示 */ visible?: boolean | any; /** 只读 */ readonly?: boolean | any; /** 鼠标移动至单元格后,显示悬浮消息 */ showTips?: boolean; /** 单元格提示模式: * allways: 鼠标滑过即显示 * auto: 单元格宽度不够时才会显示 */ tipMode?: 'allways' | 'auto'; /** True to allow the column can be sorted. */ sortable?: boolean; sort?: SortType; sortOrder?: number; sorter?: (preValue: any, postValue: any, sortType: SortType) => number; /** True to allow the column can be resized. */ resizable?: boolean; rowspan?: number; /** 列合并 */ colspan?: number; /** 列合并原始值 */ origianlColSpan?: number; index?: number; /** 允许分组,默认为 true */ allowGrouping?: boolean; /** 是否多语字段 */ /** 操作列命令 */ commands?: DataGridColumnCommand[]; /** True to allow the column can be filtered. */ filterable?: boolean; filter?: string; showSetting?: boolean; showEllipsis?: boolean; /** 列模板 */ columnTemplate?: (cell: VisualDataCell, visualDataRow: VisualData) => VNode; /** inner boolean formatter */ formatter?: ((cell: VisualDataCell, visualDataRow: VisualData) => VNode | string) | object; headerFormatter?: (context: { headerCell: HeaderCell; headerCells: HeaderCell[]; columnIndex: number; }) => VNode | string; } export interface ColumnGroupItem { field: string; title?: string; group?: (ColumnGroupItem | string)[]; } export type InteractiveMode = 'server' | 'client'; export declare const paginationOptions: { /** 启用分页 */ enable: { type: BooleanConstructor; default: boolean; }; /** 当前页码 */ index: { type: NumberConstructor; default: number; }; /** 分页交互模式 */ mode: { type: PropType<InteractiveMode>; default: string; }; /** 显示页码输入框 */ showGoto: { type: BooleanConstructor; default: boolean; }; /** 显示页码 */ showIndex: { type: BooleanConstructor; default: boolean; }; /** 显示每页记录数 */ showLimits: { type: BooleanConstructor; default: boolean; }; /** 显示分页汇总信息 */ showPageInfo: { type: BooleanConstructor; default: boolean; }; /** 默认每页记录数 */ size: { type: NumberConstructor; default: number; }; /** 可选择的没有记录数据 */ sizeLimits: { type: { (arrayLength: number): number[]; (...items: number[]): number[]; new (arrayLength: number): number[]; new (...items: number[]): number[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from<T>(arrayLike: ArrayLike<T>): T[]; from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[]; from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; of<T_4>(...items: T_4[]): T_4[]; readonly [Symbol.species]: ArrayConstructor; }; default: number[]; }; /** 总记录数 */ total: { type: NumberConstructor; default: number; }; /** 禁用分页 */ disabled: { type: BooleanConstructor; default: boolean; }; }; export type PaginatonOptions = ExtractPropTypes<typeof paginationOptions>; export type DataGridSortOrder = 'asc' | 'desc'; export interface DataGridSortField { /** 排序字段名 */ name: string; /** 排序方式 */ order: DataGridSortOrder; } export declare const sortOptions: { /** 启用排序 */ enable: { type: BooleanConstructor; default: boolean; }; /** 排序字段集合 */ fields: { type: { (arrayLength: number): DataGridSortField[]; (...items: DataGridSortField[]): DataGridSortField[]; new (arrayLength: number): DataGridSortField[]; new (...items: DataGridSortField[]): DataGridSortField[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from<T>(arrayLike: ArrayLike<T>): T[]; from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[]; from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; of<T_4>(...items: T_4[]): T_4[]; readonly [Symbol.species]: ArrayConstructor; }; default: never[]; }; /** 排序交互模式 */ mode: { type: PropType<InteractiveMode>; default: string; }; /** 多列排序 */ multiSort: { type: BooleanConstructor; default: boolean; }; }; export type SortOptions = ExtractPropTypes<typeof sortOptions>; export type GroupSummaryPosition = 'merge-to-group' | 'separate'; export declare const groupOptions: { /** 自定义分组合计内容 */ customGroupRow: { type: FunctionConstructor; default: () => void; }; /** 自定义分组行样式 */ customGroupRowStyle: { type: FunctionConstructor; default: () => void; }; /** 自行分组合计行样式 */ customSummaryStyle: { type: FunctionConstructor; default: () => void; }; /** 启用行数据分组 */ enable: { type: BooleanConstructor; default: boolean; }; /** 分组行合并列数 */ groupColSpan: { type: NumberConstructor; default: number; }; /** 行数据分组字段;多字段分组以英文逗号分隔 */ groupFields: { type: { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from<T>(arrayLike: ArrayLike<T>): T[]; from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[]; from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; of<T_4>(...items: T_4[]): T_4[]; readonly [Symbol.species]: ArrayConstructor; }; default: never[]; }; /** 在DataGrid中显示被分组的列 */ showGroupedColumn: { type: BooleanConstructor; default: boolean; }; /** 显示分组面板 */ showGroupPanel: { type: BooleanConstructor; default: boolean; }; /** 启用合计行 */ showSummary: { type: BooleanConstructor; default: boolean; }; /** 显示合计行位置; */ summaryPosition: { type: PropType<GroupSummaryPosition>; default: string; }; }; export type GroupOptions = ExtractPropTypes<typeof groupOptions>; export type DataGridFilterStyle = 'filter-column' | 'filter-row'; export declare const filterOptions: { /** 启用筛选 */ enable: { type: BooleanConstructor; default: boolean; }; /** DataGrid筛选风格 */ filterStyle: { type: PropType<DataGridFilterStyle>; default: string; }; /** 筛选交互模式 */ mode: { type: PropType<InteractiveMode>; default: string; }; /** 显示过滤条件工具条 */ showSummary: { type: BooleanConstructor; default: boolean; }; }; export type FilterOptions = ExtractPropTypes<typeof filterOptions>; export declare const headerOptions: { /** 允许折行显示列标题 */ wrapHeadings: { type: BooleanConstructor; default: boolean; }; }; export type HeaderOptions = ExtractPropTypes<typeof headerOptions>; export declare const rowNumberOptions: { /** 显示行号 */ enable: { type: BooleanConstructor; default: boolean; }; /** 行号列表头标题 */ heading: { type: StringConstructor; default: string; }; /** 行号宽度,默认为 36px */ width: { type: NumberConstructor; default: number; }; /** 是否展示省略号 */ showEllipsis: { type: BooleanConstructor; default: boolean; }; }; export type RowNumberOptions = ExtractPropTypes<typeof rowNumberOptions>; export declare const rowOptions: { /** 自定义行样式 */ customRowStyle: { type: FunctionConstructor; default: () => void; }; /** 自定义行状态 */ customRowStatus: { type: FunctionConstructor; default: () => void; }; /** 禁止行选中表达式 */ disable: { type: FunctionConstructor; default: () => void; }; /** 默认行高度为 29px */ height: { type: NumberConstructor; default: number; }; /** 鼠标滑过行效果 */ showHovering: { type: BooleanConstructor; default: boolean; }; /** 禁止数据折行 */ wrapContent: { type: BooleanConstructor; default: boolean; }; }; export type RowOptions = ExtractPropTypes<typeof rowOptions>; export type DataGridSummaryPosition = 'bottom' | 'top' | 'both'; export declare const summaryOptions: { /** 显示合计信息 */ enable: { type: BooleanConstructor; default: boolean; }; /** 合计行自定义样式,对启用合计行模板无效 */ customSummaryStyle: { type: FunctionConstructor; default: () => void; }; /** 分组合计字段 */ groupFields: { type: { (arrayLength: number): string[]; (...items: string[]): string[]; new (arrayLength: number): string[]; new (...items: string[]): string[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from<T>(arrayLike: ArrayLike<T>): T[]; from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[]; from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; of<T_4>(...items: T_4[]): T_4[]; readonly [Symbol.species]: ArrayConstructor; }; default: never[]; }; /** 合计交互模式 */ mode: { type: PropType<InteractiveMode>; default: string; }; /** 合计行显示位置, top: 顶部 bottom: 底部, both: 顶部与底部同时显示 */ position: { type: PropType<DataGridSummaryPosition>; default: string; }; }; export type SummaryOptions = ExtractPropTypes<typeof summaryOptions>; export type DataGridColumnFitMode = 'none' | 'average' | 'expand' | 'percentage'; export declare const columnOptions: { /** 自动列宽。设为true后,所有列将填满表格并不会出现横向滚动条。 */ fitColumns: { type: BooleanConstructor; default: boolean; }; /** 自动适配列宽度模式 */ fitMode: { type: PropType<DataGridColumnFitMode>; default: string; }; groups: { type: { (arrayLength: number): ColumnGroupItem[]; (...items: ColumnGroupItem[]): ColumnGroupItem[]; new (arrayLength: number): ColumnGroupItem[]; new (...items: ColumnGroupItem[]): ColumnGroupItem[]; isArray(arg: any): arg is any[]; readonly prototype: any[]; from<T>(arrayLike: ArrayLike<T>): T[]; from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[]; from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[]; from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[]; of<T_4>(...items: T_4[]): T_4[]; readonly [Symbol.species]: ArrayConstructor; }; defaut: never[]; }; /** 允许拖动表头改变列显示顺序 */ reorderColumn: { type: BooleanConstructor; default: boolean; }; /** 允许拖动改变列宽度 */ resizeColumn: { type: BooleanConstructor; default: boolean; }; /** 双击表头列自适应内容宽度 */ resizeColumnOnDoubleClick: { type: BooleanConstructor; default: boolean; }; }; export type ColumnOptions = ExtractPropTypes<typeof columnOptions>; export type FocuseSelectionMode = 'current' | 'all'; export declare const selectionOptions: { /** 启用多选且显示checkbox, 选中行后勾选前面的checkbox */ checkOnSelect: { type: BooleanConstructor; default: boolean; }; /** 当数据源为空时,清空已选记录 */ clearSelectionOnEmpty: { type: BooleanConstructor; default: boolean; }; /** 自定义已选记录列表中的显示内容 */ customSelectionItem: { type: FunctionConstructor; default: () => void; }; /** 允许选中行 */ enabelSelectRow: { type: BooleanConstructor; default: boolean; }; /** 允许重复点击行是保留选中状态 */ keepSelectingOnClick: { type: BooleanConstructor; default: boolean; }; /** 允许跨页多选 */ keepSelectingOnPaging: { type: BooleanConstructor; default: boolean; }; /** 启用多选 */ multiSelect: { type: BooleanConstructor; default: boolean; }; /** 启用多选时,点击行选中,只允许且只有一行被选中 */ focusSelection: { type: PropType<FocuseSelectionMode>; default: string; }; /** 启用多选且显示checkbox, 勾选后并且选中行 */ selectOnCheck: { type: BooleanConstructor; default: boolean; }; /** 每行前边显示 checkbox */ showCheckbox: { type: BooleanConstructor; default: boolean; }; /** 显示全选checkbox */ showSelectAll: { type: BooleanConstructor; default: boolean; }; /** 显示已选数据 */ showSelection: { type: BooleanConstructor; default: boolean; }; }; export type SelectionOptions = ExtractPropTypes<typeof selectionOptions>; export type DataGridEditMode = 'cell' | 'row'; export declare const editOptions: { /** 编辑时选中文本 */ selectOnEditing: { type: BooleanConstructor; default: boolean; }; /** 编辑模式; row:整行编辑,cell: 单元格编辑 */ editMode: { type: PropType<DataGridEditMode>; default: string; }; }; export type EditOption = ExtractPropTypes<typeof editOptions>; export declare const loadingOptions: { /** show loading */ show: { type: BooleanConstructor; default: boolean; }; /** message on display when loading */ message: { type: StringConstructor; default: string; }; }; export type LoadingOption = Partial<ExtractPropTypes<typeof editOptions>>; export declare const dataGridProps: Record<string, any>; export type DataGridProps = ExtractPropTypes<typeof dataGridProps>;