yoyo-ng-modulewindy
Version:
服务于52ABP模板的前端开源的相关组件内容。整合了ng-alain和你NG ZORRO的内容
422 lines (421 loc) • 11.9 kB
TypeScript
import { SimpleTableComponent } from './simple-table.component';
import { ModalHelperOptions } from 'yoyo-ng-module/theme';
export declare type CompareFn = ((a: any, b: any) => number);
/**
* 数据源
*/
export interface SimpleTableData {
/**
* 选择框或单选框状态值
*/
checked?: boolean;
/**
* 选择框或单选框 `disabled` 值
*/
disabled?: boolean;
[key: string]: any;
}
/**
* 列描述
*/
export interface SimpleTableColumn {
/**
* 类型
* - `checkbox` 多选
* - `radio` 单选
* - `link` 链接,务必指定 `click`
* - `badge` [徽标](https://ng.ant.design/components/badge/zh),务必指定 `badge` 参数配置徽标对应值
* - `tag` [标签](https://ng.ant.design/components/tag/zh),务必指定 `tag` 参数配置标签对应值
* - `img` 图片且居中(若 `className` 存在则优先)
* - `number` 数字且居右(若 `className` 存在则优先)
* - `currency` 货币且居右(若 `className` 存在则优先)
* - `date` 日期格式且居中(若 `className` 存在则优先),使用 `dateFormat` 自定义格式
* - `yn` 将`boolean`类型徽章化 [document](http://ng-alain.com/docs/data-render#yn)
*/
type?: 'checkbox' | 'link' | 'badge' | 'tag' | 'radio' | 'img' | 'currency' | 'number' | 'date' | 'yn';
/**
* 列标题
*/
title: string;
/**
* 列标题 i18n
*/
i18n?: string;
/**
* 列数据在数据项中对应的 key,支持 `a.b.c` 的嵌套写法,例如:
* - `id`
* - `price.market`
* - `[ 'price', 'market' ]`
*/
index?: string | string[];
/**
* 链接回调,若返回一个字符串表示导航URL会自动触发 `router.navigateByUrl`
*/
click?: (record: any, instance?: SimpleTableComponent) => any;
/**
* 按钮组
*/
buttons?: SimpleTableButton[];
/**
* 自定义渲染ID
* @example
* ```html
* <ng-template st-row="custom" let-item let-index="index" let-column="column">
* {{ c.title }}
* </ng-template>
* ```
*/
render?: string;
/**
* 标题自定义渲染ID
* @example
* ```html
* <ng-template st-row="custom" type="title" let-c>
* {{ item | json }}
* </ng-template>
* ```
*/
renderTitle?: string;
/**
* 列宽,例如:`10%`、`100px`
*/
width?: string;
/**
* 排序的默认受控属性
* - 只支持同时对一列进行排序,除非指定 `multiSort`,建议后端支持时使用
* - 保证只有一列的 `sort` 值,否则自动获取所有列的第一个值
*/
sort?: 'ascend' | 'descend';
/**
* 排序函数,本地排序使用一个函数(参考 [Array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) 的 compareFunction)
* - 只有当属性存在时排序才会生效
* - 如果是AJAX直接返回 true
*/
sorter?: Function;
/**
* 排序的后端相对应的KEY,默认使用 `index` 属性
* - 若 `multiSort: false` 时:`sortKey: 'name' => ?name=1&pi=1`
* - 若 `multiSort: true` 允许多个排序 key 存在,或使用 `SimpleTableMultiSort` 进行多key合并
*/
sortKey?: string;
/**
* 排序的后端相对应的VALUE
* { ascend: '0', descend: '1' } => ?name=1&pi=1
* { ascend: 'asc', descend: 'desc' } => ?name=desc&pi=1
*/
sortReName?: {
ascend?: string;
descend?: string;
};
/**
* 表头的筛选菜单项,至少一项以上才会生效
*/
filters?: SimpleTableFilter[];
/**
* 本地模式下,确定筛选的运行函数
* - 只有当属性存在时筛选才会真的生效
* - 如果是AJAX直接返回 true
*/
filter?: (filter: SimpleTableFilter, record: any) => boolean;
/**
* 标识数据是否经过过滤,筛选图标会高亮
*/
filtered?: boolean;
/**
* 自定义 filter 图标,默认 `anticon anticon-filter`
*/
filterIcon?: string;
/**
* filter 确认按钮文本,默认 `确认`
*/
filterConfirmText?: string;
/**
* filter 清除按钮文本,默认 `重置`
*/
filterClearText?: string;
/**
* 是否多选,默认 `true`
*/
filterMultiple?: boolean;
/**
* 过滤的后端相对应的KEY,默认使用 `index` 属性
* filterKey: 'name' => ?name=1&pi=1
*/
filterKey?: string;
/**
* 过滤的后端相对应的VALUE
* - 默认当 `filterMultiple` 时以英文逗号拼接的字符串
* - 参数为 `filters` 原样数组
* - 返回为 Object 对象
*/
filterReName?: (list: SimpleTableFilter[], col: SimpleTableColumn) => Object;
/**
* 格式化列值
*/
format?: Function;
/**
* 自定义全/反选选择项
*/
selections?: SimpleTableSelection[];
/**
* 列 `class` 属性值(注:无须 `.` 点),例如:
* - `text-center` 居中
* - `text-right` 居右
* - `text-success` 成功色
* - `text-danger` 异常色
*/
className?: string;
/**
* 合并列
*/
colSpan?: number;
/**
* 数字格式,`type=number` 有效
*/
numberDigits?: string;
/**
* 日期格式,`type=date` 有效,(默认:`YYYY-MM-DD HH:mm`)
*/
dateFormat?: string;
/**
* 真值条件,`type=yn` 有效,(默认:`true`)
*/
ynTruth?: any;
/**
* 徽章 `true` 时文本,`type=yn` 有效,(默认:`是`)
*/
ynYes?: string;
/**
* 徽章 `false` 时文本,`type=yn` 有效,(默认:`否`)
*/
ynNo?: string;
/**
* 是否允许导出,默认 `true`
*/
exported?: boolean;
/** 权限,等同 `can()` 参数值 */
acl?: any;
/** 当不存在数据时以默认值替代 */
default?: string;
/**
* 固定前后列,当指定时务必指定 `width` 否则视为无效,有若干 **注意:** 项:
*
* - 若列头与内容不对齐或出现列重复,请指定列的宽度 `width`
* - 建议指定 `scroll.x` 为大于表格宽度的固定值或百分比。注意,且非固定列宽度之和不要超过 `scroll.x`
*/
fixed?: 'left' | 'right';
/**
* 徽标配置项
*/
badge?: SimpleTableBadge;
/**
* 标签配置项
*/
tag?: SimpleTableTag;
[key: string]: any;
}
/**
* 选择功能配置
*/
export interface SimpleTableSelection {
/**
* 选择项显示的文字
*/
text: string;
/**
* 选择项点击回调,允许对参数 `data.checked` 进行操作
*/
select: (data: SimpleTableData[]) => void;
/** 权限,等同 `can()` 参数值 */
acl?: any;
}
/**
* 过滤项配置
*/
export interface SimpleTableFilter {
/**
* 文本
*/
text: string;
/**
* 值
*/
value?: any;
/**
* 是否选中
*/
checked?: boolean;
/** 权限,等同 `can()` 参数值 */
acl?: any;
[key: string]: any;
}
/**
* 按钮配置
*/
export interface SimpleTableButton {
/**
* 文本
*/
text: string;
/**
* 文本 i18n
*/
i18n?: string;
/**
* 格式化文本,较高调用频率,请勿过多复杂计算免得产生性能问题
*/
format?: (record: any, btn: SimpleTableButton) => string;
/**
* 按钮类型
* - `none` 无任何互动
* - `del` 删除,默认开启 `pop: true`
* - `modal` 对话框,需要指定 `component` 才会生效
* - `static` 静态对话框,需要指定 `component` 才会生效
* - `link` 链接,当 `click` 返回字符串时自动调用 `navigateByUrl` 导航
*/
type?: 'none' | 'del' | 'modal' | 'static' | 'link';
/**
* 点击回调
* - Function
* - `type=modal` 只会在当有传回值时才会触发回调
* - reload:重新刷新当前页
* - load:重新加载数据,并重置页码为:`1`
*/
click?: 'reload' | 'load' | ((record: any, modal?: any, instance?: SimpleTableComponent) => any);
/**
* 是否需要气泡确认框
*/
pop?: boolean;
/**
* 气泡确认框内容,默认 `确认删除吗?`
*/
popTitle?: string;
/**
* 对话框组件对象,务必在 `entryComponents` 注册
*/
component?: any;
/**
* 对话框参数
*/
params?: (record: any) => Object;
/**
* 指定模态框目标组件的接收参数名,默认:`record`
*/
paramName?: string;
/**
* 对话框额外参数
*/
modal?: ModalHelperOptions;
/**
* 对话框大小,默认:`lg`
*
* @deprecated 使用 `options.size` 替代
*/
size?: 'sm' | 'lg' | '' | number;
/**
* 对话框额外参数,见 [ModalHelper](http://ng-alain.com/docs/service#ModalHelper)
*
* @deprecated 使用 `options.modalOptions` 替代
*/
modalOptions?: any;
/**
* 下拉菜单,当存在时以 `dropdown` 形式渲染
* - 只支持一级
*/
children?: SimpleTableButton[];
/**
* 权限,等同 `can()` 参数值
*/
acl?: any;
/**
* 条件表达式,较高调用频率,请勿过多复杂计算免得产生性能问题
*/
iif?: (item: any, btn: SimpleTableButton, column: SimpleTableColumn) => boolean;
[key: string]: any;
}
/**
* 回调数据
*/
export interface SimpleTableChange {
/**
* 回调类型
*/
type: 'pi' | 'ps';
/**
* 当前页码
*/
pi: number;
/**
* 每页数量
*/
ps: number;
/**
* 数据总量
*/
total: number;
}
export interface ReqReNameType {
pi?: string;
ps?: string;
}
export interface ResReNameType {
total?: string | string[];
list?: string | string[];
}
export interface STExportOptions {
_d?: any[];
_c?: SimpleTableColumn[];
/** 工作溥名 */
sheetname?: string;
/** 文件名 */
filename?: string;
/** triggers when saveas */
callback?: (wb: any) => void;
}
/**
* 多排序相同排序 key 时合并规则
*/
export interface SimpleTableMultiSort {
/** 请求参数名,默认:`sort` */
key?: string;
/** 不同属性间分隔符,默认:`-` */
separator?: string;
/** 列名与状态间分隔符,默认:`.` */
name_separator?: string;
}
/**
* 徽标信息
*/
export interface SimpleTableBadge {
[key: number]: SimpleTableBadgeValue;
[key: string]: SimpleTableBadgeValue;
}
export interface SimpleTableBadgeValue {
/**
* 文本
*/
text?: string;
/**
* 徽标颜色值
*/
color?: 'success' | 'processing' | 'default' | 'error' | 'warning';
}
/**
* 标签信息
*/
export interface SimpleTableTag {
[key: number]: SimpleTableTagValue;
[key: string]: SimpleTableTagValue;
}
export interface SimpleTableTagValue {
/**
* 文本
*/
text?: string;
/**
* 颜色值,支持预设和色值
* - 预设:geekblue,blue,purple,success,red,volcano,orange,gold,lime,green,cyan
* - 色值:#f50,#ff0
*/
color?: 'geekblue' | 'blue' | 'purple' | 'success' | 'red' | 'volcano' | 'orange' | 'gold' | 'lime' | 'green' | 'cyan' | string;
}