@ng-nest/ui 20.0.3 → 20.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cascade/index.d.ts +36 -3
- package/core/index.d.ts +3 -0
- package/fesm2022/ng-nest-ui-cascade.mjs +52 -11
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drag.mjs +2 -0
- package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +7 -1
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +4 -4
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/package.json +34 -34
- package/select/index.d.ts +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-table.mjs","sources":["../../../../lib/ng-nest/ui/table/table.property.ts","../../../../lib/ng-nest/ui/table/table-head.component.ts","../../../../lib/ng-nest/ui/table/table-head.component.html","../../../../lib/ng-nest/ui/table/table-foot.component.ts","../../../../lib/ng-nest/ui/table/table-foot.component.html","../../../../lib/ng-nest/ui/table/table-body.component.ts","../../../../lib/ng-nest/ui/table/table-body.component.html","../../../../lib/ng-nest/ui/table/table.component.ts","../../../../lib/ng-nest/ui/table/table.component.html","../../../../lib/ng-nest/ui/table/table.module.ts","../../../../lib/ng-nest/ui/table/ng-nest-ui-table.ts"],"sourcesContent":["import {\r\n XProperty,\r\n XPropertyFunction,\r\n XToCssPixelValue,\r\n XToBoolean,\r\n XToNumber,\r\n XToDataConvert\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XPaginationInputIndexSizeSureType, XPaginationSizeData } from '@ng-nest/ui/pagination';\r\nimport { XSelectNode } from '@ng-nest/ui/select';\r\nimport type {\r\n XNumber,\r\n XSort,\r\n XBoolean,\r\n XData,\r\n XTextAlign,\r\n XSize,\r\n XParentIdentityProperty,\r\n XIdentityProperty,\r\n XTemplate,\r\n XQuery,\r\n XDataArray\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Table\r\n * @selector x-table\r\n * @decorator component\r\n */\r\nexport const XTablePrefix = 'x-table';\r\nconst X_TABLE_CONFIG_NAME = 'table';\r\n\r\n/**\r\n * Table Property\r\n */\r\n@Component({ selector: `${XTablePrefix}-property`, template: '' })\r\nexport class XTableProperty extends XPropertyFunction(X_TABLE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n readonly data = input<XData<XTableRow>, XData<XTableRow>>([], { transform: XToDataConvert });\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n readonly columns = input<XTableColumn[]>([]);\r\n /**\r\n * @zh_CN 表头和行高,单位 px\r\n * @en_US Header and row height, unit px\r\n */\r\n readonly rowHeight = input<number, XNumber>(this.config?.rowHeight ?? 42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading\r\n */\r\n readonly loading = input<boolean, XBoolean>(this.config?.loading ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否展示列边框\r\n * @en_US Whether to show column borders\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否显示列头\r\n * @en_US Whether to display the column headers\r\n */\r\n readonly showHeader = input<boolean, XBoolean>(this.config?.showHeader ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 列头显示位置\r\n * @en_US Whether to display the column headers\r\n */\r\n readonly headerPosition = input<XTableHeaderPosition>(this.config?.headerPosition ?? 'top');\r\n /**\r\n * @zh_CN 列内容支持 innerHTML 渲染 html 标签\r\n * @en_US Column content supports innerHTML rendering of HTML tags\r\n */\r\n readonly bodyInnerHTML = input<boolean, XBoolean>(this.config?.bodyInnerHTML ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n readonly activatedRow = model<XTableRow>();\r\n /**\r\n * @zh_CN 列头自定义模板,通过 key-value 的方式指定每列的模版\r\n * @en_US Column header custom template\r\n */\r\n readonly headColumnTpl = input<XTableTemplate>({});\r\n /**\r\n * @zh_CN 列头单元格自定义模板,优先级低于列头自定义模板\r\n * @en_US Column header custom template\r\n */\r\n readonly headThTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 列内容自定义模板,通过 key-value 的方式指定每列的模版\r\n * @en_US Column content custom template\r\n */\r\n readonly bodyColumnTpl = input<XTableTemplate>({});\r\n /**\r\n * @zh_CN 单元格的自定义模板,优先级低于列内容自定义模板\r\n * @en_US Custom template of cells\r\n */\r\n readonly bodyTdTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 行条件样式\r\n * @en_US Row condition class\r\n */\r\n readonly rowClass = input<(row: XTableRow, index: number) => { [className: string]: boolean }>();\r\n /**\r\n * @zh_CN 列头搜索自定义模板\r\n * @en_US Line head search custom template\r\n */\r\n readonly headSearchTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 排序点击的事件\r\n * @en_US Sort click events\r\n */\r\n readonly sortChange = output<XSort[]>();\r\n /**\r\n * @zh_CN 列头 checkbox 事件\r\n * @en_US head checkbox event\r\n */\r\n readonly headCheckboxChange = output<XTableHeadCheckbox>();\r\n /**\r\n * @zh_CN body checkbox 事件\r\n * @en_US head checkbox event\r\n */\r\n readonly bodyCheckboxChange = output<XTableRow>();\r\n /**\r\n * @zh_CN 允许行点击选中当前行\r\n * @en_US Allow row click to select\r\n */\r\n readonly allowSelectRow = input<boolean, XBoolean>(this.config?.allowSelectRow ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 允许行点击选中 checkbox\r\n * @en_US Allow lines to click checkbox\r\n */\r\n readonly allowCheckRow = input<boolean, XBoolean>(this.config?.allowCheckRow ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN body 数据高度,只有开启虚拟滚动的时候生效\r\n * @en_US body data height\r\n */\r\n readonly bodyHeight = input<number | undefined, XNumber>(undefined, { transform: XToNumber });\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 自适应高度,table 高度等于屏幕高度减掉此处设置的数值\r\n * @en_US Adaptive height, table height is equal to the screen height minus the value set here\r\n */\r\n readonly adaptionHeight = input<number | undefined, XNumber>(undefined, { transform: XToNumber });\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n readonly docPercent = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN checkbox 列初始选中的数据,列中激活 checkbox\r\n * @en_US Checkbox column initially selected data, checkbox is activated in column\r\n */\r\n readonly checkedRow = input<{ [property: string]: any[] }>({});\r\n /**\r\n * @zh_CN 如果 data 是函数类型,可以通过此参数控制请求,常用于弹框中的表格,弹出后再请求\r\n * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n */\r\n readonly manual = model<boolean>(true);\r\n /**\r\n * @zh_CN 滚动区域高宽\r\n * @en_US Height and width of rolling area\r\n */\r\n readonly scroll = input<{ x: number; y: number }>();\r\n /**\r\n * @zh_CN 表格页头\r\n * @en_US Table header\r\n */\r\n readonly header = input<XTemplate>();\r\n /**\r\n * @zh_CN 表格页尾\r\n * @en_US Table footer\r\n */\r\n readonly footer = input<XTemplate>();\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell config\r\n */\r\n readonly cellConfig = input<XTableCellConfig>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly rowSize = input<XSize>(this.config?.rowSize ?? 'medium');\r\n /**\r\n * @zh_CN 分页器位置\r\n * @en_US Pagination position\r\n */\r\n readonly paginationPosition = input<XPaginationPosition>('bottom-left');\r\n /**\r\n * @zh_CN 隐藏表格外边框\r\n * @en_US Hidden table wrap border\r\n */\r\n readonly hiddenWrapBorder = input<boolean, XBoolean>(this.config?.hiddenWrapBorder ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @deprecated useless\r\n * @zh_CN 隐藏分页器按钮边框\r\n * @en_US Hidden pagination button border\r\n */\r\n readonly hiddenPaginationBorder = input<boolean, XBoolean>(this.config?.hiddenPaginationBorder ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 显示分页器\r\n * @en_US Pagination position\r\n */\r\n readonly showPagination = input<boolean, XBoolean>(this.config?.showPagination ?? true, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 树形表格\r\n * @en_US Tree table\r\n */\r\n readonly treeTable = input<boolean, XBoolean>(this.config?.treeTable ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 树形表格展开所有节点\r\n * @en_US Tree table\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(this.config?.expandedAll ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 默认展开的层级,-1 不展开\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(this.config?.expandedLevel ?? -1, {\r\n transform: XToNumber\r\n });\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = input<any[]>([]);\r\n /**\r\n * @zh_CN 自定义展开内容\r\n * @en_US Customized expansion content\r\n */\r\n readonly expandTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 显示数据为空的提示\r\n * @en_US Display a prompt with empty data\r\n */\r\n readonly showEmpty = input<boolean, XBoolean>(this.config?.showEmpty ?? true, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 数据为空的提示图片地址或自定义模板\r\n * @en_US Picture address or custom template\r\n */\r\n readonly emptyImg = input<XTemplate | undefined>(this.config?.emptyImg ?? undefined);\r\n /**\r\n * @zh_CN 数据为空的提示内容或自定义模板\r\n * @en_US Content or custom template\r\n */\r\n readonly emptyContent = input<XTemplate | undefined>(this.config?.emptyContent ?? undefined);\r\n /**\r\n * @zh_CN 当前页码\r\n * @en_US Current page number\r\n */\r\n readonly index = model<number>(this.config?.index ?? 1);\r\n /**\r\n * @zh_CN 每页显示条数\r\n * @en_US Number of items displayed per page\r\n */\r\n readonly size = model<number>(this.config?.size ?? 10);\r\n /**\r\n * @zh_CN 总数\r\n * @en_US Total\r\n */\r\n readonly total = model<number>(0);\r\n /**\r\n * @zh_CN 查询条件\r\n * @en_US Query conditions\r\n */\r\n readonly query = model<XQuery>({});\r\n /**\r\n * @zh_CN 最多显示的分页数量\r\n * @en_US The largest number of pages display\r\n */\r\n readonly pageLinkSize = input<number, XNumber>(this.config?.pageLinkSize ?? 5, { transform: XToNumber });\r\n /**\r\n * @zh_CN 显示首尾页跳转\r\n * @en_US Display the first and last page\r\n */\r\n readonly showEllipsis = input<boolean, XBoolean>(this.config?.showEllipsis ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示总条数\r\n * @en_US Display the total\r\n */\r\n readonly showTotal = input<boolean, XBoolean>(this.config?.showTotal ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 按钮间距\r\n * @en_US Button spacing\r\n */\r\n readonly space = input<string, XNumber>(this.config?.space ?? '0.25rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 添加背景色\r\n * @en_US Show background\r\n */\r\n readonly showBackground = input<boolean, XBoolean>(this.config?.showBackground ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示分页条数\r\n * @en_US Show size\r\n */\r\n readonly showSize = input<boolean, XBoolean>(this.config?.showSize ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 分页条数选择框的宽度\r\n * @en_US size with select\r\n */\r\n readonly sizeWidth = input<string, XNumber>(this.config?.sizeWidth ?? '6.875rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 显示输入分页条数(不能跟下拉选项同时使用)\r\n * @en_US Display the number of input page breaks (cannot exist with the drop-down options of page breaks)\r\n */\r\n readonly showInputSize = input<boolean, XBoolean>(this.config?.showInputSize ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示输入分页框的 tooltip 提示信息,默认显示\r\n * @en_US show enter the tooltip prompt information for the pagination box, which will be displayed by default based on the confirmation of the input\r\n */\r\n readonly showInputSizeTooltipText = input<boolean, XBoolean>(this.config?.showInputSizeTooltipText ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入分页框的 tooltip 提示信息,默认根据输入确认改变的方式来显示\r\n * @en_US Enter the tooltip prompt information for the pagination box, which will be displayed by default based on the confirmation of the input\r\n */\r\n readonly inputSizeTooltipText = input<string>(this.config?.inputSizeTooltipText ?? '');\r\n /**\r\n * @zh_CN 分页条数输入框的宽度\r\n * @en_US size with input\r\n */\r\n readonly inputSizeWidth = input<string, XNumber>(this.config?.sizeWidth ?? '3.125rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 分页选择的数据项\r\n * @en_US Paging choose items of data\r\n */\r\n readonly sizeData = input<XDataArray<XSelectNode>>(this.config?.sizeData ?? XPaginationSizeData);\r\n /**\r\n * @zh_CN 禁用整个分页\r\n * @en_US disabled\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示跳转输入框\r\n * @en_US Show size\r\n */\r\n readonly showJump = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示跳转输入框的 tooltip 提示信息,默认显示\r\n * @en_US Show the tooltip prompt information for jumping to the input box is displayed by default based on the confirmation of input changes\r\n */\r\n readonly showJumpTooltipText = input<boolean, XBoolean>(this.config?.showJumpTooltipText ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 跳转输入框的 tooltip 提示信息,默认根据输入确认改变的方式来显示\r\n * @en_US The tooltip prompt information for jumping to the input box is displayed by default based on the confirmation of input changes\r\n */\r\n readonly jumpTooltipText = input<string>(this.config?.jumpTooltipText ?? '');\r\n /**\r\n * @zh_CN 跳转页的宽度\r\n * @en_US size with\r\n */\r\n readonly jumpWidth = input<string, XNumber>(this.config?.jumpWidth ?? '3.125rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 总数自定义模板\r\n * @en_US Total template\r\n */\r\n readonly totalTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 简单分页\r\n * @en_US Simple\r\n */\r\n readonly simple = input<boolean, XBoolean>(this.config?.simple ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 简单分页输入框宽度\r\n * @en_US Simple index with\r\n */\r\n readonly simpleIndexWidth = input<string, XNumber>(this.config?.simpleIndexWidth ?? '8.125rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 输入确认改变的方式,针对输入分页大小和输入跳转页\r\n * @en_US The method for confirming changes in input is based on the input page size and input jump page\r\n */\r\n readonly inputIndexSizeSureType = input<XPaginationInputIndexSizeSureType>(\r\n this.config?.inputIndexSizeSureType ?? 'enter'\r\n );\r\n /**\r\n * @zh_CN 行点击事件\r\n * @en_US Row click event\r\n */\r\n readonly rowClick = output<XTableRow>();\r\n /**\r\n * @zh_CN 列头拖动开始事件,返回拖动的列\r\n * @en_US Column Header Drag End Event\r\n */\r\n readonly columnDragStarted = output<XTableColumn>();\r\n /**\r\n * @zh_CN 列头拖动结束事件,返回拖动的列\r\n * @en_US The column header is dragging, and the event is triggered when the order is changed\r\n */\r\n readonly columnDragEnded = output<XTableColumn>();\r\n /**\r\n * @zh_CN 当用户把一个条目投放进该容器时就会触发,拖动放开的事件,返回拖动排序后的列数据\r\n * @en_US The column header is dragging, and the event is triggered when the order is changed\r\n */\r\n readonly columnDropListDropped = output<XTableColumn[]>();\r\n /**\r\n * @zh_CN 开始拖动列宽的事件\r\n * @en_US Event to started drag column width\r\n */\r\n readonly columnDragWidthStarted = output<XTableDragWidthEvent>();\r\n /**\r\n * @zh_CN 正在拖动列宽时的事件\r\n * @en_US Event to moved drag column width\r\n */\r\n readonly columnDragWidthMoved = output<XTableDragWidthEvent>();\r\n /**\r\n * @zh_CN 结束拖动列宽的事件\r\n * @en_US Event to ended drag column width\r\n */\r\n readonly columnDragWidthEnded = output<XTableDragWidthEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\nexport interface XTableRow extends XParentIdentityProperty<XTableRow> {\r\n /**\r\n * @zh_CN 展开\r\n * @en_US Unfold\r\n */\r\n expanded?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 列参数\r\n * @en_US Column parameter\r\n */\r\nexport interface XTableColumn extends XIdentityProperty {\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\n type?: XColumnType;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n */\r\n width?: number;\r\n /**\r\n * @zh_CN flex 布局宽度\r\n * @en_US Flex layout width\r\n */\r\n flex?: number;\r\n /**\r\n * @zh_CN 查询字段\r\n * @en_US Query field\r\n */\r\n search?: boolean;\r\n /**\r\n * @zh_CN 排序字段\r\n * @en_US Sort field\r\n */\r\n sort?: boolean;\r\n /**\r\n * @zh_CN 固定列,距离左边的距离\r\n * @en_US Fixed column, distance from left\r\n */\r\n left?: number;\r\n /**\r\n * @zh_CN 固定列,距离右边的距离\r\n * @en_US Fixed column, distance from right\r\n */\r\n right?: number;\r\n /**\r\n * @zh_CN 操作按钮\r\n * @en_US Operation button\r\n */\r\n action?: boolean;\r\n /**\r\n * @zh_CN type 为 checkbox 时绑定行点击选中事件\r\n * @en_US Bind row click selection event when type is checkbox\r\n */\r\n rowChecked?: boolean;\r\n /**\r\n * @zh_CN type 为 expand 时绑定行点击展开事件\r\n * @en_US Bind row click selection event when type is expand\r\n */\r\n rowExpand?: boolean;\r\n /**\r\n * @zh_CN 文字对齐方式\r\n * @en_US Text alignment\r\n */\r\n textAlign?: XTextAlign;\r\n /**\r\n * @zh_CN 拖动列宽,需要设置列的初始宽度 width\r\n * @en_US Drag the column width, you need to set the initial width of the column width\r\n */\r\n dragWidth?: boolean;\r\n /**\r\n * @zh_CN 正在拖动列宽\r\n * @en_US Dragging width\r\n */\r\n draggingWidth?: boolean;\r\n /**\r\n * @zh_CN 开始拖动列宽的事件\r\n * @en_US Event to started drag column width\r\n */\r\n dragWidthStarted?: (event: XTableDragWidthEvent) => void;\r\n /**\r\n * @zh_CN 正在拖动列宽时的事件\r\n * @en_US Event to moved drag column width\r\n */\r\n dragWidthMoved?: (event: XTableDragWidthEvent) => void;\r\n /**\r\n * @zh_CN 结束拖动列宽的事件\r\n * @en_US Event to ended drag column width\r\n */\r\n dragWidthEnded?: (event: XTableDragWidthEvent) => void;\r\n /**\r\n * @zh_CN 拖动列\r\n * @en_US Drag the column\r\n */\r\n dragColumn?: boolean;\r\n /**\r\n * @zh_CN 正在拖动列\r\n * @en_US Dragging column\r\n */\r\n dragging?: boolean;\r\n /**\r\n * @zh_CN 头部显示 checkbox\r\n * @en_US Head shows checkbox\r\n */\r\n headChecked?: boolean;\r\n /**\r\n * @zh_CN 头部显示 expand\r\n * @en_US Head shows expand\r\n */\r\n headExpand?: boolean;\r\n /**\r\n * @zh_CN 列内容支持 innerHTML 渲染 html 标签\r\n * @en_US Column content supports innerHTML rendering of HTML tags\r\n */\r\n innerHTML?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 列头宽度拖动事件\r\n * @en_US Column header width drag event\r\n */\r\nexport interface XTableDragWidthEvent {\r\n /**\r\n * @zh_CN 拖动的列\r\n * @en_US Dragged column\r\n */\r\n column: XTableColumn;\r\n /**\r\n * @zh_CN 列位置,正在拖动的时候指偏移位置\r\n * @en_US The column position refers to the offset position when dragging\r\n */\r\n position: { x: number; y: number };\r\n}\r\n\r\n/**\r\n * @zh_CN 列头 checkbox 事件数据\r\n * @en_US Column header checkbox event data\r\n */\r\nexport interface XTableHeadCheckbox {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n rows: XTableRow[];\r\n /**\r\n * @zh_CN checkbox 数据\r\n * @en_US Checkbox data\r\n */\r\n checkbox: { [property: string]: boolean };\r\n}\r\n\r\n/**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell config\r\n */\r\nexport interface XTableCellConfig {\r\n /**\r\n * @zh_CN 列单元格配置\r\n * @en_US Column cell config\r\n */\r\n thead?: XTableCellConfigRule;\r\n /**\r\n * @zh_CN 行单元格配置\r\n * @en_US Row config\r\n */\r\n tbody?: XTableCellConfigRule;\r\n}\r\n\r\n/**\r\n * @zh_CN 单元格配置规则\r\n * @en_US Cell config rules\r\n */\r\nexport interface XTableCellConfigRule {\r\n /**\r\n * @zh_CN grid 布局下定义列宽度\r\n * @en_US Define column width under grid layout\r\n */\r\n gridTemplateColumns?: string;\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell merge rules\r\n */\r\n cells?: XTableCell[];\r\n}\r\n\r\n/**\r\n * @zh_CN 单元格合并配置\r\n * @en_US Cell merge rules\r\n */\r\nexport interface XTableCell {\r\n /**\r\n * @zh_CN 使用 grid 布局来合并单元格\r\n * @en_US Use grid layout to merge cells\r\n */\r\n gridArea?: string;\r\n /**\r\n * @zh_CN 名称\r\n * @en_US Name\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n */\r\n width?: number;\r\n /**\r\n * @zh_CN 固定列,距离左边的距离\r\n * @en_US Fixed column, distance from left\r\n */\r\n left?: number;\r\n /**\r\n * @zh_CN 固定列,距离右边的距离\r\n * @en_US Fixed column, distance from right\r\n */\r\n right?: number;\r\n /**\r\n * @zh_CN 对应列的 id\r\n * @en_US The id of the corresponding column\r\n */\r\n id?: string;\r\n /**\r\n * @zh_CN 拖动列宽\r\n * @en_US Drag the column width\r\n */\r\n dragWidth?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 列类型\r\n * @en_US Column type\r\n */\r\nexport type XColumnType = 'label' | 'index' | 'checkbox' | 'expand';\r\n\r\n/**\r\n * @zh_CN 列头显示位置\r\n * @en_US Line head display position\r\n */\r\nexport type XTableHeaderPosition = 'top' | 'bottom' | 'top-bottom';\r\n\r\n/**\r\n * @zh_CN 分页器位置\r\n * @en_US Paging position\r\n */\r\nexport type XPaginationPosition =\r\n | 'top-left'\r\n | 'top-center'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-center'\r\n | 'bottom-right';\r\n\r\n/**\r\n * @zh_CN 模板\r\n * @en_US Template\r\n */\r\nexport type XTableTemplate = { [property: string]: TemplateRef<any> };\r\n\r\n/**\r\n * Table Head\r\n * @selector x-table-head\r\n * @decorator component\r\n */\r\nexport const XTableHeadPrefix = 'x-table-head';\r\n\r\n/**\r\n * Table Head Property\r\n */\r\n@Component({ selector: `${XTableHeadPrefix}-property`, template: '' })\r\nexport class XTableHeadProperty extends XProperty {\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n readonly columns = input<XTableColumn[]>([]);\r\n /**\r\n * @zh_CN 高度,单位 px\r\n * @en_US Height in px\r\n */\r\n readonly rowHeight = input<number, XNumber>(42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly columnTpl = input<XTableTemplate>({});\r\n /**\r\n * @zh_CN 竖向滚动条宽度\r\n * @en_US Vertical scroll bar width\r\n */\r\n readonly scrollYWidth = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 横向滚动条宽度\r\n * @en_US Horizontal scroll bar width\r\n */\r\n readonly scrollXWidth = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell merge rules\r\n */\r\n readonly cellConfig = input<XTableCellConfigRule>();\r\n /**\r\n * @zh_CN 显示的位置\r\n * @en_US Display position\r\n */\r\n readonly position = input<string>();\r\n}\r\n\r\n/**\r\n * Table Body\r\n * @selector x-table-body\r\n * @decorator component\r\n */\r\nexport const XTableBodyPrefix = 'x-table-body';\r\n\r\n/**\r\n * Table Body Property\r\n */\r\n@Component({ selector: `${XTableBodyPrefix}-property`, template: '' })\r\nexport class XTableBodyProperty extends XProperty {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n readonly data = input<XTableRow[]>([]);\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n readonly columns = input<XTableColumn[]>([]);\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly columnTpl = input<XTableTemplate>({});\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n readonly activatedRow = model<XTableRow>();\r\n /**\r\n * @zh_CN 高度,单位 px。设置为 0 表示行高自适应内容高度。\r\n * @en_US Height in px. set to 0 means that the row height is adaptive to the content height\r\n */\r\n readonly rowHeight = input<number, XNumber>(42, { transform: XToNumber });\r\n /**\r\n * @zh_CN body 数据高度\r\n * @en_US body data height\r\n */\r\n readonly bodyHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 允许行点击选中\r\n * @en_US Allow row click to select\r\n */\r\n readonly allowSelectRow = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 自适应高度,table 高度等于屏幕高度减掉此处设置的数值\r\n * @en_US Adaptive height, table height is equal to the screen height minus the value set here\r\n */\r\n readonly adaptionHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n readonly docPercent = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 滚动区域高宽\r\n * @en_US Height and width of rolling area\r\n */\r\n readonly scroll = input<{ x: number; y: number }>();\r\n /**\r\n * @zh_CN 单元格配置规则\r\n * @en_US Cell config rules\r\n */\r\n readonly cellConfig = input<XTableCellConfigRule>();\r\n /**\r\n * @zh_CN 行条件样式\r\n * @en_US Row condition class\r\n */\r\n readonly rowClass = input<(row: XTableRow, index: number) => { [className: string]: boolean }>();\r\n /**\r\n * @zh_CN 树形表格下的层级\r\n * @en_US The level under the tree table\r\n */\r\n readonly level = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 树形表格展开所有节点\r\n * @en_US Tree table\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义展开内容\r\n * @en_US Customized expansion content\r\n */\r\n readonly expandTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 行点击事件\r\n * @en_US Row click event\r\n */\r\n readonly rowClick = output<XTableRow>();\r\n}\r\n\r\n/**\r\n * Table Foot\r\n * @selector x-table-foot\r\n * @decorator component\r\n */\r\nexport const XTableFootPrefix = 'x-table-foot';\r\n\r\n/**\r\n * Table Foot Property\r\n */\r\n@Component({ selector: `${XTableFootPrefix}-property`, template: '' })\r\nexport class XTableFootProperty extends XProperty {\r\n /**\r\n * @zh_CN 表格页尾\r\n * @en_US Table footer\r\n */\r\n readonly footer = input<XTemplate>();\r\n /**\r\n * @zh_CN 表头和行高,单位 px\r\n * @en_US Header and row height, unit px\r\n */\r\n readonly rowHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ElementRef,\r\n inject,\r\n computed,\r\n viewChild,\r\n signal,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XTableHeadPrefix, XTableHeadProperty, XTableColumn, XTableCell, XTablePrefix } from './table.property';\r\nimport { XIsEmpty, XSort, XNumber, XIsFunction, XRemoveNgTag } from '@ng-nest/ui/core';\r\nimport { CdkDragDrop, CdkDragSortEvent, CdkDragStart, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { XDragDirective } from '@ng-nest/ui/drag';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XTableComponent } from './table.component';\r\n\r\n@Component({\r\n selector: `${XTableHeadPrefix}`,\r\n imports: [\r\n NgStyle,\r\n NgClass,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n XDragDirective,\r\n DragDropModule,\r\n XCheckboxComponent,\r\n XOutletDirective,\r\n XIconComponent\r\n ],\r\n templateUrl: './table-head.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class XTableHeadComponent extends XTableHeadProperty implements OnInit {\r\n table = inject(XTableComponent, { optional: true })!;\r\n cdr = inject(ChangeDetectorRef);\r\n\r\n thead = viewChild.required<ElementRef<HTMLElement>>('thead');\r\n sort = signal<XSort[]>([]);\r\n sortStr = signal('');\r\n theadStyle = computed(() => {\r\n let height = this.rowHeight() === 0 ? '' : this.rowHeight();\r\n if (this.cellConfig() && this.cellConfig()!.cells) {\r\n const spt = this.cellConfig()!.cells?.map((x) => {\r\n const gridAreaSpt = x.gridArea?.split('/');\r\n return gridAreaSpt && gridAreaSpt.length > 3 ? Number(gridAreaSpt[2]) : 2;\r\n });\r\n height = ((Math.max(...spt!) - 1) * (height as number)) as XNumber;\r\n }\r\n return {\r\n ['min-height']: `${this.getRowHeight()}px`\r\n };\r\n });\r\n thClassMap = computed(() => ({\r\n [`${XTablePrefix}-th-${this.table.rowSize()}`]: !XIsEmpty(this.table.rowSize())\r\n }));\r\n\r\n initColumns = computed(() => [...this.columns()]);\r\n getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));\r\n\r\n private elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n XRemoveNgTag(this.elementRef.nativeElement);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.theads.update((x) => {\r\n x.push(this.thead());\r\n return [...x];\r\n });\r\n }\r\n\r\n getFlex(column: XTableColumn) {\r\n if (column.width) return 'none';\r\n if (!column.flex) return 1;\r\n return column.flex;\r\n }\r\n\r\n getColumnRight(right?: number) {\r\n if (Number(right) >= 0) {\r\n if (Number(this.scrollYWidth()) >= 0) {\r\n return Number(right) + Number(this.scrollYWidth());\r\n }\r\n return Number(right);\r\n }\r\n return '';\r\n }\r\n\r\n getColumnWidth(column: XTableColumn) {\r\n return column.width;\r\n }\r\n\r\n onSort(column: XTableColumn) {\r\n if (!column.sort) return;\r\n if (XIsEmpty(this.sort())) this.sort.set([]);\r\n let sort = this.sort()!.find((y) => y.field === column.id);\r\n if (sort) {\r\n if (sort.value === 'asc') {\r\n this.sort.set([]);\r\n this.sortStr.set('');\r\n } else {\r\n sort.value = 'asc';\r\n }\r\n } else {\r\n sort = { field: column.id, value: 'desc' };\r\n this.sort.set([sort]);\r\n }\r\n if (!XIsEmpty(this.sort())) this.sortStr.set(`${sort.field} ${sort.value}`);\r\n this.table.checkSort(this.sort());\r\n this.table.sortChange.emit(this.sort());\r\n this.table.resetScroll(false, true);\r\n }\r\n\r\n dragWidthMoved(\r\n position: { x: number; y: number; offsetX: number; offsetY: number },\r\n column: XTableColumn | XTableCell\r\n ) {\r\n if (column.width) {\r\n (column.width as number) += position.offsetX;\r\n if (column.width < 60) column.width = 60;\r\n XIsFunction(column.dragWidthMoved) && column.dragWidthMoved({ position, column });\r\n this.table.columnDragWidthMoved.emit({ position, column });\r\n this.table.detectChanges();\r\n }\r\n }\r\n\r\n dragWidthStarted(position: { x: number; y: number }, column: XTableColumn | XTableCell) {\r\n column.draggingWidth = true;\r\n if (column.width && XIsFunction(column.dragWidthStarted)) {\r\n column.dragWidthStarted({ position, column });\r\n this.table.columnDragWidthStarted.emit({ position, column });\r\n }\r\n }\r\n\r\n dragWidthEnded(position: { x: number; y: number }, column: XTableColumn | XTableCell) {\r\n column.draggingWidth = false;\r\n if (column.width && XIsFunction(column.dragWidthEnded)) {\r\n column.dragWidthEnded({ position, column });\r\n this.table.columnDragWidthEnded.emit({ position, column });\r\n }\r\n }\r\n\r\n dropListDropped(event: CdkDragDrop<XTableColumn[]>) {\r\n const previous = this.initColumns()[event.previousIndex];\r\n const current = this.initColumns()[event.currentIndex];\r\n const middle = { left: previous.left, right: previous.right };\r\n previous.left = current.left;\r\n previous.right = current.right;\r\n current.left = middle.left;\r\n current.right = middle.right;\r\n moveItemInArray(this.initColumns(), event.previousIndex, event.currentIndex);\r\n this.table.columnDropListDropped.emit(this.initColumns());\r\n }\r\n\r\n dropListSorted(event: CdkDragSortEvent<XTableColumn[]>) {\r\n const previous = this.columns()[event.previousIndex];\r\n const current = this.columns()[event.currentIndex];\r\n const middle = { left: previous.left, right: previous.right };\r\n previous.left = current.left;\r\n previous.right = current.right;\r\n current.left = middle.left;\r\n current.right = middle.right;\r\n moveItemInArray(this.columns(), event.previousIndex, event.currentIndex);\r\n this.table.detectChanges();\r\n }\r\n\r\n dragStarted(_event: CdkDragStart, column: XTableColumn) {\r\n column.dragging = true;\r\n this.table.detectChanges();\r\n this.table.columnDragStarted.emit(column);\r\n }\r\n\r\n dragEnded(column: XTableColumn) {\r\n column.dragging = false;\r\n this.table.detectChanges();\r\n this.table.columnDragEnded.emit(column);\r\n }\r\n}\r\n","<thead\r\n #thead\r\n [ngStyle]=\"theadStyle()\"\r\n [class.x-table-head-top]=\"position() === 'top'\"\r\n [class.x-table-head-bottom]=\"position() === 'bottom'\"\r\n>\r\n @if (cellConfig()) {\r\n <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\" [style.min-height.px]=\"getRowHeight()\">\r\n @for (column of cellConfig()!.cells; track column.id) {\r\n <th\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [class.x-table-width-drag]=\"column.dragWidth\"\r\n [style.grid-area]=\"column.gridArea\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n [title]=\"column?.label\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n @if (column.dragWidth) {\r\n <div\r\n class=\"x-table-drag-width\"\r\n x-drag\r\n (dragMoved)=\"dragWidthMoved($event, column)\"\r\n (dragStarted)=\"dragWidthStarted($event, column)\"\r\n (dragEnded)=\"dragWidthEnded($event, column)\"\r\n ></div>\r\n }\r\n </th>\r\n }\r\n </tr>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"columnsTpl\"></ng-container>\r\n }\r\n @if (table.headSearchTpl()) {\r\n <ng-container *ngTemplateOutlet=\"columnsTpl; context: { case: 'search' }\"></ng-container>\r\n }\r\n</thead>\r\n\r\n<ng-template #columnsTpl let-case=\"case\">\r\n <tr\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListSorted)=\"dropListSorted($event)\"\r\n (cdkDropListDropped)=\"dropListDropped($event)\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n [style.padding-right.px]=\"scrollYWidth()\"\r\n [style.min-width.px]=\"scrollXWidth()\"\r\n [class.x-table-search]=\"case === 'search'\"\r\n >\r\n @for (column of initColumns(); track column.id) {\r\n <th\r\n cdkDrag\r\n [cdkDragDisabled]=\"column.draggingWidth || !column.dragColumn\"\r\n (cdkDragStarted)=\"dragStarted($event, column)\"\r\n (cdkDragEnded)=\"dragEnded(column)\"\r\n [ngClass]=\"thClassMap()\"\r\n [class.x-table-th]=\"true\"\r\n [class.x-table-sticky]=\"table.getSticky(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n [style.width.px]=\"getColumnWidth(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"getColumnRight(column.right)\"\r\n [style.flex]=\"getFlex(column)\"\r\n >\r\n @switch (case) {\r\n @case ('search') {\r\n <ng-container *xOutlet=\"table.headSearchTpl()!; context: { $column: column }\"></ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n @if (column.dragWidth) {\r\n <div\r\n class=\"x-table-drag-width\"\r\n x-drag\r\n (dragMoved)=\"dragWidthMoved($event, column)\"\r\n (dragStarted)=\"dragWidthStarted($event, column)\"\r\n (dragEnded)=\"dragWidthEnded($event, column)\"\r\n ></div>\r\n }\r\n }\r\n }\r\n </th>\r\n }\r\n </tr>\r\n</ng-template>\r\n\r\n<ng-template #columnBaseTpl let-column=\"column\">\r\n @switch (column.type) {\r\n @case ('checkbox') {\r\n @if (column.headChecked) {\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: column.label }]\"\r\n [(ngModel)]=\"table.checkedValues()[column.id]\"\r\n (ngModelChange)=\"table.headChecked($event, column)\"\r\n [indeterminate]=\"table.checkedValues()[column.id + table.indeterminate()]\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!column.headChecked) {\r\n <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n }\r\n }\r\n @case ('index') {\r\n <a\r\n ><ng-container *xOutlet=\"columnTpl()[column.id]; context: { $column: column }\">\r\n <ng-container *xOutlet=\"table.headThTpl(); context: { $column: column }\">\r\n {{ column.label }}\r\n </ng-container>\r\n </ng-container></a\r\n >\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cloumnDefaultTpl let-column=\"column\">\r\n <a [class.x-table-sort]=\"column.sort\" (click)=\"onSort(column)\" [style.text-align]=\"column.textAlign\">\r\n <ng-container *xOutlet=\"columnTpl()[column.id]; context: { $column: column }\">\r\n <ng-container *xOutlet=\"table.headThTpl(); context: { $column: column }\">\r\n {{ column.label }}\r\n </ng-container>\r\n </ng-container>\r\n @if (column.sort) {\r\n <x-icon\r\n type=\"fto-bar-chart\"\r\n class=\"x-table-sort-icon\"\r\n [class.x-table-icon-up]=\"sortStr() === column.id + ' desc'\"\r\n [class.x-table-icon-down]=\"sortStr() === column.id + ' asc'\"\r\n ></x-icon>\r\n }\r\n </a>\r\n</ng-template>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n computed,\r\n viewChild,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XTableFootPrefix, XTableFootProperty } from './table.property';\r\nimport { XRemoveNgTag } from '@ng-nest/ui/core';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XTableComponent } from './table.component';\r\n\r\n@Component({\r\n selector: `${XTableFootPrefix}`,\r\n imports: [XOutletDirective],\r\n templateUrl: './table-foot.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableFootComponent extends XTableFootProperty implements OnInit {\r\n tfoot = viewChild.required<ElementRef<HTMLElement>>('tfoot');\r\n table = inject(XTableComponent, { optional: true })!;\r\n cdr = inject(ChangeDetectorRef);\r\n getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));\r\n private elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n XRemoveNgTag(this.elementRef.nativeElement);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.tfoot.set(this.tfoot());\r\n }\r\n}\r\n","<tfoot #tfoot class=\"x-table-footer\" [style.height.px]=\"getRowHeight()!\" [style.min-height.px]=\"getRowHeight()\">\r\n <ng-container *xOutlet=\"footer()\">{{ footer() }}</ng-container>\r\n</tfoot>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n computed,\r\n viewChild,\r\n signal,\r\n effect,\r\n AfterViewInit,\r\n AfterViewChecked\r\n} from '@angular/core';\r\nimport { XTableBodyPrefix, XTableBodyProperty, XTableRow, XTableColumn, XTableCell } from './table.property';\r\nimport { XRemoveNgTag, XResize, XNumber, XStripTags, XParentPath, XResizeObserver } from '@ng-nest/ui/core';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { XEmptyComponent } from '@ng-nest/ui/empty';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XTableComponent } from './table.component';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { XInnerHTMLComponent } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XTableBodyPrefix}`,\r\n imports: [\r\n NgClass,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n XEmptyComponent,\r\n ScrollingModule,\r\n XOutletDirective,\r\n XCheckboxComponent,\r\n XButtonComponent,\r\n XInnerHTMLComponent\r\n ],\r\n templateUrl: './table-body.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableBodyComponent extends XTableBodyProperty implements OnInit, AfterViewInit, AfterViewChecked {\r\n renderer = inject(Renderer2);\r\n elementRef = inject(ElementRef<HTMLElement>);\r\n cdr = inject(ChangeDetectorRef);\r\n tbody = viewChild.required<ElementRef<HTMLElement>>('tbody');\r\n virtualBody = viewChild(CdkVirtualScrollViewport);\r\n table = inject(XTableComponent, { optional: true })!;\r\n private doc = inject(DOCUMENT);\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n private domSanitizer = inject(DomSanitizer);\r\n tbodyStyle = signal<{ [property: string]: any }>({});\r\n\r\n isEmpty = computed(() => this.data().length === 0);\r\n getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));\r\n getItemSize = computed(() =>\r\n this.rowHeight() !== 0 && this.itemSize() > this.rowHeight() ? this.rowHeight() : this.itemSize()\r\n );\r\n docClientHeight = signal(this.doc.documentElement.clientHeight);\r\n headHeight = signal(0);\r\n captionHeight = signal(0);\r\n footHeight = signal(0);\r\n paginationHeight = signal(0);\r\n\r\n bodyHeightSignal = computed(() => {\r\n const adaptionHeight = this.adaptionHeight();\r\n if (adaptionHeight && adaptionHeight > 0) {\r\n let bodyHeight =\r\n this.docPercent() * this.docClientHeight() -\r\n this.captionHeight() -\r\n this.headHeight() -\r\n this.footHeight() -\r\n this.paginationHeight() -\r\n adaptionHeight;\r\n if (bodyHeight < 0) bodyHeight = 0;\r\n return bodyHeight;\r\n }\r\n if (this.scroll()?.y && !this.bodyHeight()) {\r\n return this.scroll()!.y;\r\n }\r\n return this.bodyHeight();\r\n });\r\n\r\n minBufferPxSignal = computed(() => {\r\n const adaptionHeight = this.adaptionHeight();\r\n if (adaptionHeight && adaptionHeight > 0) {\r\n return this.bodyHeightSignal();\r\n }\r\n return this.minBufferPx();\r\n });\r\n\r\n maxBufferPxSignal = computed(() => {\r\n const adaptionHeight = this.adaptionHeight();\r\n if (adaptionHeight && adaptionHeight > 0) {\r\n return this.bodyHeightSignal()! * 1.2;\r\n }\r\n return this.maxBufferPx();\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.virtualBody()) {\r\n this.virtualBody()!['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n }\r\n });\r\n effect(() => {\r\n if (this.virtualBody()) {\r\n this.virtualBody()!['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n XRemoveNgTag(this.elementRef.nativeElement);\r\n if (this.level() > 0) XRemoveNgTag(this.tbody().nativeElement);\r\n\r\n fromEvent(this.doc.defaultView!, 'resize')\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.docClientHeight.set(this.doc.documentElement.clientHeight);\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.virtualBody.set(this.virtualBody()!);\r\n this.docClientHeight.set(this.doc.documentElement.clientHeight);\r\n this.setSubject();\r\n this.setScroll();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n let headHeight = 0;\r\n for (let thead of this.table.theads()) {\r\n headHeight += thead.nativeElement.clientHeight;\r\n }\r\n this.headHeight.set(headHeight);\r\n const captionHeight = this.table.caption()?.nativeElement.clientHeight || 0;\r\n this.captionHeight.set(captionHeight);\r\n const footHeight = this.table.tfoot()?.nativeElement.clientHeight || 0;\r\n this.footHeight.set(footHeight);\r\n const paginationHeight = this.table.pagination()?.elementRef.nativeElement.clientHeight || 0;\r\n this.paginationHeight.set(paginationHeight);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setSubject() {\r\n if (this.virtualBody()) {\r\n this.table.scrollContentEle.set(\r\n this.virtualBody()!.elementRef.nativeElement.querySelector('.cdk-virtual-scroll-content-wrapper') as HTMLElement\r\n );\r\n if (this.scroll()?.x) {\r\n this.renderer.setStyle(this.table.scrollContentEle()!, 'width', `${this.scroll()?.x}px`);\r\n }\r\n XResize(this.table.table().nativeElement, this.table.scrollContentEle()!)\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n this.resizeObserver = x.resizeObserver;\r\n this.setScroll();\r\n });\r\n }\r\n if (this.table.scrollContentEle()) {\r\n fromEvent(this.virtualBody()!.elementRef.nativeElement, 'scroll')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n const ele = x.srcElement as HTMLElement;\r\n this.table.scrollTop.set(ele.scrollTop);\r\n this.table.scrollLeft.set(ele.scrollLeft);\r\n if (ele.scrollLeft >= 0 && this.table.theads().length > 0) {\r\n for (let thead of this.table.theads()) {\r\n thead.nativeElement.scrollLeft = this.table.scrollLeft();\r\n }\r\n }\r\n this.table.scrollLeftMax.set(ele.scrollLeft + ele.clientWidth === ele.scrollWidth);\r\n });\r\n }\r\n }\r\n\r\n setScroll() {\r\n if (!this.virtualBody()) return;\r\n const ele = this.virtualBody()!.elementRef.nativeElement;\r\n const hasY = ele.scrollHeight > this.bodyHeightSignal()!;\r\n const hasX = this.table.scrollContentEle()!.clientWidth > ele.clientWidth;\r\n\r\n if (!this.table.hasScrollY() && hasY) {\r\n this.table.hasScrollY.set(true);\r\n this.table.scrollYWidth.set(ele.offsetWidth - ele.clientWidth);\r\n } else if (this.table.hasScrollY() && !hasY) {\r\n this.table.hasScrollY.set(false);\r\n this.table.scrollYWidth.set(0);\r\n }\r\n\r\n if (!this.table.hasScrollX() && hasX) {\r\n this.table.hasScrollX.set(true);\r\n this.table.scrollXHeight.set(ele.offsetHeight - ele.clientHeight);\r\n } else if (this.table.hasScrollX() && !hasX) {\r\n this.table.hasScrollX.set(false);\r\n this.table.scrollXHeight.set(0);\r\n this.table.scrollXWidth.set(null);\r\n }\r\n if (hasX) {\r\n this.table.scrollXWidth.set(ele.offsetWidth + ele.scrollWidth - ele.clientWidth);\r\n }\r\n\r\n this.virtualBody()!.checkViewportSize();\r\n\r\n // this.table.cdr.detectChanges();\r\n }\r\n\r\n setStyle() {\r\n let height = this.rowHeight() === 0 ? '' : this.rowHeight();\r\n if (this.cellConfig() && this.cellConfig()!.cells) {\r\n const spt = this.cellConfig()!.cells?.map((x) => {\r\n const gridAreaSpt = x.gridArea?.split('/');\r\n return gridAreaSpt && gridAreaSpt.length > 3 ? Number(gridAreaSpt[2]) : 2;\r\n });\r\n height = ((Math.max(...spt!) - 1) * (height as number)) as XNumber;\r\n }\r\n this.tbodyStyle.set({\r\n height: `${height}px`\r\n });\r\n }\r\n\r\n setDomSanitizer(str: string) {\r\n return this.domSanitizer.bypassSecurityTrustHtml(str);\r\n }\r\n\r\n getIndex(index: number, item: XTableRow) {\r\n if (!isNaN(index)) return index;\r\n return this.data().indexOf(item);\r\n }\r\n\r\n getFlex(column: XTableColumn) {\r\n if (column.width) return 'none';\r\n if (!column.flex) return 1;\r\n return column.flex;\r\n }\r\n\r\n getTitle(row: XTableRow, column: XTableCell | any) {\r\n let it = row[column.id as string];\r\n return it ? XStripTags(it) : '';\r\n }\r\n\r\n onRowClick(event: Event, row: XTableRow) {\r\n if (row.disabled) return;\r\n if (this.table.allowCheckRow() && this.table.rowChecked()) {\r\n if (!XParentPath(event.target as HTMLElement).includes('x-checkbox')) {\r\n row[this.table.rowChecked()!.id] = !row[this.table.rowChecked()!.id];\r\n this.table.bodyChecked(row[this.table.rowChecked()!.id], this.table.rowChecked()!, row);\r\n }\r\n }\r\n this.activatedRow.set(row);\r\n this.rowClick.emit(row);\r\n }\r\n\r\n onExpanded(_event: Event, node: XTableRow) {\r\n node.expanded = !node.expanded;\r\n // this.cdr.detectChanges();\r\n }\r\n\r\n trackByItem(_index: number, item: XTableRow | XTableColumn) {\r\n return item.id;\r\n }\r\n}\r\n","<tbody #tbody>\r\n @if (cellConfig()) {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\">\r\n @for (column of cellConfig()!.cells; track column; let j = $index) {\r\n <td\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n } @else {\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"getItemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"bodyHeightSignal()\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data(); let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <!-- rowHeight 为 0 的时候,index 下标获取不到 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n @if (table.treeTable() && row.children && row.expanded) {\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl()\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns()\"\r\n [itemSize]=\"table.itemSize()\"\r\n [rowHeight]=\"table.rowHeight()\"\r\n [columnTpl]=\"table.bodyColumnTpl()\"\r\n [allowSelectRow]=\"table.allowSelectRow()\"\r\n [rowClass]=\"table.rowClass()\"\r\n [cellConfig]=\"table.cellConfig()?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll()\"\r\n [expandTpl]=\"expandTpl()\"\r\n [level]=\"row.level! + 1\"\r\n ></x-table-body>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @if (table.showEmpty() && isEmpty() && level() === 0) {\r\n <x-empty [img]=\"table.emptyImg()!\" [content]=\"table.emptyContent()!\"></x-empty>\r\n }\r\n</tbody>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n @if (level() > 0 && expandTpl()) {\r\n <ng-container *xOutlet=\"expandTpl(); context: { $row: row, $index: i, $level: level() }\"></ng-container>\r\n } @else if (level() === 0 || !expandTpl()) {\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level() }\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n @for (column of columns(); track column.id; let j = $index) {\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-dragging]=\"column.dragging\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass() ? {} : rowClass()!(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n @switch (column.type) {\r\n @case ('checkbox') {\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column, row)\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @case ('index') {\r\n <div>{{ table.getIndex(i) }}</div>\r\n }\r\n @default {\r\n @if (table.isExpandColumn(column)) {\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n flat\r\n plain\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n }\r\n <ng-container\r\n *xOutlet=\"columnTpl()[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\"\r\n >\r\n <ng-container *xOutlet=\"table.bodyTdTpl(); context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n @if ((table.bodyInnerHTML() && column.innerHTML !== false) || column.innerHTML) {\r\n <div x-inner-html [html]=\"row[column.id]\" [style]=\"{ textAlign: column.textAlign }\"></div>\r\n } @else {\r\n <div [style.text-align]=\"column.textAlign\">{{ row[column.id] }}</div>\r\n }\r\n {{ table.rowExpand() && table.rowExpand()!.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n }\r\n }\r\n</ng-template>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnDestroy,\r\n computed,\r\n signal,\r\n viewChild,\r\n inject,\r\n viewChildren,\r\n AfterViewChecked,\r\n SimpleChange\r\n} from '@angular/core';\r\nimport {\r\n XTablePrefix,\r\n XTableProperty,\r\n XTableColumn,\r\n XTableRow,\r\n XTableCell,\r\n XTableCellConfigRule\r\n} from './table.property';\r\nimport { XIsChange, XIsEmpty, XResultList, XSort, XIsUndefined, XIsArray } from '@ng-nest/ui/core';\r\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { XPaginationComponent } from '@ng-nest/ui/pagination';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { NgClass } from '@angular/common';\r\nimport { XLoadingComponent } from '@ng-nest/ui/loading';\r\nimport { XTableHeadComponent } from './table-head.component';\r\nimport { XTableFootComponent } from './table-foot.component';\r\nimport { XTableBodyComponent } from './table-body.component';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n selector: `${XTablePrefix}`,\r\n imports: [\r\n NgClass,\r\n XOutletDirective,\r\n XLoadingComponent,\r\n XTableHeadComponent,\r\n XTableFootComponent,\r\n XTableBodyComponent,\r\n XPaginationComponent\r\n ],\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableComponent extends XTableProperty implements OnInit, OnDestroy, AfterViewChecked {\r\n renderer = inject(Renderer2);\r\n elementRef = inject(ElementRef<HTMLElement>);\r\n cdr = inject(ChangeDetectorRef);\r\n unSubject = new Subject<void>();\r\n\r\n classMap = computed(() => ({ [`${XTablePrefix}-row-size-${this.rowSize()}`]: !XIsEmpty(this.rowSize()) }));\r\n theads = signal<ElementRef<HTMLElement>[]>([]);\r\n tfoot = signal<ElementRef<HTMLElement> | null>(null);\r\n virtualBody = signal<CdkVirtualScrollViewport | null>(null);\r\n theadsChange: (() => void)[] = [];\r\n bodyChange!: () => void;\r\n scrollContentEle = signal<HTMLElement | null>(null);\r\n hasScrollY = signal(false);\r\n scrollYWidth = signal(0);\r\n hasScrollX = signal(false);\r\n scrollXHeight = signal(0);\r\n scrollXWidth = signal<number | null>(null);\r\n scrollLeft = signal(0);\r\n scrollLeftMax = signal(false);\r\n scrollTop = signal(0);\r\n rowChecked = signal<XTableColumn | null>(null);\r\n headCheckboxList = signal<XTableColumn[]>([]);\r\n rowExpand = signal<XTableColumn | null>(null);\r\n headExpandList = signal<XTableColumn[]>([]);\r\n dataIsFunc = signal(false);\r\n getting = signal(false);\r\n tableData = signal<XTableRow[]>([]);\r\n treeTableData = signal<XTableRow[]>([]);\r\n checkedValues = signal<{ [prop: string]: boolean }>({});\r\n indeterminate = signal('$$indeterminate');\r\n table = viewChild.required<ElementRef<HTMLElement>>('table');\r\n caption = viewChild<ElementRef<HTMLElement>>('caption');\r\n pagination = viewChild<XPaginationComponent>('pagination');\r\n stickyTopRightEle = viewChild<ElementRef<HTMLElement>>('stickyTopRightEle');\r\n stickyBottomRightEle = viewChild<ElementRef<HTMLElement>>('stickyBottomRightEle');\r\n headCom = viewChildren<XTableHeadComponent>(XTableHeadComponent);\r\n bodyCom = viewChildren<XTableBodyComponent>(XTableBodyComponent);\r\n footCom = viewChild<XTableFootComponent>(XTableFootComponent);\r\n\r\n getScrollLeft = computed(() => this.scrollLeft() > 0);\r\n getScrollTop = computed(() => this.scrollTop() > 0);\r\n getRowHeight = computed(() => (this.rowHeight() === 0 ? '' : this.rowHeight()));\r\n getStickyTopScrollTop = computed(() => (this.caption() ? this.caption()!.nativeElement.offsetHeight : 0));\r\n getStickyBottomScrollTop = computed(() => {\r\n let top = 0;\r\n if (this.footer() && this.tfoot()) {\r\n top += this.tfoot()!.nativeElement.clientHeight + 1;\r\n }\r\n return top;\r\n });\r\n getStickyTopRightEleHeight = computed(() => {\r\n if (this.stickyTopRightEle()) {\r\n return this.stickyTopRightEle()!.nativeElement.offsetHeight;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n getStickyBottomRightEleHeight = computed(() => {\r\n if (this.stickyBottomRightEle()) {\r\n return this.stickyBottomRightEle()!.nativeElement.offsetHeight;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n hasStickyTopRight = computed(\r\n () =>\r\n this.showHeader() &&\r\n (this.headerPosition() === 'top' || this.headerPosition() === 'top-bottom') &&\r\n this.columns().some((x) => Number(x.right) >= 0)\r\n );\r\n hasStickyTopRightSearch = computed(() => !!this.headSearchTpl());\r\n\r\n hasStickyBottomRight = computed(\r\n () =>\r\n this.showHeader() &&\r\n (this.headerPosition() === 'bottom' || this.headerPosition() === 'top-bottom') &&\r\n this.columns().some((x) => Number(x.right) >= 0)\r\n );\r\n\r\n cellConfigSignal = computed(() => {\r\n const cellConfig = this.cellConfig();\r\n if (!cellConfig) return;\r\n const setRule = (rule?: XTableCellConfigRule) => {\r\n if (!rule) return;\r\n let gridTemplateColumns = '',\r\n cells = [];\r\n if (!rule.gridTemplateColumns) {\r\n gridTemplateColumns = `${this.columns()\r\n .map((x) => {\r\n if (x.width) return x.width;\r\n if (x.flex) return `${x.flex}fr`;\r\n return '1fr';\r\n })\r\n .join(' ')}`;\r\n }\r\n if (!rule.cells) return;\r\n cells = rule.cells.map((y) => {\r\n const col = this.columns().find((z) => z.id === y.id);\r\n if (col) {\r\n return { ...col, ...y } as XTableCell;\r\n }\r\n return y;\r\n });\r\n return { gridTemplateColumns, cells };\r\n };\r\n\r\n return { thead: setRule(cellConfig.thead), tbody: setRule(cellConfig.tbody) };\r\n });\r\n\r\n tbodyHeight = signal(0);\r\n tbodyScrollHeight = signal(0);\r\n\r\n ngOnInit() {\r\n this.setRowChecked();\r\n this.setRowExpand();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { data, checkedRow, columns, activatedRow, manual, showPagination, expandedAll, paginationPosition } =\r\n simples;\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(data, checkedRow) && this.setData();\r\n if (XIsChange(columns)) {\r\n this.setRowChecked();\r\n this.setRowExpand();\r\n }\r\n XIsChange(columns, activatedRow, showPagination) && this.cdr.detectChanges();\r\n XIsChange(manual) && this.setManual();\r\n XIsChange(paginationPosition) && this.setPaginationPosition(paginationPosition);\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.bodyCom().length > 0) {\r\n const first = this.bodyCom()[0].tbody().nativeElement;\r\n this.tbodyHeight.set(first.clientHeight);\r\n this.tbodyScrollHeight.set(first.scrollHeight);\r\n // let trs = first.tbody().nativeElement.querySelectorAll('tr');\r\n // let i = 0;\r\n // let h = 0;\r\n // while (i < trs.length) {\r\n // h += trs[i].clientHeight;\r\n // }\r\n // this.trsHeight.set(h);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n setPaginationPosition(position: SimpleChange) {\r\n const { currentValue, previousValue } = position;\r\n if (previousValue) {\r\n this.renderer.removeClass(this.elementRef.nativeElement, `x-table-${previousValue}`);\r\n }\r\n if (currentValue) {\r\n this.renderer.addClass(this.elementRef.nativeElement, `x-table-${currentValue}`);\r\n }\r\n }\r\n\r\n getSticky(column: XTableColumn | XTableCell) {\r\n return this.getStickyLeft(column) || this.getStickyRight(column);\r\n }\r\n\r\n getStickyLeft(column: XTableColumn | XTableCell) {\r\n return Number(column.left) >= 0;\r\n }\r\n\r\n getStickyLeftLast(column: XTableColumn | XTableCell) {\r\n let lefts = this.columns().filter((x) => Number(x.left) >= 0);\r\n if (lefts.length === 0) return false;\r\n return lefts[lefts.length - 1].id === column.id;\r\n }\r\n\r\n getStickyRight(column: XTableColumn | XTableCell) {\r\n return Number(column.right) >= 0;\r\n }\r\n\r\n getStickyRightFirst(column: XTableColumn | XTableCell) {\r\n let rights = this.columns().filter((x) => Number(x.right) >= 0);\r\n if (rights.length === 0) return false;\r\n return rights[0].id === column.id;\r\n }\r\n\r\n getIndex(index: number) {\r\n return (this.index() - 1) * this.size() + index + 1;\r\n }\r\n\r\n setData() {\r\n const data = this.data();\r\n if (XIsArray<XTableRow>(data)) {\r\n this.dataIsFunc.set(false);\r\n this.tableData.set(data);\r\n this.setChecked(data);\r\n this.setHeadCheckboxList(data);\r\n this.setExpand(data);\r\n this.detectChanges();\r\n } else if (data instanceof Function) {\r\n this.dataIsFunc.set(true);\r\n this.getDataByFunc();\r\n }\r\n }\r\n\r\n getDataByFunc() {\r\n if (!this.manual() || !this.dataIsFunc()) return;\r\n this.getting.set(true);\r\n this.unSubject.next();\r\n (this.data() as Function)(this.index(), this.size(), this.query())\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((x: XResultList<XTableRow>) => {\r\n let [data, total] = [x.list as XTableRow[], x.total!];\r\n if (this.virtualBody()) {\r\n this.virtualBody()!.scrollToIndex(0);\r\n this.virtualBody()!.checkViewportSize();\r\n }\r\n this.getting.set(false);\r\n this.tableData.set(data);\r\n this.setChecked(data);\r\n this.setHeadCheckboxList(data);\r\n this.setExpand(data);\r\n this.total.set(total);\r\n });\r\n }\r\n\r\n setManual() {\r\n this.getDataByFunc();\r\n }\r\n\r\n setRowChecked() {\r\n this.rowChecked.set(this.columns().find((x) => x.rowChecked) as XTableColumn);\r\n this.headCheckboxList.set(this.columns().filter((x) => x.type === 'checkbox' && x.headChecked));\r\n }\r\n\r\n setRowExpand() {\r\n this.rowExpand.set(this.columns().find((x) => x.rowExpand) as XTableColumn);\r\n }\r\n\r\n isExpandColumn(column: XTableColumn) {\r\n let expandColumn = this.columns().find((x) => x.id === column.id && x.type === 'expand');\r\n if (expandColumn) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n pageChange(_type: 'index' | 'size') {\r\n this.getDataByFunc();\r\n this.resetScroll();\r\n }\r\n\r\n change(index: number) {\r\n this.index.set(index);\r\n this.getDataByFunc();\r\n this.resetScroll();\r\n }\r\n\r\n resetScroll(x = true, y = true) {\r\n if (this.hasScrollX() && x) this.virtualBody()?.scrollTo({ left: 0 });\r\n if (this.hasScrollY() && y) this.virtualBody()?.scrollTo({ top: 0 });\r\n }\r\n\r\n setChecked(data: XTableRow[]) {\r\n let result: XTableRow[] = [];\r\n if (XIsEmpty(data) || !this.checkedRow()) return;\r\n for (let key in this.checkedRow()) {\r\n const arr = this.checkedRow()[key];\r\n for (let item of data as any[]) {\r\n item[key] = arr.includes(item.id);\r\n result = [...result, item];\r\n }\r\n }\r\n if (result.length > 0) data = [...result];\r\n }\r\n\r\n setHeadCheckboxList(data: XTableRow[]) {\r\n if (XIsEmpty(data) || !this.headCheckboxList()) return;\r\n for (let column of this.headCheckboxList()) {\r\n this.setCheckedValues(column);\r\n }\r\n }\r\n\r\n setExpand(data: XTableRow[]) {\r\n const getChildren = (node: XTableRow, level: number) => {\r\n node.level = level;\r\n node.expanded = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n if (XIsUndefined(node.children)) node.children = data.filter((y) => y.pid === node.id);\r\n if (XIsUndefined(node.leaf)) node.leaf = (node.children?.length as number) > 0;\r\n if (node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeTableData.set(\r\n data\r\n .filter((x) => XIsEmpty(x.pid))\r\n .map((x, index) => {\r\n if (XIsUndefined(x.id)) x.id = index + 1;\r\n return getChildren(x, 0);\r\n })\r\n );\r\n }\r\n\r\n setExpandedAll() {\r\n if (!this.treeTable() || this.treeTableData()?.length === 0) return;\r\n const setChildren = (nodes: XTableRow[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.expanded = Boolean(this.expandedAll);\r\n setChildren(x.children as XTableRow[]);\r\n });\r\n };\r\n this.treeTableData.update((x) => {\r\n setChildren(x);\r\n return [...x];\r\n });\r\n }\r\n\r\n checkSort(sort: XSort[]) {\r\n if (!this.dataIsFunc) return;\r\n let query = this.query();\r\n if (typeof query === 'undefined') query = {};\r\n query.sort = sort;\r\n this.query.set(query);\r\n this.getDataByFunc();\r\n }\r\n\r\n headChecked(checked: boolean, column: XTableColumn) {\r\n this.tableData.update((z) => {\r\n z.forEach((x) => {\r\n if (!x.disabled) {\r\n x[column.id] = checked;\r\n }\r\n });\r\n return [...z];\r\n });\r\n this.setCheckedValues(column);\r\n this.headCheckboxChange.emit({ rows: this.tableData(), checkbox: this.checkedValues() });\r\n this.detectChanges();\r\n }\r\n\r\n bodyChecked(_checked: boolean, column: XTableColumn, row: XTableRow) {\r\n this.setCheckedValues(column);\r\n this.bodyCheckboxChange.emit(row);\r\n // this.detectChanges();\r\n }\r\n\r\n setCheckedValues(column: XTableColumn) {\r\n const notDisabled = this.tableData().filter((x) => !x.disabled);\r\n const count = notDisabled.length;\r\n const checkedLen = notDisabled.filter((x) => x[column.id]).length;\r\n this.checkedValues.update((x) => {\r\n x[column.id] = count === checkedLen && count !== 0;\r\n x[column.id + this.indeterminate()] = checkedLen > 0 && checkedLen < count;\r\n return { ...x };\r\n });\r\n }\r\n\r\n detectChanges() {\r\n this.headCom()?.forEach((x) => {\r\n x.cdr.markForCheck();\r\n });\r\n this.bodyCom()?.forEach((x) => {\r\n x.cdr.markForCheck();\r\n });\r\n this.footCom()?.cdr.markForCheck();\r\n this.cdr.markForCheck();\r\n }\r\n}\r\n","<table\r\n #table\r\n class=\"x-table\"\r\n [ngClass]=\"classMap()\"\r\n [x-loading]=\"loading() && getting()\"\r\n [class.x-table-wrap-border-hidden]=\"hiddenWrapBorder()\"\r\n [class.x-table-scroll-left]=\"getScrollLeft()\"\r\n [class.x-table-scroll-left-max]=\"scrollLeftMax()\"\r\n [class.x-table-scroll-top]=\"getScrollTop()\"\r\n [class.x-table-has-scroll-right]=\"scrollYWidth()\"\r\n [class.x-table-has-scroll-bottom]=\"scrollXWidth()\"\r\n [class.x-table-bordered]=\"bordered()\"\r\n [class.x-table-td-adaption-height]=\"rowHeight() == 0\"\r\n [class.x-table-cell-config]=\"!!cellConfigSignal()\"\r\n [class.x-table-last-tr-bordered]=\"!!adaptionHeight() || tbodyHeight() >= tbodyScrollHeight()\"\r\n>\r\n @if (header()) {\r\n <caption #caption class=\"x-table-header\" [style.height.px]=\"getRowHeight()\" [style.min-height.px]=\"getRowHeight()\">\r\n <ng-container *xOutlet=\"header()\">{{ header() }}</ng-container>\r\n </caption>\r\n }\r\n @if (showHeader() && (headerPosition() === 'top' || headerPosition() === 'top-bottom')) {\r\n <x-table-head\r\n [columns]=\"columns()\"\r\n [rowHeight]=\"rowHeight()\"\r\n [columnTpl]=\"headColumnTpl()\"\r\n [scrollYWidth]=\"scrollYWidth()\"\r\n [scrollXWidth]=\"scrollXWidth()!\"\r\n [cellConfig]=\"cellConfigSignal()?.thead\"\r\n [position]=\"'top'\"\r\n ></x-table-head>\r\n }\r\n <x-table-body\r\n [data]=\"treeTable() ? treeTableData() : tableData()\"\r\n [columns]=\"columns()\"\r\n [itemSize]=\"itemSize()\"\r\n [rowHeight]=\"rowHeight()\"\r\n [bodyHeight]=\"bodyHeight()!\"\r\n [columnTpl]=\"bodyColumnTpl()\"\r\n [allowSelectRow]=\"allowSelectRow()\"\r\n [virtualScroll]=\"virtualScroll()\"\r\n [minBufferPx]=\"minBufferPx()\"\r\n [maxBufferPx]=\"maxBufferPx()\"\r\n [adaptionHeight]=\"adaptionHeight()!\"\r\n [docPercent]=\"docPercent()\"\r\n [scroll]=\"scroll()\"\r\n [rowClass]=\"rowClass()\"\r\n [cellConfig]=\"cellConfigSignal()?.tbody\"\r\n [expandedAll]=\"expandedAll()\"\r\n [expandTpl]=\"expandTpl()\"\r\n [(activatedRow)]=\"activatedRow\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n ></x-table-body>\r\n @if (showHeader() && (headerPosition() === 'bottom' || headerPosition() === 'top-bottom')) {\r\n <x-table-head\r\n [columns]=\"columns()\"\r\n [rowHeight]=\"rowHeight()\"\r\n [columnTpl]=\"headColumnTpl()\"\r\n [scrollYWidth]=\"scrollYWidth()\"\r\n [scrollXWidth]=\"scrollXWidth()!\"\r\n [cellConfig]=\"cellConfigSignal()?.thead\"\r\n [position]=\"'bottom'\"\r\n ></x-table-head>\r\n }\r\n @if (footer()) {\r\n <x-table-foot [footer]=\"footer()\" [rowHeight]=\"rowHeight()\"></x-table-foot>\r\n }\r\n @if (hasStickyTopRight()) {\r\n <div\r\n #stickyTopRightEle\r\n class=\"x-table-sticky-right-scroll\"\r\n [class.x-table-border-bottom]=\"headSearchTpl()\"\r\n [style.top.px]=\"getStickyTopScrollTop()\"\r\n [style.width.px]=\"scrollYWidth()\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n ></div>\r\n }\r\n @if (hasStickyTopRight() && headSearchTpl()) {\r\n <div\r\n class=\"x-table-sticky-right-scroll\"\r\n [style.top.px]=\"getStickyTopScrollTop() + getStickyTopRightEleHeight()\"\r\n [style.width.px]=\"scrollYWidth()\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n ></div>\r\n }\r\n @if (hasStickyBottomRight()) {\r\n <div\r\n #stickyBottomRightEle\r\n class=\"x-table-sticky-right-scroll\"\r\n [style.bottom.px]=\"getStickyBottomScrollTop()\"\r\n [style.width.px]=\"scrollYWidth()\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n ></div>\r\n }\r\n @if (hasStickyBottomRight() && headSearchTpl()) {\r\n <div\r\n class=\"x-table-sticky-right-scroll\"\r\n [class.x-table-border-bottom]=\"headSearchTpl()\"\r\n [style.bottom.px]=\"getStickyBottomScrollTop() + getStickyBottomRightEleHeight()\"\r\n [style.width.px]=\"scrollYWidth()\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n ></div>\r\n }\r\n</table>\r\n@if (showPagination() && size()) {\r\n <x-pagination\r\n #pagination\r\n [(index)]=\"index\"\r\n [(size)]=\"size\"\r\n [(query)]=\"query\"\r\n [total]=\"total()\"\r\n (indexChange)=\"pageChange('index')\"\r\n (sizeChange)=\"pageChange('size')\"\r\n [showEllipsis]=\"showEllipsis()\"\r\n [showTotal]=\"showTotal()\"\r\n [space]=\"space()\"\r\n [showBackground]=\"showBackground()\"\r\n [showSize]=\"showSize()\"\r\n [showJump]=\"showJump()\"\r\n [jumpWidth]=\"jumpWidth()\"\r\n [showInputSize]=\"showInputSize()\"\r\n [inputSizeWidth]=\"inputSizeWidth()\"\r\n [sizeData]=\"sizeData()\"\r\n [sizeWidth]=\"sizeWidth()\"\r\n [pageLinkSize]=\"pageLinkSize()\"\r\n [disabled]=\"disabled()\"\r\n [totalTpl]=\"totalTpl()\"\r\n [simple]=\"simple()\"\r\n [simpleIndexWidth]=\"simpleIndexWidth()\"\r\n [jumpTooltipText]=\"jumpTooltipText()\"\r\n [showJumpTooltipText]=\"showJumpTooltipText()\"\r\n [inputSizeTooltipText]=\"inputSizeTooltipText()\"\r\n [showInputSizeTooltipText]=\"showInputSizeTooltipText()\"\r\n [inputIndexSizeSureType]=\"inputIndexSizeSureType()\"\r\n >\r\n </x-pagination>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTableComponent } from './table.component';\r\nimport { XTableHeadComponent } from './table-head.component';\r\nimport { XTableBodyComponent } from './table-body.component';\r\nimport { XTableFootComponent } from './table-foot.component';\r\n\r\n@NgModule({\r\n exports: [XTableComponent],\r\n imports: [XTableComponent, XTableHeadComponent, XTableBodyComponent, XTableFootComponent]\r\n})\r\nexport class XTableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-table.mjs","sources":["../../../../lib/ng-nest/ui/table/table.property.ts","../../../../lib/ng-nest/ui/table/table-head.component.ts","../../../../lib/ng-nest/ui/table/table-head.component.html","../../../../lib/ng-nest/ui/table/table-foot.component.ts","../../../../lib/ng-nest/ui/table/table-foot.component.html","../../../../lib/ng-nest/ui/table/table-body.component.ts","../../../../lib/ng-nest/ui/table/table-body.component.html","../../../../lib/ng-nest/ui/table/table.component.ts","../../../../lib/ng-nest/ui/table/table.component.html","../../../../lib/ng-nest/ui/table/table.module.ts","../../../../lib/ng-nest/ui/table/ng-nest-ui-table.ts"],"sourcesContent":["import {\r\n XProperty,\r\n XPropertyFunction,\r\n XToCssPixelValue,\r\n XToBoolean,\r\n XToNumber,\r\n XToDataConvert\r\n} from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input, model, output } from '@angular/core';\r\nimport { XPaginationInputIndexSizeSureType, XPaginationSizeData } from '@ng-nest/ui/pagination';\r\nimport { XSelectNode } from '@ng-nest/ui/select';\r\nimport type {\r\n XNumber,\r\n XSort,\r\n XBoolean,\r\n XData,\r\n XTextAlign,\r\n XSize,\r\n XParentIdentityProperty,\r\n XIdentityProperty,\r\n XTemplate,\r\n XQuery,\r\n XDataArray\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Table\r\n * @selector x-table\r\n * @decorator component\r\n */\r\nexport const XTablePrefix = 'x-table';\r\nconst X_TABLE_CONFIG_NAME = 'table';\r\n\r\n/**\r\n * Table Property\r\n */\r\n@Component({ selector: `${XTablePrefix}-property`, template: '' })\r\nexport class XTableProperty extends XPropertyFunction(X_TABLE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n readonly data = input<XData<XTableRow>, XData<XTableRow>>([], { transform: XToDataConvert });\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n readonly columns = input<XTableColumn[]>([]);\r\n /**\r\n * @zh_CN 表头和行高,单位 px\r\n * @en_US Header and row height, unit px\r\n */\r\n readonly rowHeight = input<number, XNumber>(this.config?.rowHeight ?? 42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 是否启用加载 loading\r\n * @en_US Whether to enable loading\r\n */\r\n readonly loading = input<boolean, XBoolean>(this.config?.loading ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否展示列边框\r\n * @en_US Whether to show column borders\r\n */\r\n readonly bordered = input<boolean, XBoolean>(this.config?.bordered ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否显示列头\r\n * @en_US Whether to display the column headers\r\n */\r\n readonly showHeader = input<boolean, XBoolean>(this.config?.showHeader ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 列头显示位置\r\n * @en_US Whether to display the column headers\r\n */\r\n readonly headerPosition = input<XTableHeaderPosition>(this.config?.headerPosition ?? 'top');\r\n /**\r\n * @zh_CN 列内容支持 innerHTML 渲染 html 标签\r\n * @en_US Column content supports innerHTML rendering of HTML tags\r\n */\r\n readonly bodyInnerHTML = input<boolean, XBoolean>(this.config?.bodyInnerHTML ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n readonly activatedRow = model<XTableRow>();\r\n /**\r\n * @zh_CN 列头自定义模板,通过 key-value 的方式指定每列的模版\r\n * @en_US Column header custom template\r\n */\r\n readonly headColumnTpl = input<XTableTemplate>({});\r\n /**\r\n * @zh_CN 列头单元格自定义模板,优先级低于列头自定义模板\r\n * @en_US Column header custom template\r\n */\r\n readonly headThTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 列内容自定义模板,通过 key-value 的方式指定每列的模版\r\n * @en_US Column content custom template\r\n */\r\n readonly bodyColumnTpl = input<XTableTemplate>({});\r\n /**\r\n * @zh_CN 单元格的自定义模板,优先级低于列内容自定义模板\r\n * @en_US Custom template of cells\r\n */\r\n readonly bodyTdTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 行条件样式\r\n * @en_US Row condition class\r\n */\r\n readonly rowClass = input<(row: XTableRow, index: number) => { [className: string]: boolean }>();\r\n /**\r\n * @zh_CN 列头搜索自定义模板\r\n * @en_US Line head search custom template\r\n */\r\n readonly headSearchTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 排序点击的事件\r\n * @en_US Sort click events\r\n */\r\n readonly sortChange = output<XSort[]>();\r\n /**\r\n * @zh_CN 列头 checkbox 事件\r\n * @en_US head checkbox event\r\n */\r\n readonly headCheckboxChange = output<XTableHeadCheckbox>();\r\n /**\r\n * @zh_CN body checkbox 事件\r\n * @en_US head checkbox event\r\n */\r\n readonly bodyCheckboxChange = output<XTableRow>();\r\n /**\r\n * @zh_CN 允许行点击选中当前行\r\n * @en_US Allow row click to select\r\n */\r\n readonly allowSelectRow = input<boolean, XBoolean>(this.config?.allowSelectRow ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 允许行点击选中 checkbox\r\n * @en_US Allow lines to click checkbox\r\n */\r\n readonly allowCheckRow = input<boolean, XBoolean>(this.config?.allowCheckRow ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(this.config?.virtualScroll ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN body 数据高度,只有开启虚拟滚动的时候生效\r\n * @en_US body data height\r\n */\r\n readonly bodyHeight = input<number | undefined, XNumber>(undefined, { transform: XToNumber });\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(this.config?.itemSize ?? 42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 自适应高度,table 高度等于屏幕高度减掉此处设置的数值\r\n * @en_US Adaptive height, table height is equal to the screen height minus the value set here\r\n */\r\n readonly adaptionHeight = input<number | undefined, XNumber>(undefined, { transform: XToNumber });\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n readonly docPercent = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN checkbox 列初始选中的数据,列中激活 checkbox\r\n * @en_US Checkbox column initially selected data, checkbox is activated in column\r\n */\r\n readonly checkedRow = input<{ [property: string]: any[] }>({});\r\n /**\r\n * @zh_CN 如果 data 是函数类型,可以通过此参数控制请求,常用于弹框中的表格,弹出后再请求\r\n * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n */\r\n readonly manual = model<boolean>(true);\r\n /**\r\n * @zh_CN 滚动区域高宽\r\n * @en_US Height and width of rolling area\r\n */\r\n readonly scroll = input<{ x: number; y: number }>();\r\n /**\r\n * @zh_CN 表格页头\r\n * @en_US Table header\r\n */\r\n readonly header = input<XTemplate>();\r\n /**\r\n * @zh_CN 表格页尾\r\n * @en_US Table footer\r\n */\r\n readonly footer = input<XTemplate>();\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell config\r\n */\r\n readonly cellConfig = input<XTableCellConfig>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly rowSize = input<XSize>(this.config?.rowSize ?? 'medium');\r\n /**\r\n * @zh_CN 分页器位置\r\n * @en_US Pagination position\r\n */\r\n readonly paginationPosition = input<XPaginationPosition>('bottom-left');\r\n /**\r\n * @zh_CN 隐藏表格外边框\r\n * @en_US Hidden table wrap border\r\n */\r\n readonly hiddenWrapBorder = input<boolean, XBoolean>(this.config?.hiddenWrapBorder ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @deprecated useless\r\n * @zh_CN 隐藏分页器按钮边框\r\n * @en_US Hidden pagination button border\r\n */\r\n readonly hiddenPaginationBorder = input<boolean, XBoolean>(this.config?.hiddenPaginationBorder ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 显示分页器\r\n * @en_US Pagination position\r\n */\r\n readonly showPagination = input<boolean, XBoolean>(this.config?.showPagination ?? true, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 树形表格\r\n * @en_US Tree table\r\n */\r\n readonly treeTable = input<boolean, XBoolean>(this.config?.treeTable ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 树形表格展开所有节点\r\n * @en_US Tree table\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(this.config?.expandedAll ?? false, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 默认展开的层级,-1 不展开\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(this.config?.expandedLevel ?? -1, {\r\n transform: XToNumber\r\n });\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = input<any[]>([]);\r\n /**\r\n * @zh_CN 自定义展开内容\r\n * @en_US Customized expansion content\r\n */\r\n readonly expandTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 显示数据为空的提示\r\n * @en_US Display a prompt with empty data\r\n */\r\n readonly showEmpty = input<boolean, XBoolean>(this.config?.showEmpty ?? true, {\r\n transform: XToBoolean\r\n });\r\n /**\r\n * @zh_CN 数据为空的提示图片地址或自定义模板\r\n * @en_US Picture address or custom template\r\n */\r\n readonly emptyImg = input<XTemplate | undefined>(this.config?.emptyImg ?? undefined);\r\n /**\r\n * @zh_CN 数据为空的提示内容或自定义模板\r\n * @en_US Content or custom template\r\n */\r\n readonly emptyContent = input<XTemplate | undefined>(this.config?.emptyContent ?? undefined);\r\n /**\r\n * @zh_CN 当前页码\r\n * @en_US Current page number\r\n */\r\n readonly index = model<number>(this.config?.index ?? 1);\r\n /**\r\n * @zh_CN 每页显示条数\r\n * @en_US Number of items displayed per page\r\n */\r\n readonly size = model<number>(this.config?.size ?? 10);\r\n /**\r\n * @zh_CN 总数\r\n * @en_US Total\r\n */\r\n readonly total = model<number>(0);\r\n /**\r\n * @zh_CN 查询条件\r\n * @en_US Query conditions\r\n */\r\n readonly query = model<XQuery>({});\r\n /**\r\n * @zh_CN 最多显示的分页数量\r\n * @en_US The largest number of pages display\r\n */\r\n readonly pageLinkSize = input<number, XNumber>(this.config?.pageLinkSize ?? 5, { transform: XToNumber });\r\n /**\r\n * @zh_CN 显示首尾页跳转\r\n * @en_US Display the first and last page\r\n */\r\n readonly showEllipsis = input<boolean, XBoolean>(this.config?.showEllipsis ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示总条数\r\n * @en_US Display the total\r\n */\r\n readonly showTotal = input<boolean, XBoolean>(this.config?.showTotal ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 按钮间距\r\n * @en_US Button spacing\r\n */\r\n readonly space = input<string, XNumber>(this.config?.space ?? '0.25rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 添加背景色\r\n * @en_US Show background\r\n */\r\n readonly showBackground = input<boolean, XBoolean>(this.config?.showBackground ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示分页条数\r\n * @en_US Show size\r\n */\r\n readonly showSize = input<boolean, XBoolean>(this.config?.showSize ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 分页条数选择框的宽度\r\n * @en_US size with select\r\n */\r\n readonly sizeWidth = input<string, XNumber>(this.config?.sizeWidth ?? '6.875rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 显示输入分页条数(不能跟下拉选项同时使用)\r\n * @en_US Display the number of input page breaks (cannot exist with the drop-down options of page breaks)\r\n */\r\n readonly showInputSize = input<boolean, XBoolean>(this.config?.showInputSize ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示输入分页框的 tooltip 提示信息,默认显示\r\n * @en_US show enter the tooltip prompt information for the pagination box, which will be displayed by default based on the confirmation of the input\r\n */\r\n readonly showInputSizeTooltipText = input<boolean, XBoolean>(this.config?.showInputSizeTooltipText ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 输入分页框的 tooltip 提示信息,默认根据输入确认改变的方式来显示\r\n * @en_US Enter the tooltip prompt information for the pagination box, which will be displayed by default based on the confirmation of the input\r\n */\r\n readonly inputSizeTooltipText = input<string>(this.config?.inputSizeTooltipText ?? '');\r\n /**\r\n * @zh_CN 分页条数输入框的宽度\r\n * @en_US size with input\r\n */\r\n readonly inputSizeWidth = input<string, XNumber>(this.config?.sizeWidth ?? '3.125rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 分页选择的数据项\r\n * @en_US Paging choose items of data\r\n */\r\n readonly sizeData = input<XDataArray<XSelectNode>>(this.config?.sizeData ?? XPaginationSizeData);\r\n /**\r\n * @zh_CN 禁用整个分页\r\n * @en_US disabled\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示跳转输入框\r\n * @en_US Show size\r\n */\r\n readonly showJump = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示跳转输入框的 tooltip 提示信息,默认显示\r\n * @en_US Show the tooltip prompt information for jumping to the input box is displayed by default based on the confirmation of input changes\r\n */\r\n readonly showJumpTooltipText = input<boolean, XBoolean>(this.config?.showJumpTooltipText ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 跳转输入框的 tooltip 提示信息,默认根据输入确认改变的方式来显示\r\n * @en_US The tooltip prompt information for jumping to the input box is displayed by default based on the confirmation of input changes\r\n */\r\n readonly jumpTooltipText = input<string>(this.config?.jumpTooltipText ?? '');\r\n /**\r\n * @zh_CN 跳转页的宽度\r\n * @en_US size with\r\n */\r\n readonly jumpWidth = input<string, XNumber>(this.config?.jumpWidth ?? '3.125rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 总数自定义模板\r\n * @en_US Total template\r\n */\r\n readonly totalTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 简单分页\r\n * @en_US Simple\r\n */\r\n readonly simple = input<boolean, XBoolean>(this.config?.simple ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 简单分页输入框宽度\r\n * @en_US Simple index with\r\n */\r\n readonly simpleIndexWidth = input<string, XNumber>(this.config?.simpleIndexWidth ?? '8.125rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 输入确认改变的方式,针对输入分页大小和输入跳转页\r\n * @en_US The method for confirming changes in input is based on the input page size and input jump page\r\n */\r\n readonly inputIndexSizeSureType = input<XPaginationInputIndexSizeSureType>(\r\n this.config?.inputIndexSizeSureType ?? 'enter'\r\n );\r\n /**\r\n * @zh_CN 行点击事件\r\n * @en_US Row click event\r\n */\r\n readonly rowClick = output<XTableRow>();\r\n /**\r\n * @zh_CN 列头拖动开始事件,返回拖动的列\r\n * @en_US Column Header Drag End Event\r\n */\r\n readonly columnDragStarted = output<XTableColumn>();\r\n /**\r\n * @zh_CN 列头拖动结束事件,返回拖动的列\r\n * @en_US The column header is dragging, and the event is triggered when the order is changed\r\n */\r\n readonly columnDragEnded = output<XTableColumn>();\r\n /**\r\n * @zh_CN 当用户把一个条目投放进该容器时就会触发,拖动放开的事件,返回拖动排序后的列数据\r\n * @en_US The column header is dragging, and the event is triggered when the order is changed\r\n */\r\n readonly columnDropListDropped = output<XTableColumn[]>();\r\n /**\r\n * @zh_CN 开始拖动列宽的事件\r\n * @en_US Event to started drag column width\r\n */\r\n readonly columnDragWidthStarted = output<XTableDragWidthEvent>();\r\n /**\r\n * @zh_CN 正在拖动列宽时的事件\r\n * @en_US Event to moved drag column width\r\n */\r\n readonly columnDragWidthMoved = output<XTableDragWidthEvent>();\r\n /**\r\n * @zh_CN 结束拖动列宽的事件\r\n * @en_US Event to ended drag column width\r\n */\r\n readonly columnDragWidthEnded = output<XTableDragWidthEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\nexport interface XTableRow extends XParentIdentityProperty<XTableRow> {\r\n /**\r\n * @zh_CN 展开\r\n * @en_US Unfold\r\n */\r\n expanded?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 列参数\r\n * @en_US Column parameter\r\n */\r\nexport interface XTableColumn extends XIdentityProperty {\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\n type?: XColumnType;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n */\r\n width?: number;\r\n /**\r\n * @zh_CN flex 布局宽度\r\n * @en_US Flex layout width\r\n */\r\n flex?: number;\r\n /**\r\n * @zh_CN 查询字段\r\n * @en_US Query field\r\n */\r\n search?: boolean;\r\n /**\r\n * @zh_CN 排序字段\r\n * @en_US Sort field\r\n */\r\n sort?: boolean;\r\n /**\r\n * @zh_CN 固定列,距离左边的距离\r\n * @en_US Fixed column, distance from left\r\n */\r\n left?: number;\r\n /**\r\n * @zh_CN 固定列,距离右边的距离\r\n * @en_US Fixed column, distance from right\r\n */\r\n right?: number;\r\n /**\r\n * @zh_CN 操作按钮\r\n * @en_US Operation button\r\n */\r\n action?: boolean;\r\n /**\r\n * @zh_CN type 为 checkbox 时绑定行点击选中事件\r\n * @en_US Bind row click selection event when type is checkbox\r\n */\r\n rowChecked?: boolean;\r\n /**\r\n * @zh_CN type 为 expand 时绑定行点击展开事件\r\n * @en_US Bind row click selection event when type is expand\r\n */\r\n rowExpand?: boolean;\r\n /**\r\n * @zh_CN 文字对齐方式\r\n * @en_US Text alignment\r\n */\r\n textAlign?: XTextAlign;\r\n /**\r\n * @zh_CN 拖动列宽,需要设置列的初始宽度 width\r\n * @en_US Drag the column width, you need to set the initial width of the column width\r\n */\r\n dragWidth?: boolean;\r\n /**\r\n * @zh_CN 正在拖动列宽\r\n * @en_US Dragging width\r\n */\r\n draggingWidth?: boolean;\r\n /**\r\n * @zh_CN 开始拖动列宽的事件\r\n * @en_US Event to started drag column width\r\n */\r\n dragWidthStarted?: (event: XTableDragWidthEvent) => void;\r\n /**\r\n * @zh_CN 正在拖动列宽时的事件\r\n * @en_US Event to moved drag column width\r\n */\r\n dragWidthMoved?: (event: XTableDragWidthEvent) => void;\r\n /**\r\n * @zh_CN 结束拖动列宽的事件\r\n * @en_US Event to ended drag column width\r\n */\r\n dragWidthEnded?: (event: XTableDragWidthEvent) => void;\r\n /**\r\n * @zh_CN 拖动列\r\n * @en_US Drag the column\r\n */\r\n dragColumn?: boolean;\r\n /**\r\n * @zh_CN 正在拖动列\r\n * @en_US Dragging column\r\n */\r\n dragging?: boolean;\r\n /**\r\n * @zh_CN 头部显示 checkbox\r\n * @en_US Head shows checkbox\r\n */\r\n headChecked?: boolean;\r\n /**\r\n * @zh_CN 头部显示 expand\r\n * @en_US Head shows expand\r\n */\r\n headExpand?: boolean;\r\n /**\r\n * @zh_CN 列内容支持 innerHTML 渲染 html 标签\r\n * @en_US Column content supports innerHTML rendering of HTML tags\r\n */\r\n innerHTML?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 列头宽度拖动事件\r\n * @en_US Column header width drag event\r\n */\r\nexport interface XTableDragWidthEvent {\r\n /**\r\n * @zh_CN 拖动的列\r\n * @en_US Dragged column\r\n */\r\n column: XTableColumn;\r\n /**\r\n * @zh_CN 列位置,正在拖动的时候指偏移位置\r\n * @en_US The column position refers to the offset position when dragging\r\n */\r\n position: { x: number; y: number };\r\n}\r\n\r\n/**\r\n * @zh_CN 列头 checkbox 事件数据\r\n * @en_US Column header checkbox event data\r\n */\r\nexport interface XTableHeadCheckbox {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n rows: XTableRow[];\r\n /**\r\n * @zh_CN checkbox 数据\r\n * @en_US Checkbox data\r\n */\r\n checkbox: { [property: string]: boolean };\r\n}\r\n\r\n/**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell config\r\n */\r\nexport interface XTableCellConfig {\r\n /**\r\n * @zh_CN 列单元格配置\r\n * @en_US Column cell config\r\n */\r\n thead?: XTableCellConfigRule;\r\n /**\r\n * @zh_CN 行单元格配置\r\n * @en_US Row config\r\n */\r\n tbody?: XTableCellConfigRule;\r\n}\r\n\r\n/**\r\n * @zh_CN 单元格配置规则\r\n * @en_US Cell config rules\r\n */\r\nexport interface XTableCellConfigRule {\r\n /**\r\n * @zh_CN grid 布局下定义列宽度\r\n * @en_US Define column width under grid layout\r\n */\r\n gridTemplateColumns?: string;\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell merge rules\r\n */\r\n cells?: XTableCell[];\r\n}\r\n\r\n/**\r\n * @zh_CN 单元格合并配置\r\n * @en_US Cell merge rules\r\n */\r\nexport interface XTableCell {\r\n /**\r\n * @zh_CN 使用 grid 布局来合并单元格\r\n * @en_US Use grid layout to merge cells\r\n */\r\n gridArea?: string;\r\n /**\r\n * @zh_CN 名称\r\n * @en_US Name\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n */\r\n width?: number;\r\n /**\r\n * @zh_CN 固定列,距离左边的距离\r\n * @en_US Fixed column, distance from left\r\n */\r\n left?: number;\r\n /**\r\n * @zh_CN 固定列,距离右边的距离\r\n * @en_US Fixed column, distance from right\r\n */\r\n right?: number;\r\n /**\r\n * @zh_CN 对应列的 id\r\n * @en_US The id of the corresponding column\r\n */\r\n id?: string;\r\n /**\r\n * @zh_CN 拖动列宽\r\n * @en_US Drag the column width\r\n */\r\n dragWidth?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN 列类型\r\n * @en_US Column type\r\n */\r\nexport type XColumnType = 'label' | 'index' | 'checkbox' | 'expand';\r\n\r\n/**\r\n * @zh_CN 列头显示位置\r\n * @en_US Line head display position\r\n */\r\nexport type XTableHeaderPosition = 'top' | 'bottom' | 'top-bottom';\r\n\r\n/**\r\n * @zh_CN 分页器位置\r\n * @en_US Paging position\r\n */\r\nexport type XPaginationPosition =\r\n | 'top-left'\r\n | 'top-center'\r\n | 'top-right'\r\n | 'bottom-left'\r\n | 'bottom-center'\r\n | 'bottom-right';\r\n\r\n/**\r\n * @zh_CN 模板\r\n * @en_US Template\r\n */\r\nexport type XTableTemplate = { [property: string]: TemplateRef<any> };\r\n\r\n/**\r\n * Table Head\r\n * @selector x-table-head\r\n * @decorator component\r\n */\r\nexport const XTableHeadPrefix = 'x-table-head';\r\n\r\n/**\r\n * Table Head Property\r\n */\r\n@Component({ selector: `${XTableHeadPrefix}-property`, template: '' })\r\nexport class XTableHeadProperty extends XProperty {\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n readonly columns = input<XTableColumn[]>([]);\r\n /**\r\n * @zh_CN 高度,单位 px\r\n * @en_US Height in px\r\n */\r\n readonly rowHeight = input<number, XNumber>(42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly columnTpl = input<XTableTemplate>({});\r\n /**\r\n * @zh_CN 竖向滚动条宽度\r\n * @en_US Vertical scroll bar width\r\n */\r\n readonly scrollYWidth = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 横向滚动条宽度\r\n * @en_US Horizontal scroll bar width\r\n */\r\n readonly scrollXWidth = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 单元格配置\r\n * @en_US Cell merge rules\r\n */\r\n readonly cellConfig = input<XTableCellConfigRule>();\r\n /**\r\n * @zh_CN 显示的位置\r\n * @en_US Display position\r\n */\r\n readonly position = input<string>();\r\n}\r\n\r\n/**\r\n * Table Body\r\n * @selector x-table-body\r\n * @decorator component\r\n */\r\nexport const XTableBodyPrefix = 'x-table-body';\r\n\r\n/**\r\n * Table Body Property\r\n */\r\n@Component({ selector: `${XTableBodyPrefix}-property`, template: '' })\r\nexport class XTableBodyProperty extends XProperty {\r\n /**\r\n * @zh_CN 行数据\r\n * @en_US Row data\r\n */\r\n readonly data = input<XTableRow[]>([]);\r\n /**\r\n * @zh_CN 列集合\r\n * @en_US Column set\r\n */\r\n readonly columns = input<XTableColumn[]>([]);\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly columnTpl = input<XTableTemplate>({});\r\n /**\r\n * @zh_CN 当前选中行数据\r\n * @en_US Currently selected row data\r\n */\r\n readonly activatedRow = model<XTableRow>();\r\n /**\r\n * @zh_CN 高度,单位 px。设置为 0 表示行高自适应内容高度。\r\n * @en_US Height in px. set to 0 means that the row height is adaptive to the content height\r\n */\r\n readonly rowHeight = input<number, XNumber>(42, { transform: XToNumber });\r\n /**\r\n * @zh_CN body 数据高度\r\n * @en_US body data height\r\n */\r\n readonly bodyHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 允许行点击选中\r\n * @en_US Allow row click to select\r\n */\r\n readonly allowSelectRow = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n readonly virtualScroll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n readonly itemSize = input<number, XNumber>(42, { transform: XToNumber });\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly minBufferPx = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n readonly maxBufferPx = input<number, XNumber>(200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 自适应高度,table 高度等于屏幕高度减掉此处设置的数值\r\n * @en_US Adaptive height, table height is equal to the screen height minus the value set here\r\n */\r\n readonly adaptionHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n /**\r\n * @zh_CN 文档高度百分比,弹窗百分比高度用到\r\n * @en_US Document height percentage, used by pop-up window percentage height\r\n */\r\n readonly docPercent = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 滚动区域高宽\r\n * @en_US Height and width of rolling area\r\n */\r\n readonly scroll = input<{ x: number; y: number }>();\r\n /**\r\n * @zh_CN 单元格配置规则\r\n * @en_US Cell config rules\r\n */\r\n readonly cellConfig = input<XTableCellConfigRule>();\r\n /**\r\n * @zh_CN 行条件样式\r\n * @en_US Row condition class\r\n */\r\n readonly rowClass = input<(row: XTableRow, index: number) => { [className: string]: boolean }>();\r\n /**\r\n * @zh_CN 树形表格下的层级\r\n * @en_US The level under the tree table\r\n */\r\n readonly level = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 树形表格展开所有节点\r\n * @en_US Tree table\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义展开内容\r\n * @en_US Customized expansion content\r\n */\r\n readonly expandTpl = input<XTemplate>();\r\n /**\r\n * @zh_CN 行点击事件\r\n * @en_US Row click event\r\n */\r\n readonly rowClick = output<XTableRow>();\r\n}\r\n\r\n/**\r\n * Table Foot\r\n * @selector x-table-foot\r\n * @decorator component\r\n */\r\nexport const XTableFootPrefix = 'x-table-foot';\r\n\r\n/**\r\n * Table Foot Property\r\n */\r\n@Component({ selector: `${XTableFootPrefix}-property`, template: '' })\r\nexport class XTableFootProperty extends XProperty {\r\n /**\r\n * @zh_CN 表格页尾\r\n * @en_US Table footer\r\n */\r\n readonly footer = input<XTemplate>();\r\n /**\r\n * @zh_CN 表头和行高,单位 px\r\n * @en_US Header and row height, unit px\r\n */\r\n readonly rowHeight = input<number | null, XNumber>(null, { transform: XToNumber });\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ElementRef,\r\n inject,\r\n computed,\r\n viewChild,\r\n signal,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XTableHeadPrefix, XTableHeadProperty, XTableColumn, XTableCell, XTablePrefix } from './table.property';\r\nimport { XIsEmpty, XSort, XNumber, XIsFunction, XRemoveNgTag } from '@ng-nest/ui/core';\r\nimport { CdkDragDrop, CdkDragSortEvent, CdkDragStart, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { XDragDirective } from '@ng-nest/ui/drag';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XTableComponent } from './table.component';\r\n\r\n@Component({\r\n selector: `${XTableHeadPrefix}`,\r\n imports: [\r\n NgStyle,\r\n NgClass,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n XDragDirective,\r\n DragDropModule,\r\n XCheckboxComponent,\r\n XOutletDirective,\r\n XIconComponent\r\n ],\r\n templateUrl: './table-head.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class XTableHeadComponent extends XTableHeadProperty implements OnInit {\r\n table = inject(XTableComponent, { optional: true })!;\r\n cdr = inject(ChangeDetectorRef);\r\n\r\n thead = viewChild.required<ElementRef<HTMLElement>>('thead');\r\n sort = signal<XSort[]>([]);\r\n sortStr = signal('');\r\n theadStyle = computed(() => {\r\n let height = this.rowHeight() === 0 ? '' : this.rowHeight();\r\n if (this.cellConfig() && this.cellConfig()!.cells) {\r\n const spt = this.cellConfig()!.cells?.map((x) => {\r\n const gridAreaSpt = x.gridArea?.split('/');\r\n return gridAreaSpt && gridAreaSpt.length > 3 ? Number(gridAreaSpt[2]) : 2;\r\n });\r\n height = ((Math.max(...spt!) - 1) * (height as number)) as XNumber;\r\n }\r\n return {\r\n ['min-height']: `${this.getRowHeight()}px`\r\n };\r\n });\r\n thClassMap = computed(() => ({\r\n [`${XTablePrefix}-th-${this.table.rowSize()}`]: !XIsEmpty(this.table.rowSize())\r\n }));\r\n\r\n initColumns = computed(() => [...this.columns()]);\r\n getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));\r\n\r\n private elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n XRemoveNgTag(this.elementRef.nativeElement);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.theads.update((x) => {\r\n x.push(this.thead());\r\n return [...x];\r\n });\r\n }\r\n\r\n getFlex(column: XTableColumn) {\r\n if (column.width) return 'none';\r\n if (!column.flex) return 1;\r\n return column.flex;\r\n }\r\n\r\n getColumnRight(right?: number) {\r\n if (Number(right) >= 0) {\r\n if (Number(this.scrollYWidth()) >= 0) {\r\n return Number(right) + Number(this.scrollYWidth());\r\n }\r\n return Number(right);\r\n }\r\n return '';\r\n }\r\n\r\n getColumnWidth(column: XTableColumn) {\r\n return column.width;\r\n }\r\n\r\n onSort(column: XTableColumn) {\r\n if (!column.sort) return;\r\n if (XIsEmpty(this.sort())) this.sort.set([]);\r\n let sort = this.sort()!.find((y) => y.field === column.id);\r\n if (sort) {\r\n if (sort.value === 'asc') {\r\n this.sort.set([]);\r\n this.sortStr.set('');\r\n } else {\r\n sort.value = 'asc';\r\n }\r\n } else {\r\n sort = { field: column.id, value: 'desc' };\r\n this.sort.set([sort]);\r\n }\r\n if (!XIsEmpty(this.sort())) this.sortStr.set(`${sort.field} ${sort.value}`);\r\n this.table.checkSort(this.sort());\r\n this.table.sortChange.emit(this.sort());\r\n this.table.resetScroll(false, true);\r\n }\r\n\r\n dragWidthMoved(\r\n position: { x: number; y: number; offsetX: number; offsetY: number },\r\n column: XTableColumn | XTableCell\r\n ) {\r\n if (column.width) {\r\n (column.width as number) += position.offsetX;\r\n if (column.width < 60) column.width = 60;\r\n XIsFunction(column.dragWidthMoved) && column.dragWidthMoved({ position, column });\r\n this.table.columnDragWidthMoved.emit({ position, column });\r\n this.table.detectChanges();\r\n }\r\n }\r\n\r\n dragWidthStarted(position: { x: number; y: number }, column: XTableColumn | XTableCell) {\r\n column.draggingWidth = true;\r\n if (column.width && XIsFunction(column.dragWidthStarted)) {\r\n column.dragWidthStarted({ position, column });\r\n this.table.columnDragWidthStarted.emit({ position, column });\r\n }\r\n }\r\n\r\n dragWidthEnded(position: { x: number; y: number }, column: XTableColumn | XTableCell) {\r\n column.draggingWidth = false;\r\n if (column.width && XIsFunction(column.dragWidthEnded)) {\r\n column.dragWidthEnded({ position, column });\r\n this.table.columnDragWidthEnded.emit({ position, column });\r\n }\r\n }\r\n\r\n dropListDropped(event: CdkDragDrop<XTableColumn[]>) {\r\n const previous = this.initColumns()[event.previousIndex];\r\n const current = this.initColumns()[event.currentIndex];\r\n const middle = { left: previous.left, right: previous.right };\r\n previous.left = current.left;\r\n previous.right = current.right;\r\n current.left = middle.left;\r\n current.right = middle.right;\r\n moveItemInArray(this.initColumns(), event.previousIndex, event.currentIndex);\r\n this.table.columnDropListDropped.emit(this.initColumns());\r\n }\r\n\r\n dropListSorted(event: CdkDragSortEvent<XTableColumn[]>) {\r\n const previous = this.columns()[event.previousIndex];\r\n const current = this.columns()[event.currentIndex];\r\n const middle = { left: previous.left, right: previous.right };\r\n previous.left = current.left;\r\n previous.right = current.right;\r\n current.left = middle.left;\r\n current.right = middle.right;\r\n moveItemInArray(this.columns(), event.previousIndex, event.currentIndex);\r\n this.table.detectChanges();\r\n }\r\n\r\n dragStarted(_event: CdkDragStart, column: XTableColumn) {\r\n column.dragging = true;\r\n this.table.detectChanges();\r\n this.table.columnDragStarted.emit(column);\r\n }\r\n\r\n dragEnded(column: XTableColumn) {\r\n column.dragging = false;\r\n this.table.detectChanges();\r\n this.table.columnDragEnded.emit(column);\r\n }\r\n}\r\n","<thead\r\n #thead\r\n [ngStyle]=\"theadStyle()\"\r\n [class.x-table-head-top]=\"position() === 'top'\"\r\n [class.x-table-head-bottom]=\"position() === 'bottom'\"\r\n>\r\n @if (cellConfig()) {\r\n <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\" [style.min-height.px]=\"getRowHeight()\">\r\n @for (column of cellConfig()!.cells; track column.id) {\r\n <th\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [class.x-table-width-drag]=\"column.dragWidth\"\r\n [style.grid-area]=\"column.gridArea\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n [title]=\"column?.label\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n @if (column.dragWidth) {\r\n <div\r\n class=\"x-table-drag-width\"\r\n x-drag\r\n (dragMoved)=\"dragWidthMoved($event, column)\"\r\n (dragStarted)=\"dragWidthStarted($event, column)\"\r\n (dragEnded)=\"dragWidthEnded($event, column)\"\r\n ></div>\r\n }\r\n </th>\r\n }\r\n </tr>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"columnsTpl\"></ng-container>\r\n }\r\n @if (table.headSearchTpl()) {\r\n <ng-container *ngTemplateOutlet=\"columnsTpl; context: { case: 'search' }\"></ng-container>\r\n }\r\n</thead>\r\n\r\n<ng-template #columnsTpl let-case=\"case\">\r\n <tr\r\n cdkDropList\r\n cdkDropListOrientation=\"horizontal\"\r\n (cdkDropListSorted)=\"dropListSorted($event)\"\r\n (cdkDropListDropped)=\"dropListDropped($event)\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n [style.padding-right.px]=\"scrollYWidth()\"\r\n [style.min-width.px]=\"scrollXWidth()\"\r\n [class.x-table-search]=\"case === 'search'\"\r\n >\r\n @for (column of initColumns(); track column.id) {\r\n <th\r\n cdkDrag\r\n [cdkDragDisabled]=\"column.draggingWidth || !column.dragColumn\"\r\n (cdkDragStarted)=\"dragStarted($event, column)\"\r\n (cdkDragEnded)=\"dragEnded(column)\"\r\n [ngClass]=\"thClassMap()\"\r\n [class.x-table-th]=\"true\"\r\n [class.x-table-sticky]=\"table.getSticky(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n [style.width.px]=\"getColumnWidth(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"getColumnRight(column.right)\"\r\n [style.flex]=\"getFlex(column)\"\r\n >\r\n @switch (case) {\r\n @case ('search') {\r\n <ng-container *xOutlet=\"table.headSearchTpl()!; context: { $column: column }\"></ng-container>\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"columnBaseTpl; context: { column: column }\"></ng-container>\r\n @if (column.dragWidth) {\r\n <div\r\n class=\"x-table-drag-width\"\r\n x-drag\r\n (dragMoved)=\"dragWidthMoved($event, column)\"\r\n (dragStarted)=\"dragWidthStarted($event, column);\"\r\n (dragEnded)=\"dragWidthEnded($event, column)\"\r\n ></div>\r\n }\r\n }\r\n }\r\n </th>\r\n }\r\n </tr>\r\n</ng-template>\r\n\r\n<ng-template #columnBaseTpl let-column=\"column\">\r\n @switch (column.type) {\r\n @case ('checkbox') {\r\n @if (column.headChecked) {\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: column.label }]\"\r\n [(ngModel)]=\"table.checkedValues()[column.id]\"\r\n (ngModelChange)=\"table.headChecked($event, column)\"\r\n [indeterminate]=\"table.checkedValues()[column.id + table.indeterminate()]\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (!column.headChecked) {\r\n <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n }\r\n }\r\n @case ('index') {\r\n <a\r\n ><ng-container *xOutlet=\"columnTpl()[column.id]; context: { $column: column }\">\r\n <ng-container *xOutlet=\"table.headThTpl(); context: { $column: column }\">\r\n {{ column.label }}\r\n </ng-container>\r\n </ng-container></a\r\n >\r\n }\r\n @default {\r\n <ng-container *ngTemplateOutlet=\"cloumnDefaultTpl; context: { column: column }\"></ng-container>\r\n }\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cloumnDefaultTpl let-column=\"column\">\r\n <a [class.x-table-sort]=\"column.sort\" (click)=\"onSort(column)\" [style.text-align]=\"column.textAlign\">\r\n <ng-container *xOutlet=\"columnTpl()[column.id]; context: { $column: column }\">\r\n <ng-container *xOutlet=\"table.headThTpl(); context: { $column: column }\">\r\n {{ column.label }}\r\n </ng-container>\r\n </ng-container>\r\n @if (column.sort) {\r\n <x-icon\r\n type=\"fto-bar-chart\"\r\n class=\"x-table-sort-icon\"\r\n [class.x-table-icon-up]=\"sortStr() === column.id + ' desc'\"\r\n [class.x-table-icon-down]=\"sortStr() === column.id + ' asc'\"\r\n ></x-icon>\r\n }\r\n </a>\r\n</ng-template>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n computed,\r\n viewChild,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XTableFootPrefix, XTableFootProperty } from './table.property';\r\nimport { XRemoveNgTag } from '@ng-nest/ui/core';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XTableComponent } from './table.component';\r\n\r\n@Component({\r\n selector: `${XTableFootPrefix}`,\r\n imports: [XOutletDirective],\r\n templateUrl: './table-foot.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableFootComponent extends XTableFootProperty implements OnInit {\r\n tfoot = viewChild.required<ElementRef<HTMLElement>>('tfoot');\r\n table = inject(XTableComponent, { optional: true })!;\r\n cdr = inject(ChangeDetectorRef);\r\n getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));\r\n private elementRef = inject(ElementRef);\r\n\r\n ngOnInit() {\r\n XRemoveNgTag(this.elementRef.nativeElement);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.tfoot.set(this.tfoot());\r\n }\r\n}\r\n","<tfoot #tfoot class=\"x-table-footer\" [style.height.px]=\"getRowHeight()!\" [style.min-height.px]=\"getRowHeight()\">\r\n <ng-container *xOutlet=\"footer()\">{{ footer() }}</ng-container>\r\n</tfoot>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n inject,\r\n computed,\r\n viewChild,\r\n signal,\r\n effect,\r\n AfterViewInit,\r\n AfterViewChecked\r\n} from '@angular/core';\r\nimport { XTableBodyPrefix, XTableBodyProperty, XTableRow, XTableColumn, XTableCell } from './table.property';\r\nimport { XRemoveNgTag, XResize, XNumber, XStripTags, XParentPath, XResizeObserver } from '@ng-nest/ui/core';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { DOCUMENT, NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { XEmptyComponent } from '@ng-nest/ui/empty';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XTableComponent } from './table.component';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { XInnerHTMLComponent } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XTableBodyPrefix}`,\r\n imports: [\r\n NgClass,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n XEmptyComponent,\r\n ScrollingModule,\r\n XOutletDirective,\r\n XCheckboxComponent,\r\n XButtonComponent,\r\n XInnerHTMLComponent\r\n ],\r\n templateUrl: './table-body.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableBodyComponent extends XTableBodyProperty implements OnInit, AfterViewInit, AfterViewChecked {\r\n renderer = inject(Renderer2);\r\n elementRef = inject(ElementRef<HTMLElement>);\r\n cdr = inject(ChangeDetectorRef);\r\n tbody = viewChild.required<ElementRef<HTMLElement>>('tbody');\r\n virtualBody = viewChild(CdkVirtualScrollViewport);\r\n table = inject(XTableComponent, { optional: true })!;\r\n private doc = inject(DOCUMENT);\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n private domSanitizer = inject(DomSanitizer);\r\n tbodyStyle = signal<{ [property: string]: any }>({});\r\n\r\n isEmpty = computed(() => this.data().length === 0);\r\n getRowHeight = computed(() => (this.rowHeight() == 0 ? '' : this.rowHeight()));\r\n getItemSize = computed(() =>\r\n this.rowHeight() !== 0 && this.itemSize() > this.rowHeight() ? this.rowHeight() : this.itemSize()\r\n );\r\n docClientHeight = signal(this.doc.documentElement.clientHeight);\r\n headHeight = signal(0);\r\n captionHeight = signal(0);\r\n footHeight = signal(0);\r\n paginationHeight = signal(0);\r\n\r\n bodyHeightSignal = computed(() => {\r\n const adaptionHeight = this.adaptionHeight();\r\n if (adaptionHeight && adaptionHeight > 0) {\r\n let bodyHeight =\r\n this.docPercent() * this.docClientHeight() -\r\n this.captionHeight() -\r\n this.headHeight() -\r\n this.footHeight() -\r\n this.paginationHeight() -\r\n adaptionHeight;\r\n if (bodyHeight < 0) bodyHeight = 0;\r\n return bodyHeight;\r\n }\r\n if (this.scroll()?.y && !this.bodyHeight()) {\r\n return this.scroll()!.y;\r\n }\r\n return this.bodyHeight();\r\n });\r\n\r\n minBufferPxSignal = computed(() => {\r\n const adaptionHeight = this.adaptionHeight();\r\n if (adaptionHeight && adaptionHeight > 0) {\r\n return this.bodyHeightSignal();\r\n }\r\n return this.minBufferPx();\r\n });\r\n\r\n maxBufferPxSignal = computed(() => {\r\n const adaptionHeight = this.adaptionHeight();\r\n if (adaptionHeight && adaptionHeight > 0) {\r\n return this.bodyHeightSignal()! * 1.2;\r\n }\r\n return this.maxBufferPx();\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.virtualBody()) {\r\n this.virtualBody()!['_scrollStrategy']['_minBufferPx'] = this.minBufferPxSignal();\r\n }\r\n });\r\n effect(() => {\r\n if (this.virtualBody()) {\r\n this.virtualBody()!['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPxSignal();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n XRemoveNgTag(this.elementRef.nativeElement);\r\n if (this.level() > 0) XRemoveNgTag(this.tbody().nativeElement);\r\n\r\n fromEvent(this.doc.defaultView!, 'resize')\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.docClientHeight.set(this.doc.documentElement.clientHeight);\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.table.virtualBody.set(this.virtualBody()!);\r\n this.docClientHeight.set(this.doc.documentElement.clientHeight);\r\n this.setSubject();\r\n this.setScroll();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n let headHeight = 0;\r\n for (let thead of this.table.theads()) {\r\n headHeight += thead.nativeElement.clientHeight;\r\n }\r\n this.headHeight.set(headHeight);\r\n const captionHeight = this.table.caption()?.nativeElement.clientHeight || 0;\r\n this.captionHeight.set(captionHeight);\r\n const footHeight = this.table.tfoot()?.nativeElement.clientHeight || 0;\r\n this.footHeight.set(footHeight);\r\n const paginationHeight = this.table.pagination()?.elementRef.nativeElement.clientHeight || 0;\r\n this.paginationHeight.set(paginationHeight);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n setSubject() {\r\n if (this.virtualBody()) {\r\n this.table.scrollContentEle.set(\r\n this.virtualBody()!.elementRef.nativeElement.querySelector('.cdk-virtual-scroll-content-wrapper') as HTMLElement\r\n );\r\n if (this.scroll()?.x) {\r\n this.renderer.setStyle(this.table.scrollContentEle()!, 'width', `${this.scroll()?.x}px`);\r\n }\r\n XResize(this.table.table().nativeElement, this.table.scrollContentEle()!)\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n this.resizeObserver = x.resizeObserver;\r\n this.setScroll();\r\n });\r\n }\r\n if (this.table.scrollContentEle()) {\r\n fromEvent(this.virtualBody()!.elementRef.nativeElement, 'scroll')\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n const ele = x.srcElement as HTMLElement;\r\n this.table.scrollTop.set(ele.scrollTop);\r\n this.table.scrollLeft.set(ele.scrollLeft);\r\n if (ele.scrollLeft >= 0 && this.table.theads().length > 0) {\r\n for (let thead of this.table.theads()) {\r\n thead.nativeElement.scrollLeft = this.table.scrollLeft();\r\n }\r\n }\r\n this.table.scrollLeftMax.set(ele.scrollLeft + ele.clientWidth === ele.scrollWidth);\r\n });\r\n }\r\n }\r\n\r\n setScroll() {\r\n if (!this.virtualBody()) return;\r\n const ele = this.virtualBody()!.elementRef.nativeElement;\r\n const hasY = ele.scrollHeight > this.bodyHeightSignal()!;\r\n const hasX = this.table.scrollContentEle()!.clientWidth > ele.clientWidth;\r\n\r\n if (!this.table.hasScrollY() && hasY) {\r\n this.table.hasScrollY.set(true);\r\n this.table.scrollYWidth.set(ele.offsetWidth - ele.clientWidth);\r\n } else if (this.table.hasScrollY() && !hasY) {\r\n this.table.hasScrollY.set(false);\r\n this.table.scrollYWidth.set(0);\r\n }\r\n\r\n if (!this.table.hasScrollX() && hasX) {\r\n this.table.hasScrollX.set(true);\r\n this.table.scrollXHeight.set(ele.offsetHeight - ele.clientHeight);\r\n } else if (this.table.hasScrollX() && !hasX) {\r\n this.table.hasScrollX.set(false);\r\n this.table.scrollXHeight.set(0);\r\n this.table.scrollXWidth.set(null);\r\n }\r\n if (hasX) {\r\n this.table.scrollXWidth.set(ele.offsetWidth + ele.scrollWidth - ele.clientWidth);\r\n }\r\n\r\n this.virtualBody()!.checkViewportSize();\r\n\r\n // this.table.cdr.detectChanges();\r\n }\r\n\r\n setStyle() {\r\n let height = this.rowHeight() === 0 ? '' : this.rowHeight();\r\n if (this.cellConfig() && this.cellConfig()!.cells) {\r\n const spt = this.cellConfig()!.cells?.map((x) => {\r\n const gridAreaSpt = x.gridArea?.split('/');\r\n return gridAreaSpt && gridAreaSpt.length > 3 ? Number(gridAreaSpt[2]) : 2;\r\n });\r\n height = ((Math.max(...spt!) - 1) * (height as number)) as XNumber;\r\n }\r\n this.tbodyStyle.set({\r\n height: `${height}px`\r\n });\r\n }\r\n\r\n setDomSanitizer(str: string) {\r\n return this.domSanitizer.bypassSecurityTrustHtml(str);\r\n }\r\n\r\n getIndex(index: number, item: XTableRow) {\r\n if (!isNaN(index)) return index;\r\n return this.data().indexOf(item);\r\n }\r\n\r\n getFlex(column: XTableColumn) {\r\n if (column.width) return 'none';\r\n if (!column.flex) return 1;\r\n return column.flex;\r\n }\r\n\r\n getTitle(row: XTableRow, column: XTableCell | any) {\r\n let it = row[column.id as string];\r\n return it ? XStripTags(it) : '';\r\n }\r\n\r\n onRowClick(event: Event, row: XTableRow) {\r\n if (row.disabled) return;\r\n if (this.table.allowCheckRow() && this.table.rowChecked()) {\r\n if (!XParentPath(event.target as HTMLElement).includes('x-checkbox')) {\r\n row[this.table.rowChecked()!.id] = !row[this.table.rowChecked()!.id];\r\n this.table.bodyChecked(row[this.table.rowChecked()!.id], this.table.rowChecked()!, row);\r\n }\r\n }\r\n this.activatedRow.set(row);\r\n this.rowClick.emit(row);\r\n }\r\n\r\n onExpanded(_event: Event, node: XTableRow) {\r\n node.expanded = !node.expanded;\r\n // this.cdr.detectChanges();\r\n }\r\n\r\n trackByItem(_index: number, item: XTableRow | XTableColumn) {\r\n return item.id;\r\n }\r\n}\r\n","<tbody #tbody>\r\n @if (cellConfig()) {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr [style.gridTemplateColumns]=\"cellConfig()!.gridTemplateColumns\">\r\n @for (column of cellConfig()!.cells; track column; let j = $index) {\r\n <td\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [style.grid-area]=\"column.gridArea\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-container>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n } @else {\r\n @if (virtualScroll()) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"getItemSize()\"\r\n [minBufferPx]=\"minBufferPxSignal()\"\r\n [maxBufferPx]=\"maxBufferPxSignal()\"\r\n [style.height.px]=\"bodyHeightSignal()\"\r\n >\r\n <tr\r\n *cdkVirtualFor=\"let row of data(); let index = index; trackBy: trackByItem\"\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <!-- rowHeight 为 0 的时候,index 下标获取不到 -->\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: getIndex(index, row) }\"></ng-container>\r\n </tr>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n @for (row of data(); track row.id; let i = $index) {\r\n <tr\r\n [class.x-table-activated]=\"allowSelectRow() && activatedRow()?.id === row.id\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n (click)=\"onRowClick($event, row)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"rowTpl; context: { row: row, i: i }\"></ng-container>\r\n </tr>\r\n @if (table.treeTable() && row.children && row.expanded) {\r\n <div class=\"x-table-children\" [class.x-table-expandTpl]=\"expandTpl()\">\r\n <x-table-body\r\n [data]=\"row.children\"\r\n [columns]=\"table.columns()\"\r\n [itemSize]=\"table.itemSize()\"\r\n [rowHeight]=\"table.rowHeight()\"\r\n [columnTpl]=\"table.bodyColumnTpl()\"\r\n [allowSelectRow]=\"table.allowSelectRow()\"\r\n [rowClass]=\"table.rowClass()\"\r\n [cellConfig]=\"table.cellConfig()?.tbody\"\r\n [(activatedRow)]=\"table.activatedRow\"\r\n [expandedAll]=\"expandedAll()\"\r\n [expandTpl]=\"expandTpl()\"\r\n [level]=\"row.level! + 1\"\r\n ></x-table-body>\r\n </div>\r\n }\r\n }\r\n }\r\n }\r\n @if (table.showEmpty() && isEmpty() && level() === 0) {\r\n <x-empty [img]=\"table.emptyImg()!\" [content]=\"table.emptyContent()!\"></x-empty>\r\n }\r\n</tbody>\r\n\r\n<ng-template #rowTpl let-row=\"row\" let-i=\"i\">\r\n @if (level() > 0 && expandTpl()) {\r\n <ng-container *xOutlet=\"expandTpl(); context: { $row: row, $index: i, $level: level() }\"></ng-container>\r\n } @else if (level() === 0 || !expandTpl()) {\r\n <ng-container *xOutlet=\"rowDefault; context: { row: row, i: i, level: level() }\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #rowDefault let-row=\"row\" let-i=\"i\">\r\n @for (column of columns(); track column.id; let j = $index) {\r\n <td\r\n [style.width.px]=\"column.width\"\r\n [style.flex]=\"getFlex(column)\"\r\n [title]=\"getTitle(row, column)\"\r\n [class.x-table-dragging]=\"column.dragging\"\r\n [class.x-table-sticky]=\"table.getStickyLeft(column) || table.getStickyRight(column)\"\r\n [class.x-table-sticky-left]=\"table.getStickyLeft(column)\"\r\n [class.x-table-sticky-right]=\"table.getStickyRight(column)\"\r\n [class.x-table-sticky-left-last]=\"table.getStickyLeftLast(column)\"\r\n [class.x-table-sticky-right-first]=\"table.getStickyRightFirst(column)\"\r\n [style.left.px]=\"column.left\"\r\n [style.right.px]=\"column.right\"\r\n [ngClass]=\"!rowClass() ? {} : rowClass()!(row, i)\"\r\n >\r\n <ng-template *ngTemplateOutlet=\"cellTpl; context: { column: column, row: row, i: i }\"></ng-template>\r\n </td>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #cellTpl let-column=\"column\" let-row=\"row\" let-i=\"i\">\r\n @switch (column.type) {\r\n @case ('checkbox') {\r\n <x-checkbox\r\n [data]=\"[{ id: true, label: '' }]\"\r\n [(ngModel)]=\"row[column.id]\"\r\n [disabled]=\"row.disabled\"\r\n (ngModelChange)=\"table.bodyChecked($event, column, row)\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @case ('index') {\r\n <div>{{ table.getIndex(i) }}</div>\r\n }\r\n @default {\r\n @if (table.isExpandColumn(column)) {\r\n <x-button\r\n [class.is-leaf]=\"!row.leaf\"\r\n [class.is-expanded]=\"row.expanded\"\r\n (click)=\"onExpanded($event, row)\"\r\n icon=\"fto-chevron-right\"\r\n size=\"mini\"\r\n onlyIcon\r\n flat\r\n plain\r\n class=\"x-table-expand\"\r\n [style.margin-left.rem]=\"row.level - 0.5\"\r\n ></x-button>\r\n }\r\n <ng-container\r\n *xOutlet=\"columnTpl()[column.id]; context: { $column: column, $row: row, $index: table.getIndex(i) }\"\r\n >\r\n <ng-container *xOutlet=\"table.bodyTdTpl(); context: { $column: column, $row: row, $index: table.getIndex(i) }\">\r\n @if ((table.bodyInnerHTML() && column.innerHTML !== false) || column.innerHTML) {\r\n <div x-inner-html [html]=\"row[column.id]\" [style]=\"{ textAlign: column.textAlign }\"></div>\r\n } @else {\r\n <div [style.text-align]=\"column.textAlign\">{{ row[column.id] }}</div>\r\n }\r\n {{ table.rowExpand() && table.rowExpand()!.id === column.id ? 'x-table-body-level-' + row.level : '' }}\r\n </ng-container>\r\n </ng-container>\r\n }\r\n }\r\n</ng-template>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnDestroy,\r\n computed,\r\n signal,\r\n viewChild,\r\n inject,\r\n viewChildren,\r\n AfterViewChecked,\r\n SimpleChange\r\n} from '@angular/core';\r\nimport {\r\n XTablePrefix,\r\n XTableProperty,\r\n XTableColumn,\r\n XTableRow,\r\n XTableCell,\r\n XTableCellConfigRule\r\n} from './table.property';\r\nimport { XIsChange, XIsEmpty, XResultList, XSort, XIsUndefined, XIsArray } from '@ng-nest/ui/core';\r\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { XPaginationComponent } from '@ng-nest/ui/pagination';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\nimport { NgClass } from '@angular/common';\r\nimport { XLoadingComponent } from '@ng-nest/ui/loading';\r\nimport { XTableHeadComponent } from './table-head.component';\r\nimport { XTableFootComponent } from './table-foot.component';\r\nimport { XTableBodyComponent } from './table-body.component';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n selector: `${XTablePrefix}`,\r\n imports: [\r\n NgClass,\r\n XOutletDirective,\r\n XLoadingComponent,\r\n XTableHeadComponent,\r\n XTableFootComponent,\r\n XTableBodyComponent,\r\n XPaginationComponent\r\n ],\r\n templateUrl: './table.component.html',\r\n styleUrls: ['./table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTableComponent extends XTableProperty implements OnInit, OnDestroy, AfterViewChecked {\r\n renderer = inject(Renderer2);\r\n elementRef = inject(ElementRef<HTMLElement>);\r\n cdr = inject(ChangeDetectorRef);\r\n unSubject = new Subject<void>();\r\n\r\n classMap = computed(() => ({ [`${XTablePrefix}-row-size-${this.rowSize()}`]: !XIsEmpty(this.rowSize()) }));\r\n theads = signal<ElementRef<HTMLElement>[]>([]);\r\n tfoot = signal<ElementRef<HTMLElement> | null>(null);\r\n virtualBody = signal<CdkVirtualScrollViewport | null>(null);\r\n theadsChange: (() => void)[] = [];\r\n bodyChange!: () => void;\r\n scrollContentEle = signal<HTMLElement | null>(null);\r\n hasScrollY = signal(false);\r\n scrollYWidth = signal(0);\r\n hasScrollX = signal(false);\r\n scrollXHeight = signal(0);\r\n scrollXWidth = signal<number | null>(null);\r\n scrollLeft = signal(0);\r\n scrollLeftMax = signal(false);\r\n scrollTop = signal(0);\r\n rowChecked = signal<XTableColumn | null>(null);\r\n headCheckboxList = signal<XTableColumn[]>([]);\r\n rowExpand = signal<XTableColumn | null>(null);\r\n headExpandList = signal<XTableColumn[]>([]);\r\n dataIsFunc = signal(false);\r\n getting = signal(false);\r\n tableData = signal<XTableRow[]>([]);\r\n treeTableData = signal<XTableRow[]>([]);\r\n checkedValues = signal<{ [prop: string]: boolean }>({});\r\n indeterminate = signal('$$indeterminate');\r\n table = viewChild.required<ElementRef<HTMLElement>>('table');\r\n caption = viewChild<ElementRef<HTMLElement>>('caption');\r\n pagination = viewChild<XPaginationComponent>('pagination');\r\n stickyTopRightEle = viewChild<ElementRef<HTMLElement>>('stickyTopRightEle');\r\n stickyBottomRightEle = viewChild<ElementRef<HTMLElement>>('stickyBottomRightEle');\r\n headCom = viewChildren<XTableHeadComponent>(XTableHeadComponent);\r\n bodyCom = viewChildren<XTableBodyComponent>(XTableBodyComponent);\r\n footCom = viewChild<XTableFootComponent>(XTableFootComponent);\r\n\r\n getScrollLeft = computed(() => this.scrollLeft() > 0);\r\n getScrollTop = computed(() => this.scrollTop() > 0);\r\n getRowHeight = computed(() => (this.rowHeight() === 0 ? '' : this.rowHeight()));\r\n getStickyTopScrollTop = computed(() => (this.caption() ? this.caption()!.nativeElement.offsetHeight : 0));\r\n getStickyBottomScrollTop = computed(() => {\r\n let top = 0;\r\n if (this.footer() && this.tfoot()) {\r\n top += this.tfoot()!.nativeElement.clientHeight + 1;\r\n }\r\n return top;\r\n });\r\n getStickyTopRightEleHeight = computed(() => {\r\n if (this.stickyTopRightEle()) {\r\n return this.stickyTopRightEle()!.nativeElement.offsetHeight;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n getStickyBottomRightEleHeight = computed(() => {\r\n if (this.stickyBottomRightEle()) {\r\n return this.stickyBottomRightEle()!.nativeElement.offsetHeight;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n hasStickyTopRight = computed(\r\n () =>\r\n this.showHeader() &&\r\n (this.headerPosition() === 'top' || this.headerPosition() === 'top-bottom') &&\r\n this.columns().some((x) => Number(x.right) >= 0)\r\n );\r\n hasStickyTopRightSearch = computed(() => !!this.headSearchTpl());\r\n\r\n hasStickyBottomRight = computed(\r\n () =>\r\n this.showHeader() &&\r\n (this.headerPosition() === 'bottom' || this.headerPosition() === 'top-bottom') &&\r\n this.columns().some((x) => Number(x.right) >= 0)\r\n );\r\n\r\n cellConfigSignal = computed(() => {\r\n const cellConfig = this.cellConfig();\r\n if (!cellConfig) return;\r\n const setRule = (rule?: XTableCellConfigRule) => {\r\n if (!rule) return;\r\n let gridTemplateColumns = '',\r\n cells = [];\r\n if (!rule.gridTemplateColumns) {\r\n gridTemplateColumns = `${this.columns()\r\n .map((x) => {\r\n if (x.width) return x.width;\r\n if (x.flex) return `${x.flex}fr`;\r\n return '1fr';\r\n })\r\n .join(' ')}`;\r\n }\r\n if (!rule.cells) return;\r\n cells = rule.cells.map((y) => {\r\n const col = this.columns().find((z) => z.id === y.id);\r\n if (col) {\r\n return { ...col, ...y } as XTableCell;\r\n }\r\n return y;\r\n });\r\n return { gridTemplateColumns, cells };\r\n };\r\n\r\n return { thead: setRule(cellConfig.thead), tbody: setRule(cellConfig.tbody) };\r\n });\r\n\r\n tbodyHeight = signal(0);\r\n tbodyScrollHeight = signal(0);\r\n\r\n ngOnInit() {\r\n this.setRowChecked();\r\n this.setRowExpand();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { data, checkedRow, columns, activatedRow, manual, showPagination, expandedAll, paginationPosition } =\r\n simples;\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(data, checkedRow) && this.setData();\r\n if (XIsChange(columns)) {\r\n this.setRowChecked();\r\n this.setRowExpand();\r\n }\r\n XIsChange(columns, activatedRow, showPagination) && this.cdr.detectChanges();\r\n XIsChange(manual) && this.setManual();\r\n XIsChange(paginationPosition) && this.setPaginationPosition(paginationPosition);\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if (this.bodyCom().length > 0) {\r\n const first = this.bodyCom()[0].tbody().nativeElement;\r\n this.tbodyHeight.set(first.clientHeight);\r\n this.tbodyScrollHeight.set(first.scrollHeight);\r\n // let trs = first.tbody().nativeElement.querySelectorAll('tr');\r\n // let i = 0;\r\n // let h = 0;\r\n // while (i < trs.length) {\r\n // h += trs[i].clientHeight;\r\n // }\r\n // this.trsHeight.set(h);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n setPaginationPosition(position: SimpleChange) {\r\n const { currentValue, previousValue } = position;\r\n if (previousValue) {\r\n this.renderer.removeClass(this.elementRef.nativeElement, `x-table-${previousValue}`);\r\n }\r\n if (currentValue) {\r\n this.renderer.addClass(this.elementRef.nativeElement, `x-table-${currentValue}`);\r\n }\r\n }\r\n\r\n getSticky(column: XTableColumn | XTableCell) {\r\n return this.getStickyLeft(column) || this.getStickyRight(column);\r\n }\r\n\r\n getStickyLeft(column: XTableColumn | XTableCell) {\r\n return Number(column.left) >= 0;\r\n }\r\n\r\n getStickyLeftLast(column: XTableColumn | XTableCell) {\r\n let lefts = this.columns().filter((x) => Number(x.left) >= 0);\r\n if (lefts.length === 0) return false;\r\n return lefts[lefts.length - 1].id === column.id;\r\n }\r\n\r\n getStickyRight(column: XTableColumn | XTableCell) {\r\n return Number(column.right) >= 0;\r\n }\r\n\r\n getStickyRightFirst(column: XTableColumn | XTableCell) {\r\n let rights = this.columns().filter((x) => Number(x.right) >= 0);\r\n if (rights.length === 0) return false;\r\n return rights[0].id === column.id;\r\n }\r\n\r\n getIndex(index: number) {\r\n return (this.index() - 1) * this.size() + index + 1;\r\n }\r\n\r\n setData() {\r\n const data = this.data();\r\n if (XIsArray<XTableRow>(data)) {\r\n this.dataIsFunc.set(false);\r\n this.tableData.set(data);\r\n this.setChecked(data);\r\n this.setHeadCheckboxList(data);\r\n this.setExpand(data);\r\n this.detectChanges();\r\n } else if (data instanceof Function) {\r\n this.dataIsFunc.set(true);\r\n this.getDataByFunc();\r\n }\r\n }\r\n\r\n getDataByFunc() {\r\n if (!this.manual() || !this.dataIsFunc()) return;\r\n this.getting.set(true);\r\n this.unSubject.next();\r\n (this.data() as Function)(this.index(), this.size(), this.query())\r\n .pipe(takeUntil(this.unSubject))\r\n .subscribe((x: XResultList<XTableRow>) => {\r\n let [data, total] = [x.list as XTableRow[], x.total!];\r\n if (this.virtualBody()) {\r\n this.virtualBody()!.scrollToIndex(0);\r\n this.virtualBody()!.checkViewportSize();\r\n }\r\n this.getting.set(false);\r\n this.tableData.set(data);\r\n this.setChecked(data);\r\n this.setHeadCheckboxList(data);\r\n this.setExpand(data);\r\n this.total.set(total);\r\n });\r\n }\r\n\r\n setManual() {\r\n this.getDataByFunc();\r\n }\r\n\r\n setRowChecked() {\r\n this.rowChecked.set(this.columns().find((x) => x.rowChecked) as XTableColumn);\r\n this.headCheckboxList.set(this.columns().filter((x) => x.type === 'checkbox' && x.headChecked));\r\n }\r\n\r\n setRowExpand() {\r\n this.rowExpand.set(this.columns().find((x) => x.rowExpand) as XTableColumn);\r\n }\r\n\r\n isExpandColumn(column: XTableColumn) {\r\n let expandColumn = this.columns().find((x) => x.id === column.id && x.type === 'expand');\r\n if (expandColumn) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n pageChange(_type: 'index' | 'size') {\r\n this.getDataByFunc();\r\n this.resetScroll();\r\n }\r\n\r\n change(index: number) {\r\n this.index.set(index);\r\n this.getDataByFunc();\r\n this.resetScroll();\r\n }\r\n\r\n resetScroll(x = true, y = true) {\r\n if (this.hasScrollX() && x) this.virtualBody()?.scrollTo({ left: 0 });\r\n if (this.hasScrollY() && y) this.virtualBody()?.scrollTo({ top: 0 });\r\n }\r\n\r\n setChecked(data: XTableRow[]) {\r\n let result: XTableRow[] = [];\r\n if (XIsEmpty(data) || !this.checkedRow()) return;\r\n for (let key in this.checkedRow()) {\r\n const arr = this.checkedRow()[key];\r\n for (let item of data as any[]) {\r\n item[key] = arr.includes(item.id);\r\n result = [...result, item];\r\n }\r\n }\r\n if (result.length > 0) data = [...result];\r\n }\r\n\r\n setHeadCheckboxList(data: XTableRow[]) {\r\n if (XIsEmpty(data) || !this.headCheckboxList()) return;\r\n for (let column of this.headCheckboxList()) {\r\n this.setCheckedValues(column);\r\n }\r\n }\r\n\r\n setExpand(data: XTableRow[]) {\r\n const getChildren = (node: XTableRow, level: number) => {\r\n node.level = level;\r\n node.expanded = this.expandedAll() || level <= this.expandedLevel() || this.expanded().includes(node.id);\r\n if (XIsUndefined(node.children)) node.children = data.filter((y) => y.pid === node.id);\r\n if (XIsUndefined(node.leaf)) node.leaf = (node.children?.length as number) > 0;\r\n if (node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeTableData.set(\r\n data\r\n .filter((x) => XIsEmpty(x.pid))\r\n .map((x, index) => {\r\n if (XIsUndefined(x.id)) x.id = index + 1;\r\n return getChildren(x, 0);\r\n })\r\n );\r\n }\r\n\r\n setExpandedAll() {\r\n if (!this.treeTable() || this.treeTableData()?.length === 0) return;\r\n const setChildren = (nodes: XTableRow[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.expanded = Boolean(this.expandedAll);\r\n setChildren(x.children as XTableRow[]);\r\n });\r\n };\r\n this.treeTableData.update((x) => {\r\n setChildren(x);\r\n return [...x];\r\n });\r\n }\r\n\r\n checkSort(sort: XSort[]) {\r\n if (!this.dataIsFunc) return;\r\n let query = this.query();\r\n if (typeof query === 'undefined') query = {};\r\n query.sort = sort;\r\n this.query.set(query);\r\n this.getDataByFunc();\r\n }\r\n\r\n headChecked(checked: boolean, column: XTableColumn) {\r\n this.tableData.update((z) => {\r\n z.forEach((x) => {\r\n if (!x.disabled) {\r\n x[column.id] = checked;\r\n }\r\n });\r\n return [...z];\r\n });\r\n this.setCheckedValues(column);\r\n this.headCheckboxChange.emit({ rows: this.tableData(), checkbox: this.checkedValues() });\r\n this.detectChanges();\r\n }\r\n\r\n bodyChecked(_checked: boolean, column: XTableColumn, row: XTableRow) {\r\n this.setCheckedValues(column);\r\n this.bodyCheckboxChange.emit(row);\r\n // this.detectChanges();\r\n }\r\n\r\n setCheckedValues(column: XTableColumn) {\r\n const notDisabled = this.tableData().filter((x) => !x.disabled);\r\n const count = notDisabled.length;\r\n const checkedLen = notDisabled.filter((x) => x[column.id]).length;\r\n this.checkedValues.update((x) => {\r\n x[column.id] = count === checkedLen && count !== 0;\r\n x[column.id + this.indeterminate()] = checkedLen > 0 && checkedLen < count;\r\n return { ...x };\r\n });\r\n }\r\n\r\n detectChanges() {\r\n this.headCom()?.forEach((x) => {\r\n x.cdr.markForCheck();\r\n });\r\n this.bodyCom()?.forEach((x) => {\r\n x.cdr.markForCheck();\r\n });\r\n this.footCom()?.cdr.markForCheck();\r\n this.cdr.markForCheck();\r\n }\r\n}\r\n","<table\r\n #table\r\n class=\"x-table\"\r\n [ngClass]=\"classMap()\"\r\n [x-loading]=\"loading() && getting()\"\r\n [class.x-table-wrap-border-hidden]=\"hiddenWrapBorder()\"\r\n [class.x-table-scroll-left]=\"getScrollLeft()\"\r\n [class.x-table-scroll-left-max]=\"scrollLeftMax()\"\r\n [class.x-table-scroll-top]=\"getScrollTop()\"\r\n [class.x-table-has-scroll-right]=\"scrollYWidth()\"\r\n [class.x-table-has-scroll-bottom]=\"scrollXWidth()\"\r\n [class.x-table-bordered]=\"bordered()\"\r\n [class.x-table-td-adaption-height]=\"rowHeight() == 0\"\r\n [class.x-table-cell-config]=\"!!cellConfigSignal()\"\r\n [class.x-table-last-tr-bordered]=\"!!adaptionHeight() || tbodyHeight() >= tbodyScrollHeight()\"\r\n>\r\n @if (header()) {\r\n <caption #caption class=\"x-table-header\" [style.height.px]=\"getRowHeight()\" [style.min-height.px]=\"getRowHeight()\">\r\n <ng-container *xOutlet=\"header()\">{{ header() }}</ng-container>\r\n </caption>\r\n }\r\n @if (showHeader() && (headerPosition() === 'top' || headerPosition() === 'top-bottom')) {\r\n <x-table-head\r\n [columns]=\"columns()\"\r\n [rowHeight]=\"rowHeight()\"\r\n [columnTpl]=\"headColumnTpl()\"\r\n [scrollYWidth]=\"scrollYWidth()\"\r\n [scrollXWidth]=\"scrollXWidth()!\"\r\n [cellConfig]=\"cellConfigSignal()?.thead\"\r\n [position]=\"'top'\"\r\n ></x-table-head>\r\n }\r\n <x-table-body\r\n [data]=\"treeTable() ? treeTableData() : tableData()\"\r\n [columns]=\"columns()\"\r\n [itemSize]=\"itemSize()\"\r\n [rowHeight]=\"rowHeight()\"\r\n [bodyHeight]=\"bodyHeight()!\"\r\n [columnTpl]=\"bodyColumnTpl()\"\r\n [allowSelectRow]=\"allowSelectRow()\"\r\n [virtualScroll]=\"virtualScroll()\"\r\n [minBufferPx]=\"minBufferPx()\"\r\n [maxBufferPx]=\"maxBufferPx()\"\r\n [adaptionHeight]=\"adaptionHeight()!\"\r\n [docPercent]=\"docPercent()\"\r\n [scroll]=\"scroll()\"\r\n [rowClass]=\"rowClass()\"\r\n [cellConfig]=\"cellConfigSignal()?.tbody\"\r\n [expandedAll]=\"expandedAll()\"\r\n [expandTpl]=\"expandTpl()\"\r\n [(activatedRow)]=\"activatedRow\"\r\n (rowClick)=\"rowClick.emit($event)\"\r\n ></x-table-body>\r\n @if (showHeader() && (headerPosition() === 'bottom' || headerPosition() === 'top-bottom')) {\r\n <x-table-head\r\n [columns]=\"columns()\"\r\n [rowHeight]=\"rowHeight()\"\r\n [columnTpl]=\"headColumnTpl()\"\r\n [scrollYWidth]=\"scrollYWidth()\"\r\n [scrollXWidth]=\"scrollXWidth()!\"\r\n [cellConfig]=\"cellConfigSignal()?.thead\"\r\n [position]=\"'bottom'\"\r\n ></x-table-head>\r\n }\r\n @if (footer()) {\r\n <x-table-foot [footer]=\"footer()\" [rowHeight]=\"rowHeight()\"></x-table-foot>\r\n }\r\n @if (hasStickyTopRight()) {\r\n <div\r\n #stickyTopRightEle\r\n class=\"x-table-sticky-right-scroll\"\r\n [class.x-table-border-bottom]=\"headSearchTpl()\"\r\n [style.top.px]=\"getStickyTopScrollTop()\"\r\n [style.width.px]=\"scrollYWidth()\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n ></div>\r\n }\r\n @if (hasStickyTopRight() && headSearchTpl()) {\r\n <div\r\n class=\"x-table-sticky-right-scroll\"\r\n [style.top.px]=\"getStickyTopScrollTop() + getStickyTopRightEleHeight()\"\r\n [style.width.px]=\"scrollYWidth()\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n ></div>\r\n }\r\n @if (hasStickyBottomRight()) {\r\n <div\r\n #stickyBottomRightEle\r\n class=\"x-table-sticky-right-scroll\"\r\n [style.bottom.px]=\"getStickyBottomScrollTop()\"\r\n [style.width.px]=\"scrollYWidth()\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n ></div>\r\n }\r\n @if (hasStickyBottomRight() && headSearchTpl()) {\r\n <div\r\n class=\"x-table-sticky-right-scroll\"\r\n [class.x-table-border-bottom]=\"headSearchTpl()\"\r\n [style.bottom.px]=\"getStickyBottomScrollTop() + getStickyBottomRightEleHeight()\"\r\n [style.width.px]=\"scrollYWidth()\"\r\n [style.height.px]=\"getRowHeight()\"\r\n [style.min-height.px]=\"getRowHeight()\"\r\n ></div>\r\n }\r\n</table>\r\n@if (showPagination() && size()) {\r\n <x-pagination\r\n #pagination\r\n [(index)]=\"index\"\r\n [(size)]=\"size\"\r\n [(query)]=\"query\"\r\n [total]=\"total()\"\r\n (indexChange)=\"pageChange('index')\"\r\n (sizeChange)=\"pageChange('size')\"\r\n [showEllipsis]=\"showEllipsis()\"\r\n [showTotal]=\"showTotal()\"\r\n [space]=\"space()\"\r\n [showBackground]=\"showBackground()\"\r\n [showSize]=\"showSize()\"\r\n [showJump]=\"showJump()\"\r\n [jumpWidth]=\"jumpWidth()\"\r\n [showInputSize]=\"showInputSize()\"\r\n [inputSizeWidth]=\"inputSizeWidth()\"\r\n [sizeData]=\"sizeData()\"\r\n [sizeWidth]=\"sizeWidth()\"\r\n [pageLinkSize]=\"pageLinkSize()\"\r\n [disabled]=\"disabled()\"\r\n [totalTpl]=\"totalTpl()\"\r\n [simple]=\"simple()\"\r\n [simpleIndexWidth]=\"simpleIndexWidth()\"\r\n [jumpTooltipText]=\"jumpTooltipText()\"\r\n [showJumpTooltipText]=\"showJumpTooltipText()\"\r\n [inputSizeTooltipText]=\"inputSizeTooltipText()\"\r\n [showInputSizeTooltipText]=\"showInputSizeTooltipText()\"\r\n [inputIndexSizeSureType]=\"inputIndexSizeSureType()\"\r\n >\r\n </x-pagination>\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XTableComponent } from './table.component';\r\nimport { XTableHeadComponent } from './table-head.component';\r\nimport { XTableBodyComponent } from './table-body.component';\r\nimport { XTableFootComponent } from './table-foot.component';\r\n\r\n@NgModule({\r\n exports: [XTableComponent],\r\n imports: [XTableComponent, XTableHeadComponent, XTableBodyComponent, XTableFootComponent]\r\n})\r\nexport class XTableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
|