UNPKG

yoyo-ng-modulewindy

Version:

服务于52ABP模板的前端开源的相关组件内容。整合了ng-alain和你NG ZORRO的内容

422 lines (421 loc) 11.9 kB
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; }