@visactor/vtable 1.13.3-alpha.0 → 1.13.3-alpha.10

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.
Files changed (75) hide show
  1. package/cjs/ListTable.d.ts +1 -1
  2. package/cjs/ListTable.js +5 -5
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/body-helper/style/CheckboxStyle.d.ts +14 -1
  5. package/cjs/body-helper/style/CheckboxStyle.js.map +1 -1
  6. package/cjs/body-helper/style/RadioStyle.d.ts +8 -1
  7. package/cjs/body-helper/style/RadioStyle.js.map +1 -1
  8. package/cjs/core/BaseTable.js +1 -1
  9. package/cjs/core/BaseTable.js.map +1 -1
  10. package/cjs/core/utils/get-cell-position.js +4 -3
  11. package/cjs/core/utils/get-cell-position.js.map +1 -1
  12. package/cjs/dataset/dataset-pivot-table.js +1 -2
  13. package/cjs/edit/editors.js +2 -1
  14. package/cjs/icons.js +0 -18
  15. package/cjs/icons.js.map +1 -1
  16. package/cjs/index.d.ts +1 -1
  17. package/cjs/index.js +1 -1
  18. package/cjs/index.js.map +1 -1
  19. package/cjs/layout/layout-helper.js +1 -1
  20. package/cjs/layout/pivot-header-layout.js +1 -1
  21. package/cjs/layout/pivot-layout.js +0 -2
  22. package/cjs/layout/row-height-map.js +1 -1
  23. package/cjs/layout/simple-header-layout.js +1 -1
  24. package/cjs/layout/tree-helper.js +2 -2
  25. package/cjs/plugins/chartModules.js +1 -1
  26. package/cjs/plugins/custom-cell-style.js +1 -1
  27. package/cjs/plugins/icons.js +1 -1
  28. package/cjs/plugins/invert-highlight.js +1 -1
  29. package/cjs/plugins/list-tree-stick-cell.js +1 -1
  30. package/cjs/plugins/themes.js +1 -1
  31. package/cjs/state/checkbox/checkbox.js +51 -82
  32. package/cjs/state/checkbox/checkbox.js.map +1 -1
  33. package/cjs/state/state.d.ts +1 -1
  34. package/cjs/state/state.js +4 -4
  35. package/cjs/state/state.js.map +1 -1
  36. package/cjs/vrender.js.map +1 -1
  37. package/dist/vtable.js +91 -154
  38. package/dist/vtable.min.js +2 -2
  39. package/es/ListTable.d.ts +1 -1
  40. package/es/ListTable.js +5 -5
  41. package/es/ListTable.js.map +1 -1
  42. package/es/body-helper/style/CheckboxStyle.d.ts +14 -1
  43. package/es/body-helper/style/CheckboxStyle.js.map +1 -1
  44. package/es/body-helper/style/RadioStyle.d.ts +8 -1
  45. package/es/body-helper/style/RadioStyle.js.map +1 -1
  46. package/es/core/BaseTable.js +1 -1
  47. package/es/core/BaseTable.js.map +1 -1
  48. package/es/core/utils/get-cell-position.js +4 -3
  49. package/es/core/utils/get-cell-position.js.map +1 -1
  50. package/es/dataset/dataset-pivot-table.js +1 -2
  51. package/es/edit/editors.js +2 -1
  52. package/es/icons.js +0 -18
  53. package/es/icons.js.map +1 -1
  54. package/es/index.d.ts +1 -1
  55. package/es/index.js +1 -1
  56. package/es/index.js.map +1 -1
  57. package/es/layout/layout-helper.js +1 -1
  58. package/es/layout/pivot-header-layout.js +1 -1
  59. package/es/layout/pivot-layout.js +0 -2
  60. package/es/layout/row-height-map.js +1 -1
  61. package/es/layout/simple-header-layout.js +1 -1
  62. package/es/layout/tree-helper.js +1 -1
  63. package/es/plugins/chartModules.js +1 -1
  64. package/es/plugins/custom-cell-style.js +1 -1
  65. package/es/plugins/icons.js +1 -1
  66. package/es/plugins/invert-highlight.js +1 -1
  67. package/es/plugins/list-tree-stick-cell.js +1 -1
  68. package/es/plugins/themes.js +1 -1
  69. package/es/state/checkbox/checkbox.js +52 -82
  70. package/es/state/checkbox/checkbox.js.map +1 -1
  71. package/es/state/state.d.ts +1 -1
  72. package/es/state/state.js +4 -4
  73. package/es/state/state.js.map +1 -1
  74. package/es/vrender.js.map +1 -1
  75. package/package.json +2 -2
@@ -59,7 +59,7 @@ export declare class ListTable extends BaseTable implements ListTableAPI {
59
59
  _getSortFuncFromHeaderOption(columns: ColumnsDefine | undefined, field: FieldDef, fieldKey?: FieldKeyDef): SortState['orderFn'] | undefined;
60
60
  updateSortState(sortState: SortState[] | SortState | null, executeSort?: boolean): void;
61
61
  updateFilterRules(filterRules: FilterRules): void;
62
- getCheckboxState(field?: string | number): any;
62
+ getCheckboxState(field?: string | number): boolean[] | Record<string | number, boolean>[];
63
63
  getCellCheckboxState(col: number, row: number): boolean;
64
64
  getRadioState(field?: string | number): number | boolean | Record<string | number, number | boolean | Record<number, number>>;
65
65
  getCellRadioState(col: number, row: number): boolean | number;
package/cjs/ListTable.js CHANGED
@@ -465,20 +465,20 @@ class ListTable extends core_1.BaseTable {
465
465
  this.refreshRowColCount(), this.stateManager.initCheckedState(this.records), this.scenegraph.createSceneGraph();
466
466
  }
467
467
  getCheckboxState(field) {
468
- if (this.stateManager.checkedState.size < this.rowCount - this.columnHeaderLevelCount && this.stateManager.initLeftRecordsCheckState(this.records),
468
+ if (this.stateManager.checkedState.length < this.rowCount - this.columnHeaderLevelCount && this.stateManager.initLeftRecordsCheckState(this.records),
469
469
  (0, vutils_1.isValid)(field)) {
470
- let stateArr = this.stateManager.checkedState.values();
470
+ let stateArr = this.stateManager.checkedState;
471
471
  return this.options.groupBy && (stateArr = (0, checkbox_1.getGroupCheckboxState)(this)),
472
472
  stateArr.map((state => state[field]));
473
473
  }
474
- return new Array(...this.stateManager.checkedState.values());
474
+ return this.stateManager.checkedState;
475
475
  }
476
476
  getCellCheckboxState(col, row) {
477
477
  var _a;
478
478
  const define = this.getBodyColumnDefine(col, row), field = null == define ? void 0 : define.field, cellType = this.getCellType(col, row);
479
479
  if ((0, vutils_1.isValid)(field) && "checkbox" === cellType) {
480
- const dataIndex = this.dataSource.getIndexKey(this.getRecordShowIndexByCell(col, row)).toString();
481
- return null === (_a = this.stateManager.checkedState.get(dataIndex)) || void 0 === _a ? void 0 : _a[field];
480
+ const dataIndex = this.dataSource.getIndexKey(this.getRecordShowIndexByCell(col, row));
481
+ return null === (_a = this.stateManager.checkedState[dataIndex]) || void 0 === _a ? void 0 : _a[field];
482
482
  }
483
483
  }
484
484
  getRadioState(field) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ListTable.ts"],"names":[],"mappings":"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","file":"ListTable.js","sourcesContent":["import type {\n AggregationType,\n CellAddress,\n CellRange,\n ColumnsDefine,\n DropDownMenuEventInfo,\n FieldData,\n FieldDef,\n FieldFormat,\n FieldKeyDef,\n FilterRules,\n IPagination,\n ListTableAPI,\n ListTableConstructorOptions,\n MaybePromiseOrUndefined,\n SortOrder,\n SortState\n} from './ts-types';\nimport { HierarchyState } from './ts-types';\nimport { SimpleHeaderLayoutMap } from './layout';\nimport { isArray, isValid } from '@visactor/vutils';\nimport {\n _setDataSource,\n _setRecords,\n checkHasAggregationOnColumnDefine,\n generateAggregationForColumn\n} from './core/tableHelper';\nimport { BaseTable } from './core';\nimport type { BaseTableAPI, ListTableProtected } from './ts-types/base-table';\nimport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nimport type { ITitleComponent } from './components/title/title';\nimport { Env } from './tools/env';\nimport * as editors from './edit/editors';\nimport { EditManeger } from './edit/edit-manager';\nimport { computeColWidth } from './scenegraph/layout/compute-col-width';\nimport { computeRowHeight } from './scenegraph/layout/compute-row-height';\nimport { defaultOrderFn } from './tools/util';\nimport type { IEditor } from '@visactor/vtable-editors';\nimport type { ColumnData, ColumnDefine } from './ts-types/list-table/layout-map/api';\nimport { getCellRadioState, setCellRadioState } from './state/radio/radio';\nimport { cloneDeepSpec } from '@visactor/vutils-extension';\nimport { getGroupCheckboxState, setCellCheckboxState } from './state/checkbox/checkbox';\nimport type { IEmptyTipComponent } from './components/empty-tip/empty-tip';\nimport { Factory } from './core/factory';\nimport { getGroupByDataConfig } from './core/group-helper';\nimport type { CachedDataSource } from './data';\nimport {\n listTableAddRecord,\n listTableAddRecords,\n listTableChangeCellValue,\n listTableChangeCellValues,\n listTableDeleteRecords,\n listTableUpdateRecords,\n sortRecords\n} from './core/record-helper';\nimport type { IListTreeStickCellPlugin, ListTreeStickCellPlugin } from './plugins/list-tree-stick-cell';\nimport { fixUpdateRowRange } from './tools/update-row';\n// import {\n// registerAxis,\n// registerEmptyTip,\n// registerLegend,\n// registerMenu,\n// registerTitle,\n// registerTooltip\n// } from './components';\n// import {\n// registerChartCell,\n// registerCheckboxCell,\n// registerImageCell,\n// registerProgressBarCell,\n// registerRadioCell,\n// registerSparkLineCell,\n// registerTextCell,\n// registerVideoCell\n// } from './scenegraph/group-creater/cell-type';\n\n// registerAxis();\n// registerEmptyTip();\n// registerLegend();\n// registerMenu();\n// registerTitle();\n// registerTooltip();\n\n// registerChartCell();\n// registerCheckboxCell();\n// registerImageCell();\n// registerProgressBarCell();\n// registerRadioCell();\n// registerSparkLineCell();\n// registerTextCell();\n// registerVideoCell();\n\nexport class ListTable extends BaseTable implements ListTableAPI {\n declare internalProps: ListTableProtected;\n /**\n * 用户配置的options 只读 勿直接修改\n */\n declare options: ListTableConstructorOptions;\n showHeader = true;\n listTreeStickCellPlugin?: ListTreeStickCellPlugin;\n\n // eslint-disable-next-line default-param-last\n constructor(options: ListTableConstructorOptions);\n constructor(container: HTMLElement, options: ListTableConstructorOptions);\n constructor(container?: HTMLElement | ListTableConstructorOptions, options?: ListTableConstructorOptions) {\n if (Env.mode === 'node') {\n options = container as ListTableConstructorOptions;\n container = null;\n } else if (!(container instanceof HTMLElement)) {\n options = container as ListTableConstructorOptions;\n if ((container as ListTableConstructorOptions).container) {\n container = (container as ListTableConstructorOptions).container;\n } else {\n container = null;\n }\n }\n super(container as HTMLElement, options);\n const internalProps = this.internalProps;\n internalProps.frozenColDragHeaderMode = options.frozenColDragHeaderMode;\n //分页配置\n this.pagination = options.pagination;\n internalProps.sortState = options.sortState;\n internalProps.multipleSort = !!options.multipleSort;\n internalProps.dataConfig = options.groupBy ? getGroupByDataConfig(options.groupBy) : {}; //cloneDeep(options.dataConfig ?? {});\n internalProps.columns = options.columns\n ? cloneDeepSpec(options.columns, ['children']) // children for react\n : options.header\n ? cloneDeepSpec(options.header, ['children'])\n : [];\n generateAggregationForColumn(this);\n // options.columns?.forEach((colDefine, index) => {\n // //如果editor 是一个IEditor的实例 需要这样重新赋值 否则clone后变质了\n // if (colDefine.editor) {\n // internalProps.columns[index].editor = colDefine.editor;\n // }\n // });\n\n internalProps.enableTreeNodeMerge = options.enableTreeNodeMerge ?? isValid(options.groupBy) ?? false;\n\n this.internalProps.headerHelper.setTableColumnsEditor();\n this.showHeader = options.showHeader ?? true;\n\n this.transpose = options.transpose ?? false;\n if (Env.mode !== 'node') {\n this.editorManager = new EditManeger(this);\n }\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n\n if (options.dataSource) {\n _setDataSource(this, options.dataSource);\n } else if (options.records) {\n this.setRecords(options.records as any, { sortState: internalProps.sortState });\n } else {\n this.setRecords([]);\n }\n if (options.title) {\n const Title = Factory.getComponent('title') as ITitleComponent;\n internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n\n if (options.enableTreeStickCell) {\n const ListTreeStickCellPlugin = Factory.getComponent('listTreeStickCellPlugin') as IListTreeStickCellPlugin;\n this.listTreeStickCellPlugin = new ListTreeStickCellPlugin(this);\n }\n //为了确保用户监听得到这个事件 这里做了异步 确保vtable实例已经初始化完成\n setTimeout(() => {\n this.fireListeners(TABLE_EVENT_TYPE.INITIALIZED, null);\n }, 0);\n }\n isListTable(): true {\n return true;\n }\n isPivotTable(): false {\n return false;\n }\n isPivotChart(): false {\n return false;\n }\n /**\n * Get the sort state.\n */\n get sortState(): SortState | SortState[] {\n return this.internalProps.sortState;\n }\n\n get records() {\n return this.dataSource?.records;\n }\n\n get recordsCount() {\n return this.dataSource.records.length;\n }\n // /**\n // * Gets the define of the header.\n // */\n // get columns(): ColumnsDefine {\n // return this.internalProps.columns;\n // }\n // /**\n // * Sets the define of the column.\n // */\n // set columns(columns: ColumnsDefine) {\n // this.internalProps.columns = columns;\n // this.options.columns = columns;\n // }\n /**\n * Sets the define of the column.\n */\n updateColumns(columns: ColumnsDefine) {\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n this.internalProps.columns = cloneDeepSpec(columns, ['children']);\n generateAggregationForColumn(this);\n // columns.forEach((colDefine, index) => {\n // if (colDefine.editor) {\n // this.internalProps.columns[index].editor = colDefine.editor;\n // }\n // });\n this.options.columns = columns;\n this.internalProps.headerHelper.setTableColumnsEditor();\n this._hasAutoImageColumn = undefined;\n this.refreshHeader();\n this.dataSource.updateColumns?.(this.internalProps.columns);\n if (this.records && checkHasAggregationOnColumnDefine(columns)) {\n this.dataSource.processRecords(this.dataSource.dataSourceObj?.records ?? this.dataSource.dataSourceObj);\n }\n this.internalProps.useOneRowHeightFillAll = false;\n this.scenegraph.clearCells();\n this.headerStyleCache = new Map();\n this.bodyStyleCache = new Map();\n this.bodyBottomStyleCache = new Map();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n this.renderAsync();\n this.eventManager.updateEventBinder();\n }\n get columns(): ColumnsDefine {\n // return this.internalProps.columns;\n return this.internalProps.layoutMap.columnTree.getCopiedTree(); //调整顺序后的columns\n }\n /**\n *@deprecated 请使用columns\n */\n get header(): ColumnsDefine {\n return this.internalProps.columns;\n }\n /**\n * @deprecated 请使用columns\n */\n set header(header: ColumnsDefine) {\n this.internalProps.columns = header;\n generateAggregationForColumn(this);\n this.options.header = header;\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n //需要异步等待其他事情都完成后再绘制\n this.renderAsync();\n }\n /**\n * Get the transpose.\n */\n get transpose(): boolean {\n return this.internalProps.transpose ?? false;\n }\n /**\n * Set the transpose from given\n */\n set transpose(transpose: boolean) {\n if (this.internalProps.transpose === transpose) {\n return;\n }\n this.internalProps.transpose = transpose;\n // this.options.transpose = transpose; // cause extr update in react\n if (this.internalProps.layoutMap) {\n //后面如果修改是否转置\n this.internalProps.layoutMap.transpose = transpose;\n this.refreshRowColCount();\n\n // 转置后为行布局,列宽只支持依据该列所有内容自适应宽度\n this._resetFrozenColCount();\n this.renderAsync();\n }\n }\n /** 获取单元格展示值 */\n getCellValue(col: number, row: number, skipCustomMerge?: boolean): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n if (!skipCustomMerge) {\n const customMergeText = this.getCustomMergeValue(col, row);\n if (customMergeText) {\n return customMergeText;\n }\n }\n const table = this;\n if (table.internalProps.layoutMap.isSeriesNumber(col, row)) {\n if (table.internalProps.layoutMap.isSeriesNumberInHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getSeriesNumberHeader(col, row);\n return title;\n }\n if ((this.options as ListTableConstructorOptions).groupBy) {\n const { vtableMerge } = table.getCellRawRecord(col, row);\n if (vtableMerge) {\n return '';\n }\n const indexs = this.dataSource.currentIndexedData[row - this.columnHeaderLevelCount] as number[];\n return indexs[indexs.length - 1] + 1;\n }\n const { format } = table.internalProps.layoutMap.getSeriesNumberBody(col, row);\n return typeof format === 'function' ? format(col, row, this) : row - this.columnHeaderLevelCount + 1;\n } else if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n } else if (table.internalProps.layoutMap.isAggregation(col, row)) {\n if (table.internalProps.layoutMap.isTopAggregation(col, row)) {\n const aggregator = table.internalProps.layoutMap.getAggregatorOnTop(col, row);\n return aggregator?.formatValue ? aggregator.formatValue(col, row, this as BaseTableAPI) : '';\n } else if (table.internalProps.layoutMap.isBottomAggregation(col, row)) {\n const aggregator = table.internalProps.layoutMap.getAggregatorOnBottom(col, row);\n return aggregator?.formatValue ? aggregator.formatValue(col, row, this as BaseTableAPI) : '';\n }\n }\n const { field, fieldFormat } = table.internalProps.layoutMap.getBody(col, row) as ColumnData;\n return table.getFieldData(fieldFormat || field, col, row);\n }\n /** 获取单元格展示数据的format前的值 */\n getCellOriginValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isSeriesNumber(col, row)) {\n if (table.internalProps.layoutMap.isSeriesNumberInHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getSeriesNumberHeader(col, row);\n return title;\n }\n const { format } = table.internalProps.layoutMap.getSeriesNumberBody(col, row);\n return typeof format === 'function' ? format(col, row, this) : row - this.columnHeaderLevelCount;\n } else if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n } else if (table.internalProps.layoutMap.isAggregation(col, row)) {\n if (table.internalProps.layoutMap.isTopAggregation(col, row)) {\n const aggregator = table.internalProps.layoutMap.getAggregatorOnTop(col, row);\n return aggregator?.value();\n } else if (table.internalProps.layoutMap.isBottomAggregation(col, row)) {\n const aggregator = table.internalProps.layoutMap.getAggregatorOnBottom(col, row);\n return aggregator?.value();\n }\n }\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n return table.getFieldData(field, col, row);\n }\n /** 获取单元格展示数据源最原始值 */\n getCellRawValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n return table.getRawFieldData(field, col, row);\n }\n /** 获取当前单元格在body部分的展示索引 即(row / col)-headerLevelCount。注:ListTable特有接口 */\n getRecordShowIndexByCell(col: number, row: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getRecordShowIndexByCell(col, row);\n }\n\n /** 获取当前单元格的数据是数据源中的第几条。\n * 如果是树形模式的表格,将返回数组,如[1,2] 数据源中第2条数据中children中的第3条\n * 注:ListTable特有接口 */\n getRecordIndexByCell(col: number, row: number): number | number[] {\n const { layoutMap } = this.internalProps;\n const recordShowIndex = layoutMap.getRecordShowIndexByCell(col, row);\n return this.dataSource.currentPagerIndexedData[recordShowIndex];\n }\n\n getTableIndexByRecordIndex(recordIndex: number | number[]) {\n if (this.transpose) {\n return this.dataSource.getTableIndex(recordIndex) + this.rowHeaderLevelCount;\n }\n return this.dataSource.getTableIndex(recordIndex) + this.columnHeaderLevelCount;\n }\n getTableIndexByField(field: FieldDef) {\n const colObj = this.internalProps.layoutMap.columnObjects.find((col: any) => col.field === field);\n if (!colObj) {\n return -1;\n }\n const layoutRange = this.internalProps.layoutMap.getBodyLayoutRangeById(colObj.id);\n if (this.transpose) {\n return layoutRange.start.row;\n }\n return layoutRange.start.col;\n }\n /**\n * 根据数据源中的index和field获取单元格行列号\n * @param field\n * @param recordIndex\n * @returns\n */\n getCellAddrByFieldRecord(field: FieldDef, recordIndex: number): CellAddress {\n if (this.transpose) {\n return { col: this.getTableIndexByRecordIndex(recordIndex), row: this.getTableIndexByField(field) };\n }\n return { col: this.getTableIndexByField(field), row: this.getTableIndexByRecordIndex(recordIndex) };\n }\n /**\n *\n * @param field 获取整体数据记录。可编辑单元格的话 对应编辑后format前\n * @param col\n * @param row\n */\n getCellOriginRecord(col: number, row: number): MaybePromiseOrUndefined {\n const table = this;\n const index = table.getRecordShowIndexByCell(col, row);\n if (index > -1) {\n return table.dataSource.get(index);\n }\n return undefined;\n }\n /**\n *\n * @param field 获取整体数据记录。可编辑的话 对应编辑前\n * @param col\n * @param row\n */\n getCellRawRecord(col: number, row: number): MaybePromiseOrUndefined {\n const table = this;\n const index = table.getRecordShowIndexByCell(col, row);\n if (index > -1) {\n return table.dataSource.getRaw(index);\n }\n return undefined;\n }\n /**\n * 该列是否可调整列宽\n * @param col\n * @returns\n */\n _canResizeColumn(col: number, row: number): boolean {\n const ifCan = super._canResizeColumn(col, row);\n if (ifCan) {\n if (!this.transpose) {\n // 列上是否配置了禁止拖拽列宽的配置项disableColumnResize\n const cellDefine = this.internalProps.layoutMap.getBody(col, this.columnHeaderLevelCount);\n const isSeriesNumber = this.internalProps.layoutMap.isSeriesNumber(col, row);\n if ((cellDefine as ColumnData)?.disableColumnResize) {\n return false;\n } else if (isSeriesNumber && this.internalProps.rowSeriesNumber.disableColumnResize === true) {\n return false;\n }\n }\n }\n return ifCan;\n }\n updateOption(options: ListTableConstructorOptions) {\n const internalProps = this.internalProps;\n super.updateOption(options);\n internalProps.frozenColDragHeaderMode = options.frozenColDragHeaderMode;\n //分页配置\n this.pagination = options.pagination;\n internalProps.sortState = options.sortState;\n // internalProps.dataConfig = {}; // cloneDeep(options.dataConfig ?? {});\n internalProps.dataConfig = options.groupBy ? getGroupByDataConfig(options.groupBy) : {}; //cloneDeep(options.dataConfig ?? {});\n //更新protectedSpace\n this.showHeader = options.showHeader ?? true;\n internalProps.columns = options.columns\n ? cloneDeepSpec(options.columns, ['children'])\n : options.header\n ? cloneDeepSpec(options.header, ['children'])\n : [];\n generateAggregationForColumn(this);\n // options.columns.forEach((colDefine, index) => {\n // if (colDefine.editor) {\n // internalProps.columns[index].editor = colDefine.editor;\n // }\n // });\n internalProps.enableTreeNodeMerge = options.enableTreeNodeMerge ?? isValid(options.groupBy) ?? false;\n\n this.internalProps.headerHelper.setTableColumnsEditor();\n // 处理转置\n this.transpose = options.transpose ?? false;\n // 更新表头\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n\n // this.hasMedia = null; // 避免重复绑定\n // 清空目前数据\n if (internalProps.releaseList) {\n internalProps.releaseList.forEach(releaseObj => releaseObj?.release?.());\n internalProps.releaseList = null;\n }\n // // 恢复selection状态\n // internalProps.selection.range = range;\n // this._updateSize();\n // 传入新数据\n if (options.dataSource) {\n _setDataSource(this, options.dataSource);\n } else if (options.records) {\n this.setRecords(options.records as any, {\n sortState: options.sortState\n });\n } else {\n this._resetFrozenColCount();\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.render();\n }\n if (options.title) {\n const Title = Factory.getComponent('title') as ITitleComponent;\n internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n return new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n }\n /**\n * 更新页码\n * @param pagination 修改页码\n */\n updatePagination(pagination: IPagination): void {\n if (this.pagination) {\n typeof pagination.currentPage === 'number' &&\n pagination.currentPage >= 0 &&\n (this.pagination.currentPage = pagination.currentPage);\n pagination.perPageCount &&\n (this.pagination.perPageCount = pagination.perPageCount || this.pagination.perPageCount);\n this.internalProps.layoutMap.clearCellRangeMap();\n this.internalProps.useOneRowHeightFillAll = false;\n // 清空单元格内容\n this.scenegraph.clearCells();\n //数据源缓存数据更新\n this.dataSource.updatePagination(this.pagination);\n this.refreshRowColCount();\n this.stateManager.initCheckedState(this.records);\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.renderAsync();\n }\n }\n /** @private */\n refreshHeader(): void {\n const table = this;\n const internalProps = table.internalProps;\n const transpose = table.transpose;\n const showHeader = table.showHeader;\n const layoutMap = (internalProps.layoutMap = new SimpleHeaderLayoutMap(\n this,\n internalProps.columns ?? [],\n showHeader,\n table.options.hierarchyIndent\n ));\n\n layoutMap.transpose = transpose;\n\n if (!transpose) {\n //设置列宽 这里需要优化,考虑转置表格的情况 transpose,转置表格不需要设置colWidth TODO\n this.setMinMaxLimitWidth(true);\n }\n //刷新表头,原来这里是_refreshRowCount 后改名为_refreshRowColCount 因为表头定义会影响行数,而转置模式下会影响列数\n this.refreshRowColCount();\n }\n\n refreshRowColCount(): void {\n const table = this;\n const { layoutMap } = table.internalProps;\n if (!layoutMap) {\n return;\n }\n\n const dataCount = table.internalProps.dataSource?.length ?? 0;\n layoutMap.recordsCount =\n dataCount + (dataCount > 0 ? layoutMap.hasAggregationOnTopCount + layoutMap.hasAggregationOnBottomCount : 0);\n\n if (table.transpose) {\n table.rowCount = layoutMap.rowCount ?? 0;\n table.colCount = layoutMap.colCount ?? 0;\n // table.frozenRowCount = 0;\n // table.frozenColCount = layoutMap.headerLevelCount; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n this.internalProps.frozenColCount = Math.max(\n (layoutMap.headerLevelCount ?? 0) + layoutMap.leftRowSeriesNumberColumnCount,\n this.options.frozenColCount ?? 0\n );\n this.internalProps.frozenRowCount = this.options.frozenRowCount ?? 0;\n if (table.bottomFrozenRowCount !== (this.options.bottomFrozenRowCount ?? 0)) {\n table.bottomFrozenRowCount = this.options.bottomFrozenRowCount ?? 0;\n }\n if (table.rightFrozenColCount !== (this.options.rightFrozenColCount ?? 0)) {\n table.rightFrozenColCount = this.options.rightFrozenColCount ?? 0;\n }\n } else {\n table.colCount = layoutMap.colCount ?? 0;\n table.rowCount = layoutMap.recordsCount * layoutMap.bodyRowSpanCount + layoutMap.headerLevelCount;\n // table.frozenColCount = table.options.frozenColCount ?? 0; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n this.internalProps.frozenColCount = this.options.frozenColCount ?? 0;\n table.frozenRowCount = Math.max(layoutMap.headerLevelCount, this.options.frozenRowCount ?? 0);\n\n if (table.bottomFrozenRowCount !== (this.options.bottomFrozenRowCount ?? 0)) {\n table.bottomFrozenRowCount = this.options.bottomFrozenRowCount ?? 0;\n }\n if (table.rightFrozenColCount !== (this.options.rightFrozenColCount ?? 0)) {\n table.rightFrozenColCount = this.options.rightFrozenColCount ?? 0;\n }\n }\n this.stateManager.setFrozenCol(this.internalProps.frozenColCount);\n // this.scenegraph.proxy?.refreshRowColCount();\n }\n /**\n * 获取records数据源中 字段对应的value 值是format之后的\n * @param field\n * @param col\n * @param row\n * @returns\n */\n getFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n if (field === null) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return null;\n }\n const index = table.getRecordShowIndexByCell(\n table.transpose ? col - table.internalProps.layoutMap.leftRowSeriesNumberColumnCount : col,\n row\n );\n return table.internalProps.dataSource.getField(index, field, col, row, this);\n }\n /**\n * 获取records数据源中 字段对应的value 值是数据源中原始值\n * @param field\n * @param col\n * @param row\n * @returns\n */\n getRawFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n if (field === null) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return null;\n }\n const index = table.getRecordShowIndexByCell(col, row);\n return table.internalProps.dataSource.getRawField(index, field, col, row, this);\n }\n /**\n * 拖拽移动表头位置\n * @param source 移动源位置\n * @param target 移动目标位置\n */\n _moveHeaderPosition(source: CellAddress, target: CellAddress) {\n const sourceCellRange = this.getCellRange(source.col, source.row);\n const targetCellRange = this.getCellRange(target.col, target.row);\n // 调用布局类 布局数据结构调整为移动位置后的\n const moveContext = this.internalProps.layoutMap.moveHeaderPosition(source, target);\n if (moveContext) {\n if (moveContext.moveType === 'column') {\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n // this.colWidthsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.sourceSize);\n this.colWidthsMap.exchangeOrder(\n sourceCellRange.start.col,\n sourceCellRange.end.col - sourceCellRange.start.col + 1,\n targetCellRange.start.col,\n targetCellRange.end.col - targetCellRange.start.col + 1,\n moveContext.targetIndex\n );\n if (!this.transpose) {\n //下面代码取自refreshHeader列宽设置逻辑\n //设置列宽极限值 TODO 目前是有问题的 最大最小宽度限制 移动列位置后不正确\n this.colWidthsLimit = {}; //需要先清空\n this.setMinMaxLimitWidth();\n }\n // // 清空相关缓存\n // const colStart = Math.min(moveContext.sourceIndex, moveContext.targetIndex);\n // const colEnd = Math.max(moveContext.sourceIndex, moveContext.targetIndex);\n // for (let col = colStart; col <= colEnd; col++) {\n // this._clearColRangeWidthsMap(col);\n // }\n } else {\n // // 清空相关缓存\n // const rowStart = Math.min(moveContext.sourceIndex, moveContext.targetIndex);\n // const rowEnd = Math.max(moveContext.sourceIndex, moveContext.targetIndex);\n // for (let row = rowStart; row <= rowEnd; row++) {\n // this._clearRowRangeHeightsMap(row);\n // }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n // this.rowHeightsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.moveSize);\n if (moveContext.targetIndex > moveContext.sourceIndex) {\n this.rowHeightsMap.exchangeOrder(\n moveContext.sourceIndex,\n moveContext.sourceSize,\n moveContext.targetIndex + moveContext.sourceSize - moveContext.targetSize,\n moveContext.targetSize,\n moveContext.targetIndex\n );\n } else {\n this.rowHeightsMap.exchangeOrder(\n moveContext.sourceIndex,\n moveContext.sourceSize,\n moveContext.targetIndex,\n moveContext.targetSize,\n moveContext.targetIndex\n );\n }\n }\n return moveContext;\n }\n return null;\n }\n changeRecordOrder(sourceIndex: number, targetIndex: number) {\n if (this.transpose) {\n sourceIndex = this.getRecordShowIndexByCell(sourceIndex, 0);\n targetIndex = this.getRecordShowIndexByCell(targetIndex, 0);\n } else {\n sourceIndex = this.getRecordShowIndexByCell(0, sourceIndex);\n targetIndex = this.getRecordShowIndexByCell(0, targetIndex);\n }\n this.dataSource.reorderRecord(sourceIndex, targetIndex);\n }\n /**\n * 方法适用于获取body中某条数据的行列号\n * @param findTargetRecord 通过数据对象或者指定函数来计算数据条目index\n * @param field\n * @returns\n */\n getCellAddress(findTargetRecord: any | ((record: any) => boolean), field: FieldDef): CellAddress {\n let targetRecordIndex: number;\n\n for (let i = 0; i < this.internalProps.records.length; i++) {\n const record = this.internalProps.records[i];\n if (typeof findTargetRecord === 'function') {\n if ((<Function>findTargetRecord)(record)) {\n targetRecordIndex = i;\n }\n } else {\n let isAllRight = true;\n for (const prop in findTargetRecord) {\n if (record[prop] !== findTargetRecord[prop]) {\n isAllRight = false;\n break;\n }\n }\n if (isAllRight) {\n targetRecordIndex = i;\n }\n }\n if (isValid(targetRecordIndex)) {\n break;\n }\n }\n const cellRange = this.getCellRangeByField(field, targetRecordIndex);\n if (cellRange) {\n return { row: cellRange.start.row, col: cellRange.start.col };\n }\n return undefined;\n }\n /**\n * 获取指定field及指定数据条index的单元格位置\n * @param {*} field\n * @param {number} index 要获取的第几条数据\n * @return {number} 返回单元格的坐标范围 TODO 转置表有问题bug\n */\n getCellRangeByField(field: FieldDef, index: number): CellRange | null {\n const { layoutMap } = this.internalProps;\n const colObj = layoutMap.columnObjects.find((col: any) => col.field === field);\n if (colObj) {\n const layoutRange = layoutMap.getBodyLayoutRangeById(colObj.id);\n let startRow;\n if (isValid(index)) {\n startRow = layoutMap.getRecordStartRowByRecordIndex(index);\n }\n if (this.transpose) {\n return {\n start: {\n row: layoutRange.start.row,\n col: isValid(startRow) ? startRow + layoutRange.start.col : undefined\n },\n end: {\n row: layoutRange.end.row,\n col: isValid(startRow) ? startRow + layoutRange.end.col : undefined\n }\n };\n }\n return {\n start: {\n col: layoutRange.start.col,\n row: isValid(startRow) ? startRow + layoutRange.start.row : undefined // layoutRange.start.row这里是0 所以无意义\n },\n end: {\n col: layoutRange.end.col,\n row: isValid(startRow) ? startRow + layoutRange.end.row : undefined // layoutRange.start.row这里是0 所以无意义\n }\n };\n }\n return null;\n }\n /**\n * 获取层级节点收起展开的状态\n * @param col\n * @param row\n * @returns\n */\n getHierarchyState(col: number, row: number) {\n if (!this.options.groupBy) {\n const define = this.getBodyColumnDefine(col, row) as ColumnDefine;\n if (!define.tree) {\n return HierarchyState.none;\n }\n }\n const index = this.getRecordShowIndexByCell(col, row);\n return this.dataSource.getHierarchyState(index);\n }\n /**\n * 表头切换层级状态\n * @param col\n * @param row\n * @param recalculateColWidths 是否重新计算列宽 默认为true.(设置width:auto或者 autoWidth 情况下才有必要考虑该参数)\n */\n toggleHierarchyState(col: number, row: number, recalculateColWidths: boolean = true) {\n this.stateManager.updateHoverIcon(col, row, undefined, undefined);\n const hierarchyState = this.getHierarchyState(col, row);\n if (hierarchyState === HierarchyState.expand) {\n this._refreshHierarchyState(col, row, recalculateColWidths);\n this.fireListeners(TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.collapse\n });\n } else if (hierarchyState === HierarchyState.collapse) {\n const record = this.getCellOriginRecord(col, row);\n if (Array.isArray(record.children)) {\n //children 是数组 表示已经有子树节点信息\n this._refreshHierarchyState(col, row, recalculateColWidths);\n }\n this.fireListeners(TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.expand,\n originData: record\n });\n }\n }\n setLoadingHierarchyState(col: number, row: number) {\n this.scenegraph.setLoadingHierarchyState(col, row);\n }\n /** 刷新当前节点收起展开状态,如手动更改过 */\n _refreshHierarchyState(col: number, row: number, recalculateColWidths: boolean = true) {\n let notFillWidth = false;\n let notFillHeight = false;\n const checkHasChart = this.internalProps.layoutMap.checkHasChart();\n // 检查当前状态总宽高未撑满autoFill是否在起作用\n if (checkHasChart) {\n if (this.autoFillWidth) {\n notFillWidth = this.getAllColsWidth() <= this.tableNoFrameWidth;\n }\n if (this.autoFillHeight) {\n notFillHeight = this.getAllRowsHeight() <= this.tableNoFrameHeight;\n }\n }\n const index = this.getRecordShowIndexByCell(col, row);\n const diffDataIndices = this.dataSource.toggleHierarchyState(\n index,\n this.scenegraph.proxy.rowStart - this.columnHeaderLevelCount,\n Math.max(\n this.scenegraph.proxy.rowEnd - this.columnHeaderLevelCount,\n this.scenegraph.proxy.rowStart - this.columnHeaderLevelCount + this.scenegraph.proxy.rowLimit - 1\n )\n );\n const diffPositions = this.internalProps.layoutMap.toggleHierarchyState(diffDataIndices);\n //影响行数\n this.refreshRowColCount();\n\n // for bottom frozen row height map\n for (let row = this.rowCount - this.bottomFrozenRowCount; row < this.rowCount; row++) {\n const newHeight = computeRowHeight(row, 0, this.colCount - 1, this);\n this._setRowHeight(row, newHeight);\n }\n\n this.clearCellStyleCache();\n this.internalProps.layoutMap.clearCellRangeMap();\n this.internalProps.useOneRowHeightFillAll = false;\n // this.scenegraph.updateHierarchyIcon(col, row);// 添加了updateCells:[{ col, row }] 就不需要单独更新图标了(只更新图标针对有自定义元素的情况 会有更新不到问题)'\n // const updateCells = [{ col, row }];\n // // 如果需要移出的节点超过了当前加载部分最后一行 则转变成更新对应的行\n // if (\n // diffPositions.removeCellPositions?.length > 0 &&\n // diffPositions.removeCellPositions[diffPositions.removeCellPositions.length - 1].row >=\n // this.scenegraph.proxy.rowEnd\n // ) {\n // for (let i = 0; i <= diffPositions.removeCellPositions.length - 1; i++) {\n // if (diffPositions.removeCellPositions[i].row <= this.scenegraph.proxy.rowEnd) {\n // updateCells.push({\n // col: diffPositions.removeCellPositions[i].col,\n // row: diffPositions.removeCellPositions[i].row\n // });\n // }\n // }\n // diffPositions.removeCellPositions = [];\n\n // // reset proxy row config\n // this.scenegraph.proxy.refreshRowCount();\n // }\n\n const { updateCells, addCells, removeCells } = fixUpdateRowRange(diffPositions, col, row, this);\n this.reactCustomLayout?.clearCache();\n this.scenegraph.updateRow(\n // diffPositions.removeCellPositions,\n // diffPositions.addCellPositions,\n removeCells,\n addCells,\n updateCells,\n recalculateColWidths,\n true\n );\n this.reactCustomLayout?.updateAllCustomCell();\n\n if (checkHasChart) {\n // 检查更新节点状态后总宽高未撑满autoFill是否在起作用\n if (this.autoFillWidth && !notFillWidth) {\n notFillWidth = this.getAllColsWidth() <= this.tableNoFrameWidth;\n }\n if (this.autoFillHeight && !notFillHeight) {\n notFillHeight = this.getAllRowsHeight() <= this.tableNoFrameHeight;\n }\n if (this.widthMode === 'adaptive' || notFillWidth || this.heightMode === 'adaptive' || notFillHeight) {\n this.scenegraph.updateChartSizeForResizeColWidth(-1); // 如果收起展开有性能问题 可以排查下这个防范\n }\n }\n }\n\n _hasHierarchyTreeHeader() {\n return (this.options.columns ?? this.options.header)?.some((column, i) => column.tree);\n }\n\n getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo {\n const result: DropDownMenuEventInfo = {\n field: this.getHeaderField(col, row),\n value: this.getCellValue(col, row),\n cellLocation: this.getCellLocation(col, row),\n event: undefined\n };\n return result;\n }\n _getSortFuncFromHeaderOption(\n columns: ColumnsDefine | undefined,\n field: FieldDef,\n fieldKey?: FieldKeyDef\n ): SortState['orderFn'] | undefined {\n if (!columns) {\n columns = this.internalProps.columns;\n }\n if (field && columns && columns.length > 0) {\n for (let i = 0; i < columns.length; i++) {\n const header = columns[i];\n if (\n ((fieldKey && fieldKey === header.fieldKey) || (!fieldKey && header.field === field)) &&\n header.sort &&\n typeof header.sort === 'function'\n ) {\n return header.sort;\n } else if (header.columns) {\n const sort = this._getSortFuncFromHeaderOption(header.columns, field, fieldKey);\n if (sort) {\n return sort;\n }\n }\n }\n }\n return undefined;\n }\n /**\n * 更新排序状态\n * @param sortState 要设置的排序状态\n * @param executeSort 是否执行内部排序逻辑,设置false将只更新图标状态\n */\n updateSortState(sortState: SortState[] | SortState | null, executeSort: boolean = true) {\n if (!sortState) {\n // 解除排序状态\n if (this.internalProps.sortState) {\n if (Array.isArray(this.internalProps.sortState)) {\n for (let i = 0; i < (<SortState[]>this.internalProps.sortState).length; i++) {\n sortState = this.internalProps.sortState?.[i];\n sortState && (sortState.order = 'normal');\n }\n } else {\n (<SortState>this.internalProps.sortState).order = 'normal';\n sortState = this.internalProps.sortState;\n }\n }\n } else {\n this.internalProps.sortState = sortState;\n // 这里的sortState需要有field属性\n // this.stateManager.setSortState(sortState as SortState);\n }\n\n sortState = Array.isArray(sortState) ? sortState : [sortState];\n\n if (sortState.some((item: any) => item.field) && executeSort) {\n if (this.internalProps.layoutMap.headerObjects.some(item => item.define.sort !== false)) {\n this.dataSource.sort(\n sortState.map((item: any) => {\n const sortFunc = this._getSortFuncFromHeaderOption(this.internalProps.columns, item.field);\n const hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.field === item.field);\n return {\n field: item.field,\n order: item.order,\n orderFn: sortFunc\n };\n })\n );\n\n // clear cell range cache\n this.internalProps.layoutMap.clearCellRangeMap();\n this.internalProps.useOneRowHeightFillAll = false;\n this.scenegraph.sortCell();\n }\n }\n if (sortState.length) {\n this.stateManager.updateSortState(sortState);\n }\n }\n updateFilterRules(filterRules: FilterRules) {\n this.scenegraph.clearCells();\n if (this.sortState) {\n this.dataSource.updateFilterRulesForSorted(filterRules);\n sortRecords(this);\n } else {\n this.dataSource.updateFilterRules(filterRules);\n }\n this.refreshRowColCount();\n this.stateManager.initCheckedState(this.records);\n this.scenegraph.createSceneGraph();\n }\n /** 获取某个字段下checkbox 全部数据的选中状态 顺序对应原始传入数据records 不是对应表格展示row的状态值 */\n getCheckboxState(field?: string | number) {\n if (this.stateManager.checkedState.size < this.rowCount - this.columnHeaderLevelCount) {\n this.stateManager.initLeftRecordsCheckState(this.records);\n }\n if (isValid(field)) {\n let stateArr = this.stateManager.checkedState.values() as any;\n if (this.options.groupBy) {\n stateArr = getGroupCheckboxState(this) as any;\n }\n return stateArr.map((state: any) => {\n return state[field];\n });\n }\n return new Array(...this.stateManager.checkedState.values());\n }\n /** 获取某个单元格checkbox的状态 */\n getCellCheckboxState(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row) as ColumnDefine;\n const field = define?.field;\n const cellType = this.getCellType(col, row);\n if (isValid(field) && cellType === 'checkbox') {\n const dataIndex = this.dataSource.getIndexKey(this.getRecordShowIndexByCell(col, row)).toString();\n return this.stateManager.checkedState.get(dataIndex)?.[field as string | number];\n }\n return undefined;\n }\n /** 获取某个字段下checkbox 全部数据的选中状态 顺序对应原始传入数据records 不是对应表格展示row的状态值 */\n getRadioState(field?: string | number) {\n if (isValid(field)) {\n return this.stateManager.radioState[field];\n }\n return this.stateManager.radioState;\n }\n /** 获取某个单元格checkbox的状态 */\n getCellRadioState(col: number, row: number): boolean | number {\n return getCellRadioState(col, row, this);\n }\n\n setCellCheckboxState(col: number, row: number, checked: boolean) {\n setCellCheckboxState(col, row, checked, this);\n }\n\n setCellRadioState(col: number, row: number, index?: number) {\n setCellRadioState(col, row, index, this);\n }\n /**\n * 设置表格数据 及排序状态\n * @param records\n * @param option 附近参数,其中的sortState为排序状态,如果设置null 将清除目前的排序状态\n */\n setRecords(records: Array<any>, option?: { sortState?: SortState | SortState[] | null }): void {\n // 释放事件 及 对象\n this.internalProps.dataSource?.release();\n // 过滤掉dataSource的引用\n this.internalProps.releaseList = this.internalProps.releaseList?.filter((item: any) => !item.dataSourceObj);\n this.internalProps.dataSource = null;\n let sort: SortState | SortState[];\n if (Array.isArray(option) || (option as any)?.order) {\n //兼容之前第二个参数为sort的情况\n sort = <any>option;\n } else if (option) {\n sort = option.sortState;\n } else if (option === null) {\n //兼容之前第二个参数为null来清除sort排序状态的逻辑\n sort = null;\n }\n const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n // 清空单元格内容\n this.scenegraph.clearCells();\n\n //重复逻辑抽取updateWidthHeight\n if (sort !== undefined) {\n if (sort === null || (!Array.isArray(sort) && isValid(sort.field)) || Array.isArray(sort)) {\n this.internalProps.sortState = this.internalProps.multipleSort ? (Array.isArray(sort) ? sort : [sort]) : sort;\n this.stateManager.setSortState((this as any).sortState as SortState);\n }\n }\n if (records) {\n _setRecords(this, records);\n if ((this as any).sortState) {\n const sortState = Array.isArray((this as any).sortState) ? (this as any).sortState : [(this as any).sortState];\n\n // 根据sort规则进行排序\n if (sortState.some((item: any) => item.order && item.field && item.order !== 'normal')) {\n // hd?.define?.sort && //如果这里也判断 那想要利用sortState来排序 但不显示排序图标就实现不了\n if (this.internalProps.layoutMap.headerObjectsIncludeHided.some(item => item.define.sort !== false)) {\n this.dataSource.sort(\n sortState.map((item: any) => {\n const sortFunc = this._getSortFuncFromHeaderOption(undefined, item.field);\n // 如果sort传入的信息不能生成正确的sortFunc,直接更新表格,避免首次加载无法正常显示内容\n const hd = this.internalProps.layoutMap.headerObjectsIncludeHided.find(\n (col: any) => col && col.field === item.field\n );\n return {\n field: item.field,\n order: item.order || 'asc',\n orderFn: sortFunc ?? defaultOrderFn\n };\n })\n );\n }\n }\n }\n this.refreshRowColCount();\n } else {\n _setRecords(this, records);\n }\n\n this.stateManager.initCheckedState(records);\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.clearCellStyleCache();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n if (this.internalProps.title && !this.internalProps.title.isReleased) {\n this._updateSize();\n this.internalProps.title.resize();\n this.scenegraph.resize();\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n\n this.render();\n if (isValid(oldHoverState.col) && isValid(oldHoverState.row) && oldHoverState.col >= 0 && oldHoverState.row >= 0) {\n setTimeout(() => {\n this.internalProps?.tooltipHandler.showTooltip(oldHoverState.col, oldHoverState.row);\n }, 0);\n }\n console.log('setRecords cost time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time);\n }\n /**\n * 基本表格树形展示场景下,如果需要动态插入子节点的数据可以配合使用该接口,其他情况不适用\n * @param records 设置到单元格其子节点的数据\n * @param col 需要设置子节点的单元格地址\n * @param row 需要设置子节点的单元格地址\n * @param recalculateColWidths 是否重新计算列宽 默认为true.(设置width:auto或者 autoWidth 情况下才有必要考虑该参数)\n */\n setRecordChildren(records: any[], col: number, row: number, recalculateColWidths: boolean = true) {\n const record = this.getCellOriginRecord(col, row);\n record.children = records;\n const index = this.getRecordShowIndexByCell(col, row);\n this.dataSource.setRecord(record, index);\n this._refreshHierarchyState(col, row, recalculateColWidths);\n }\n\n startEditCell(col?: number, row?: number, value?: string | number) {\n if (isValid(col) && isValid(row)) {\n this.eventManager.isDraging = false;\n this.selectCell(col, row);\n this.editorManager.startEditCell(col, row, value);\n } else if (this.stateManager.select?.cellPos) {\n const { col, row } = this.stateManager.select.cellPos;\n if (isValid(col) && isValid(row)) {\n this.editorManager.startEditCell(col, row, value);\n }\n }\n }\n /** 结束编辑 */\n completeEditCell() {\n this.editorManager.completeEdit();\n }\n /** 获取单元格对应的编辑器 */\n getEditor(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n let editorDefine = this.isHeader(col, row)\n ? (define as ColumnDefine)?.headerEditor ?? this.options.headerEditor\n : (define as ColumnDefine)?.editor ?? this.options.editor;\n\n if (typeof editorDefine === 'function') {\n const arg = {\n col,\n row,\n dataValue: this.getCellOriginValue(col, row),\n value: this.getCellValue(col, row) || '',\n table: this\n };\n editorDefine = (editorDefine as Function)(arg);\n }\n if (typeof editorDefine === 'string') {\n return editors.get(editorDefine);\n }\n return editorDefine as IEditor;\n }\n /** 检查单元格是否定义过编辑器 不管编辑器是否有效 只要有定义就返回true */\n isHasEditorDefine(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n let editorDefine = this.isHeader(col, row)\n ? (define as ColumnDefine)?.headerEditor ?? this.options.headerEditor\n : (define as ColumnDefine)?.editor ?? this.options.editor;\n\n if (typeof editorDefine === 'function') {\n const arg = {\n col,\n row,\n dataValue: this.getCellOriginValue(col, row),\n value: this.getCellValue(col, row) || '',\n table: this\n };\n editorDefine = (editorDefine as Function)(arg);\n }\n return isValid(editorDefine);\n }\n\n /**\n * 更改单元格数据 会触发change_cell_value事件\n * @param col\n * @param row\n * @param value 更改后的值\n * @param workOnEditableCell 限制只能更改配置了编辑器的单元格值。快捷键paste这里配置的true,限制只能修改可编辑单元格值\n */\n changeCellValue(col: number, row: number, value: string | number | null, workOnEditableCell = false) {\n return listTableChangeCellValue(col, row, value, workOnEditableCell, this);\n }\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n * @param workOnEditableCell 是否仅更改可编辑单元格\n */\n changeCellValues(startCol: number, startRow: number, values: (string | number)[][], workOnEditableCell = false) {\n return listTableChangeCellValues(startCol, startRow, values, workOnEditableCell, this);\n }\n /**\n * 添加数据 单条数据\n * @param record 数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\n addRecord(record: any, recordIndex?: number) {\n listTableAddRecord(record, recordIndex, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n\n /**\n * 添加数据 支持多条数据\n * @param records 多条数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\n addRecords(records: any[], recordIndex?: number) {\n listTableAddRecords(records, recordIndex, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n\n /**\n * 删除数据 支持多条数据\n * @param recordIndexs 要删除数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\n deleteRecords(recordIndexs: number[]) {\n listTableDeleteRecords(recordIndexs, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n\n /**\n * 修改数据 支持多条数据\n * @param records 修改数据条目\n * @param recordIndexs 对应修改数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\n updateRecords(records: any[], recordIndexs: number[]) {\n listTableUpdateRecords(records, recordIndexs, this);\n }\n\n _hasCustomRenderOrLayout() {\n const { headerObjects } = this.internalProps.layoutMap;\n if (this.options.customRender) {\n return true;\n }\n\n for (let i = 0; i < headerObjects.length; i++) {\n const headerObject = headerObjects[i];\n if (\n headerObject?.define?.customLayout ||\n headerObject?.define?.headerCustomLayout ||\n headerObject?.define?.customRender ||\n headerObject?.define?.headerCustomRender\n ) {\n return true;\n }\n }\n return false;\n }\n /**\n * 根据字段获取聚合值\n * @param field 字段名\n * 返回数组,包括列号和每一列的聚合值数组\n */\n getAggregateValuesByField(field: string | number): {\n col: number;\n aggregateValue: { aggregationType: AggregationType; value: number | string }[];\n }[] {\n const columns = this.internalProps.layoutMap.getColumnByField(field);\n const results: {\n col: number;\n aggregateValue: { aggregationType: AggregationType; value: number | string }[];\n }[] = [];\n for (let i = 0; i < columns.length; i++) {\n const aggregator = columns[i].columnDefine.aggregator;\n delete columns[i].columnDefine;\n if (aggregator) {\n const columnAggregateValue: {\n col: number;\n aggregateValue: { aggregationType: AggregationType; value: number | string }[];\n } = {\n col: columns[i].col,\n aggregateValue: null\n };\n columnAggregateValue.aggregateValue = [];\n if (Array.isArray(aggregator)) {\n for (let j = 0; j < aggregator.length; j++) {\n columnAggregateValue.aggregateValue.push({\n aggregationType: aggregator[j].type as AggregationType,\n value: aggregator[j].value()\n });\n }\n } else {\n columnAggregateValue.aggregateValue.push({\n aggregationType: aggregator.type as AggregationType,\n value: aggregator.value()\n });\n }\n\n results.push(columnAggregateValue);\n }\n }\n return results;\n }\n /** 是否为聚合值单元格 */\n isAggregation(col: number, row: number): boolean {\n return this.internalProps.layoutMap.isAggregation(col, row);\n }\n\n getGroupTitleLevel(col: number, row: number): number | undefined {\n if (!(this.options as ListTableConstructorOptions).groupBy) {\n return undefined;\n }\n const indexArr = this.dataSource.getIndexKey(this.getRecordShowIndexByCell(col, row));\n const groupLength = (this.dataSource as CachedDataSource).getGroupLength() ?? 0;\n let indexArrLngth = isArray(indexArr) ? indexArr.length - 1 : 0;\n if (groupLength > 0 && indexArrLngth === groupLength) {\n indexArrLngth = undefined;\n }\n return indexArrLngth;\n }\n /**\n * 根据数据的索引获取应该显示在body的第几行\n * @param {number} index The record index.\n */\n getBodyRowIndexByRecordIndex(index: number | number[]): number {\n if (Array.isArray(index) && index.length === 1) {\n index = index[0];\n }\n return this.dataSource.getTableIndex(index);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/ListTable.ts"],"names":[],"mappings":"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","file":"ListTable.js","sourcesContent":["import type {\n AggregationType,\n CellAddress,\n CellRange,\n ColumnsDefine,\n DropDownMenuEventInfo,\n FieldData,\n FieldDef,\n FieldFormat,\n FieldKeyDef,\n FilterRules,\n IPagination,\n ListTableAPI,\n ListTableConstructorOptions,\n MaybePromiseOrUndefined,\n SortOrder,\n SortState\n} from './ts-types';\nimport { HierarchyState } from './ts-types';\nimport { SimpleHeaderLayoutMap } from './layout';\nimport { isArray, isValid } from '@visactor/vutils';\nimport {\n _setDataSource,\n _setRecords,\n checkHasAggregationOnColumnDefine,\n generateAggregationForColumn\n} from './core/tableHelper';\nimport { BaseTable } from './core';\nimport type { BaseTableAPI, ListTableProtected } from './ts-types/base-table';\nimport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\nimport type { ITitleComponent } from './components/title/title';\nimport { Env } from './tools/env';\nimport * as editors from './edit/editors';\nimport { EditManeger } from './edit/edit-manager';\nimport { computeColWidth } from './scenegraph/layout/compute-col-width';\nimport { computeRowHeight } from './scenegraph/layout/compute-row-height';\nimport { defaultOrderFn } from './tools/util';\nimport type { IEditor } from '@visactor/vtable-editors';\nimport type { ColumnData, ColumnDefine } from './ts-types/list-table/layout-map/api';\nimport { getCellRadioState, setCellRadioState } from './state/radio/radio';\nimport { cloneDeepSpec } from '@visactor/vutils-extension';\nimport { getGroupCheckboxState, setCellCheckboxState } from './state/checkbox/checkbox';\nimport type { IEmptyTipComponent } from './components/empty-tip/empty-tip';\nimport { Factory } from './core/factory';\nimport { getGroupByDataConfig } from './core/group-helper';\nimport type { CachedDataSource } from './data';\nimport {\n listTableAddRecord,\n listTableAddRecords,\n listTableChangeCellValue,\n listTableChangeCellValues,\n listTableDeleteRecords,\n listTableUpdateRecords,\n sortRecords\n} from './core/record-helper';\nimport type { IListTreeStickCellPlugin, ListTreeStickCellPlugin } from './plugins/list-tree-stick-cell';\nimport { fixUpdateRowRange } from './tools/update-row';\n// import {\n// registerAxis,\n// registerEmptyTip,\n// registerLegend,\n// registerMenu,\n// registerTitle,\n// registerTooltip\n// } from './components';\n// import {\n// registerChartCell,\n// registerCheckboxCell,\n// registerImageCell,\n// registerProgressBarCell,\n// registerRadioCell,\n// registerSparkLineCell,\n// registerTextCell,\n// registerVideoCell\n// } from './scenegraph/group-creater/cell-type';\n\n// registerAxis();\n// registerEmptyTip();\n// registerLegend();\n// registerMenu();\n// registerTitle();\n// registerTooltip();\n\n// registerChartCell();\n// registerCheckboxCell();\n// registerImageCell();\n// registerProgressBarCell();\n// registerRadioCell();\n// registerSparkLineCell();\n// registerTextCell();\n// registerVideoCell();\n\nexport class ListTable extends BaseTable implements ListTableAPI {\n declare internalProps: ListTableProtected;\n /**\n * 用户配置的options 只读 勿直接修改\n */\n declare options: ListTableConstructorOptions;\n showHeader = true;\n listTreeStickCellPlugin?: ListTreeStickCellPlugin;\n\n // eslint-disable-next-line default-param-last\n constructor(options: ListTableConstructorOptions);\n constructor(container: HTMLElement, options: ListTableConstructorOptions);\n constructor(container?: HTMLElement | ListTableConstructorOptions, options?: ListTableConstructorOptions) {\n if (Env.mode === 'node') {\n options = container as ListTableConstructorOptions;\n container = null;\n } else if (!(container instanceof HTMLElement)) {\n options = container as ListTableConstructorOptions;\n if ((container as ListTableConstructorOptions).container) {\n container = (container as ListTableConstructorOptions).container;\n } else {\n container = null;\n }\n }\n super(container as HTMLElement, options);\n const internalProps = this.internalProps;\n internalProps.frozenColDragHeaderMode = options.frozenColDragHeaderMode;\n //分页配置\n this.pagination = options.pagination;\n internalProps.sortState = options.sortState;\n internalProps.multipleSort = !!options.multipleSort;\n internalProps.dataConfig = options.groupBy ? getGroupByDataConfig(options.groupBy) : {}; //cloneDeep(options.dataConfig ?? {});\n internalProps.columns = options.columns\n ? cloneDeepSpec(options.columns, ['children']) // children for react\n : options.header\n ? cloneDeepSpec(options.header, ['children'])\n : [];\n generateAggregationForColumn(this);\n // options.columns?.forEach((colDefine, index) => {\n // //如果editor 是一个IEditor的实例 需要这样重新赋值 否则clone后变质了\n // if (colDefine.editor) {\n // internalProps.columns[index].editor = colDefine.editor;\n // }\n // });\n\n internalProps.enableTreeNodeMerge = options.enableTreeNodeMerge ?? isValid(options.groupBy) ?? false;\n\n this.internalProps.headerHelper.setTableColumnsEditor();\n this.showHeader = options.showHeader ?? true;\n\n this.transpose = options.transpose ?? false;\n if (Env.mode !== 'node') {\n this.editorManager = new EditManeger(this);\n }\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n\n if (options.dataSource) {\n _setDataSource(this, options.dataSource);\n } else if (options.records) {\n this.setRecords(options.records as any, { sortState: internalProps.sortState });\n } else {\n this.setRecords([]);\n }\n if (options.title) {\n const Title = Factory.getComponent('title') as ITitleComponent;\n internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n\n if (options.enableTreeStickCell) {\n const ListTreeStickCellPlugin = Factory.getComponent('listTreeStickCellPlugin') as IListTreeStickCellPlugin;\n this.listTreeStickCellPlugin = new ListTreeStickCellPlugin(this);\n }\n //为了确保用户监听得到这个事件 这里做了异步 确保vtable实例已经初始化完成\n setTimeout(() => {\n this.fireListeners(TABLE_EVENT_TYPE.INITIALIZED, null);\n }, 0);\n }\n isListTable(): true {\n return true;\n }\n isPivotTable(): false {\n return false;\n }\n isPivotChart(): false {\n return false;\n }\n /**\n * Get the sort state.\n */\n get sortState(): SortState | SortState[] {\n return this.internalProps.sortState;\n }\n\n get records() {\n return this.dataSource?.records;\n }\n\n get recordsCount() {\n return this.dataSource.records.length;\n }\n // /**\n // * Gets the define of the header.\n // */\n // get columns(): ColumnsDefine {\n // return this.internalProps.columns;\n // }\n // /**\n // * Sets the define of the column.\n // */\n // set columns(columns: ColumnsDefine) {\n // this.internalProps.columns = columns;\n // this.options.columns = columns;\n // }\n /**\n * Sets the define of the column.\n */\n updateColumns(columns: ColumnsDefine) {\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n this.internalProps.columns = cloneDeepSpec(columns, ['children']);\n generateAggregationForColumn(this);\n // columns.forEach((colDefine, index) => {\n // if (colDefine.editor) {\n // this.internalProps.columns[index].editor = colDefine.editor;\n // }\n // });\n this.options.columns = columns;\n this.internalProps.headerHelper.setTableColumnsEditor();\n this._hasAutoImageColumn = undefined;\n this.refreshHeader();\n this.dataSource.updateColumns?.(this.internalProps.columns);\n if (this.records && checkHasAggregationOnColumnDefine(columns)) {\n this.dataSource.processRecords(this.dataSource.dataSourceObj?.records ?? this.dataSource.dataSourceObj);\n }\n this.internalProps.useOneRowHeightFillAll = false;\n this.scenegraph.clearCells();\n this.headerStyleCache = new Map();\n this.bodyStyleCache = new Map();\n this.bodyBottomStyleCache = new Map();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n this.renderAsync();\n this.eventManager.updateEventBinder();\n }\n get columns(): ColumnsDefine {\n // return this.internalProps.columns;\n return this.internalProps.layoutMap.columnTree.getCopiedTree(); //调整顺序后的columns\n }\n /**\n *@deprecated 请使用columns\n */\n get header(): ColumnsDefine {\n return this.internalProps.columns;\n }\n /**\n * @deprecated 请使用columns\n */\n set header(header: ColumnsDefine) {\n this.internalProps.columns = header;\n generateAggregationForColumn(this);\n this.options.header = header;\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n //需要异步等待其他事情都完成后再绘制\n this.renderAsync();\n }\n /**\n * Get the transpose.\n */\n get transpose(): boolean {\n return this.internalProps.transpose ?? false;\n }\n /**\n * Set the transpose from given\n */\n set transpose(transpose: boolean) {\n if (this.internalProps.transpose === transpose) {\n return;\n }\n this.internalProps.transpose = transpose;\n // this.options.transpose = transpose; // cause extr update in react\n if (this.internalProps.layoutMap) {\n //后面如果修改是否转置\n this.internalProps.layoutMap.transpose = transpose;\n this.refreshRowColCount();\n\n // 转置后为行布局,列宽只支持依据该列所有内容自适应宽度\n this._resetFrozenColCount();\n this.renderAsync();\n }\n }\n /** 获取单元格展示值 */\n getCellValue(col: number, row: number, skipCustomMerge?: boolean): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n if (!skipCustomMerge) {\n const customMergeText = this.getCustomMergeValue(col, row);\n if (customMergeText) {\n return customMergeText;\n }\n }\n const table = this;\n if (table.internalProps.layoutMap.isSeriesNumber(col, row)) {\n if (table.internalProps.layoutMap.isSeriesNumberInHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getSeriesNumberHeader(col, row);\n return title;\n }\n if ((this.options as ListTableConstructorOptions).groupBy) {\n const { vtableMerge } = table.getCellRawRecord(col, row);\n if (vtableMerge) {\n return '';\n }\n const indexs = this.dataSource.currentIndexedData[row - this.columnHeaderLevelCount] as number[];\n return indexs[indexs.length - 1] + 1;\n }\n const { format } = table.internalProps.layoutMap.getSeriesNumberBody(col, row);\n return typeof format === 'function' ? format(col, row, this) : row - this.columnHeaderLevelCount + 1;\n } else if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n } else if (table.internalProps.layoutMap.isAggregation(col, row)) {\n if (table.internalProps.layoutMap.isTopAggregation(col, row)) {\n const aggregator = table.internalProps.layoutMap.getAggregatorOnTop(col, row);\n return aggregator?.formatValue ? aggregator.formatValue(col, row, this as BaseTableAPI) : '';\n } else if (table.internalProps.layoutMap.isBottomAggregation(col, row)) {\n const aggregator = table.internalProps.layoutMap.getAggregatorOnBottom(col, row);\n return aggregator?.formatValue ? aggregator.formatValue(col, row, this as BaseTableAPI) : '';\n }\n }\n const { field, fieldFormat } = table.internalProps.layoutMap.getBody(col, row) as ColumnData;\n return table.getFieldData(fieldFormat || field, col, row);\n }\n /** 获取单元格展示数据的format前的值 */\n getCellOriginValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isSeriesNumber(col, row)) {\n if (table.internalProps.layoutMap.isSeriesNumberInHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getSeriesNumberHeader(col, row);\n return title;\n }\n const { format } = table.internalProps.layoutMap.getSeriesNumberBody(col, row);\n return typeof format === 'function' ? format(col, row, this) : row - this.columnHeaderLevelCount;\n } else if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n } else if (table.internalProps.layoutMap.isAggregation(col, row)) {\n if (table.internalProps.layoutMap.isTopAggregation(col, row)) {\n const aggregator = table.internalProps.layoutMap.getAggregatorOnTop(col, row);\n return aggregator?.value();\n } else if (table.internalProps.layoutMap.isBottomAggregation(col, row)) {\n const aggregator = table.internalProps.layoutMap.getAggregatorOnBottom(col, row);\n return aggregator?.value();\n }\n }\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n return table.getFieldData(field, col, row);\n }\n /** 获取单元格展示数据源最原始值 */\n getCellRawValue(col: number, row: number): FieldData {\n if (col === -1 || row === -1) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n return table.getRawFieldData(field, col, row);\n }\n /** 获取当前单元格在body部分的展示索引 即(row / col)-headerLevelCount。注:ListTable特有接口 */\n getRecordShowIndexByCell(col: number, row: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getRecordShowIndexByCell(col, row);\n }\n\n /** 获取当前单元格的数据是数据源中的第几条。\n * 如果是树形模式的表格,将返回数组,如[1,2] 数据源中第2条数据中children中的第3条\n * 注:ListTable特有接口 */\n getRecordIndexByCell(col: number, row: number): number | number[] {\n const { layoutMap } = this.internalProps;\n const recordShowIndex = layoutMap.getRecordShowIndexByCell(col, row);\n return this.dataSource.currentPagerIndexedData[recordShowIndex];\n }\n\n getTableIndexByRecordIndex(recordIndex: number | number[]) {\n if (this.transpose) {\n return this.dataSource.getTableIndex(recordIndex) + this.rowHeaderLevelCount;\n }\n return this.dataSource.getTableIndex(recordIndex) + this.columnHeaderLevelCount;\n }\n getTableIndexByField(field: FieldDef) {\n const colObj = this.internalProps.layoutMap.columnObjects.find((col: any) => col.field === field);\n if (!colObj) {\n return -1;\n }\n const layoutRange = this.internalProps.layoutMap.getBodyLayoutRangeById(colObj.id);\n if (this.transpose) {\n return layoutRange.start.row;\n }\n return layoutRange.start.col;\n }\n /**\n * 根据数据源中的index和field获取单元格行列号\n * @param field\n * @param recordIndex\n * @returns\n */\n getCellAddrByFieldRecord(field: FieldDef, recordIndex: number): CellAddress {\n if (this.transpose) {\n return { col: this.getTableIndexByRecordIndex(recordIndex), row: this.getTableIndexByField(field) };\n }\n return { col: this.getTableIndexByField(field), row: this.getTableIndexByRecordIndex(recordIndex) };\n }\n /**\n *\n * @param field 获取整体数据记录。可编辑单元格的话 对应编辑后format前\n * @param col\n * @param row\n */\n getCellOriginRecord(col: number, row: number): MaybePromiseOrUndefined {\n const table = this;\n const index = table.getRecordShowIndexByCell(col, row);\n if (index > -1) {\n return table.dataSource.get(index);\n }\n return undefined;\n }\n /**\n *\n * @param field 获取整体数据记录。可编辑的话 对应编辑前\n * @param col\n * @param row\n */\n getCellRawRecord(col: number, row: number): MaybePromiseOrUndefined {\n const table = this;\n const index = table.getRecordShowIndexByCell(col, row);\n if (index > -1) {\n return table.dataSource.getRaw(index);\n }\n return undefined;\n }\n /**\n * 该列是否可调整列宽\n * @param col\n * @returns\n */\n _canResizeColumn(col: number, row: number): boolean {\n const ifCan = super._canResizeColumn(col, row);\n if (ifCan) {\n if (!this.transpose) {\n // 列上是否配置了禁止拖拽列宽的配置项disableColumnResize\n const cellDefine = this.internalProps.layoutMap.getBody(col, this.columnHeaderLevelCount);\n const isSeriesNumber = this.internalProps.layoutMap.isSeriesNumber(col, row);\n if ((cellDefine as ColumnData)?.disableColumnResize) {\n return false;\n } else if (isSeriesNumber && this.internalProps.rowSeriesNumber.disableColumnResize === true) {\n return false;\n }\n }\n }\n return ifCan;\n }\n updateOption(options: ListTableConstructorOptions) {\n const internalProps = this.internalProps;\n super.updateOption(options);\n internalProps.frozenColDragHeaderMode = options.frozenColDragHeaderMode;\n //分页配置\n this.pagination = options.pagination;\n internalProps.sortState = options.sortState;\n // internalProps.dataConfig = {}; // cloneDeep(options.dataConfig ?? {});\n internalProps.dataConfig = options.groupBy ? getGroupByDataConfig(options.groupBy) : {}; //cloneDeep(options.dataConfig ?? {});\n //更新protectedSpace\n this.showHeader = options.showHeader ?? true;\n internalProps.columns = options.columns\n ? cloneDeepSpec(options.columns, ['children'])\n : options.header\n ? cloneDeepSpec(options.header, ['children'])\n : [];\n generateAggregationForColumn(this);\n // options.columns.forEach((colDefine, index) => {\n // if (colDefine.editor) {\n // internalProps.columns[index].editor = colDefine.editor;\n // }\n // });\n internalProps.enableTreeNodeMerge = options.enableTreeNodeMerge ?? isValid(options.groupBy) ?? false;\n\n this.internalProps.headerHelper.setTableColumnsEditor();\n // 处理转置\n this.transpose = options.transpose ?? false;\n // 更新表头\n this.refreshHeader();\n this.internalProps.useOneRowHeightFillAll = false;\n\n // this.hasMedia = null; // 避免重复绑定\n // 清空目前数据\n if (internalProps.releaseList) {\n internalProps.releaseList.forEach(releaseObj => releaseObj?.release?.());\n internalProps.releaseList = null;\n }\n // // 恢复selection状态\n // internalProps.selection.range = range;\n // this._updateSize();\n // 传入新数据\n if (options.dataSource) {\n _setDataSource(this, options.dataSource);\n } else if (options.records) {\n this.setRecords(options.records as any, {\n sortState: options.sortState\n });\n } else {\n this._resetFrozenColCount();\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.render();\n }\n if (options.title) {\n const Title = Factory.getComponent('title') as ITitleComponent;\n internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n return new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n }\n /**\n * 更新页码\n * @param pagination 修改页码\n */\n updatePagination(pagination: IPagination): void {\n if (this.pagination) {\n typeof pagination.currentPage === 'number' &&\n pagination.currentPage >= 0 &&\n (this.pagination.currentPage = pagination.currentPage);\n pagination.perPageCount &&\n (this.pagination.perPageCount = pagination.perPageCount || this.pagination.perPageCount);\n this.internalProps.layoutMap.clearCellRangeMap();\n this.internalProps.useOneRowHeightFillAll = false;\n // 清空单元格内容\n this.scenegraph.clearCells();\n //数据源缓存数据更新\n this.dataSource.updatePagination(this.pagination);\n this.refreshRowColCount();\n this.stateManager.initCheckedState(this.records);\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n this.renderAsync();\n }\n }\n /** @private */\n refreshHeader(): void {\n const table = this;\n const internalProps = table.internalProps;\n const transpose = table.transpose;\n const showHeader = table.showHeader;\n const layoutMap = (internalProps.layoutMap = new SimpleHeaderLayoutMap(\n this,\n internalProps.columns ?? [],\n showHeader,\n table.options.hierarchyIndent\n ));\n\n layoutMap.transpose = transpose;\n\n if (!transpose) {\n //设置列宽 这里需要优化,考虑转置表格的情况 transpose,转置表格不需要设置colWidth TODO\n this.setMinMaxLimitWidth(true);\n }\n //刷新表头,原来这里是_refreshRowCount 后改名为_refreshRowColCount 因为表头定义会影响行数,而转置模式下会影响列数\n this.refreshRowColCount();\n }\n\n refreshRowColCount(): void {\n const table = this;\n const { layoutMap } = table.internalProps;\n if (!layoutMap) {\n return;\n }\n\n const dataCount = table.internalProps.dataSource?.length ?? 0;\n layoutMap.recordsCount =\n dataCount + (dataCount > 0 ? layoutMap.hasAggregationOnTopCount + layoutMap.hasAggregationOnBottomCount : 0);\n\n if (table.transpose) {\n table.rowCount = layoutMap.rowCount ?? 0;\n table.colCount = layoutMap.colCount ?? 0;\n // table.frozenRowCount = 0;\n // table.frozenColCount = layoutMap.headerLevelCount; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n this.internalProps.frozenColCount = Math.max(\n (layoutMap.headerLevelCount ?? 0) + layoutMap.leftRowSeriesNumberColumnCount,\n this.options.frozenColCount ?? 0\n );\n this.internalProps.frozenRowCount = this.options.frozenRowCount ?? 0;\n if (table.bottomFrozenRowCount !== (this.options.bottomFrozenRowCount ?? 0)) {\n table.bottomFrozenRowCount = this.options.bottomFrozenRowCount ?? 0;\n }\n if (table.rightFrozenColCount !== (this.options.rightFrozenColCount ?? 0)) {\n table.rightFrozenColCount = this.options.rightFrozenColCount ?? 0;\n }\n } else {\n table.colCount = layoutMap.colCount ?? 0;\n table.rowCount = layoutMap.recordsCount * layoutMap.bodyRowSpanCount + layoutMap.headerLevelCount;\n // table.frozenColCount = table.options.frozenColCount ?? 0; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n this.internalProps.frozenColCount = this.options.frozenColCount ?? 0;\n table.frozenRowCount = Math.max(layoutMap.headerLevelCount, this.options.frozenRowCount ?? 0);\n\n if (table.bottomFrozenRowCount !== (this.options.bottomFrozenRowCount ?? 0)) {\n table.bottomFrozenRowCount = this.options.bottomFrozenRowCount ?? 0;\n }\n if (table.rightFrozenColCount !== (this.options.rightFrozenColCount ?? 0)) {\n table.rightFrozenColCount = this.options.rightFrozenColCount ?? 0;\n }\n }\n this.stateManager.setFrozenCol(this.internalProps.frozenColCount);\n // this.scenegraph.proxy?.refreshRowColCount();\n }\n /**\n * 获取records数据源中 字段对应的value 值是format之后的\n * @param field\n * @param col\n * @param row\n * @returns\n */\n getFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n if (field === null) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return null;\n }\n const index = table.getRecordShowIndexByCell(\n table.transpose ? col - table.internalProps.layoutMap.leftRowSeriesNumberColumnCount : col,\n row\n );\n return table.internalProps.dataSource.getField(index, field, col, row, this);\n }\n /**\n * 获取records数据源中 字段对应的value 值是数据源中原始值\n * @param field\n * @param col\n * @param row\n * @returns\n */\n getRawFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n if (field === null) {\n return null;\n }\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return null;\n }\n const index = table.getRecordShowIndexByCell(col, row);\n return table.internalProps.dataSource.getRawField(index, field, col, row, this);\n }\n /**\n * 拖拽移动表头位置\n * @param source 移动源位置\n * @param target 移动目标位置\n */\n _moveHeaderPosition(source: CellAddress, target: CellAddress) {\n const sourceCellRange = this.getCellRange(source.col, source.row);\n const targetCellRange = this.getCellRange(target.col, target.row);\n // 调用布局类 布局数据结构调整为移动位置后的\n const moveContext = this.internalProps.layoutMap.moveHeaderPosition(source, target);\n if (moveContext) {\n if (moveContext.moveType === 'column') {\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n // this.colWidthsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.sourceSize);\n this.colWidthsMap.exchangeOrder(\n sourceCellRange.start.col,\n sourceCellRange.end.col - sourceCellRange.start.col + 1,\n targetCellRange.start.col,\n targetCellRange.end.col - targetCellRange.start.col + 1,\n moveContext.targetIndex\n );\n if (!this.transpose) {\n //下面代码取自refreshHeader列宽设置逻辑\n //设置列宽极限值 TODO 目前是有问题的 最大最小宽度限制 移动列位置后不正确\n this.colWidthsLimit = {}; //需要先清空\n this.setMinMaxLimitWidth();\n }\n // // 清空相关缓存\n // const colStart = Math.min(moveContext.sourceIndex, moveContext.targetIndex);\n // const colEnd = Math.max(moveContext.sourceIndex, moveContext.targetIndex);\n // for (let col = colStart; col <= colEnd; col++) {\n // this._clearColRangeWidthsMap(col);\n // }\n } else {\n // // 清空相关缓存\n // const rowStart = Math.min(moveContext.sourceIndex, moveContext.targetIndex);\n // const rowEnd = Math.max(moveContext.sourceIndex, moveContext.targetIndex);\n // for (let row = rowStart; row <= rowEnd; row++) {\n // this._clearRowRangeHeightsMap(row);\n // }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n // this.rowHeightsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.moveSize);\n if (moveContext.targetIndex > moveContext.sourceIndex) {\n this.rowHeightsMap.exchangeOrder(\n moveContext.sourceIndex,\n moveContext.sourceSize,\n moveContext.targetIndex + moveContext.sourceSize - moveContext.targetSize,\n moveContext.targetSize,\n moveContext.targetIndex\n );\n } else {\n this.rowHeightsMap.exchangeOrder(\n moveContext.sourceIndex,\n moveContext.sourceSize,\n moveContext.targetIndex,\n moveContext.targetSize,\n moveContext.targetIndex\n );\n }\n }\n return moveContext;\n }\n return null;\n }\n changeRecordOrder(sourceIndex: number, targetIndex: number) {\n if (this.transpose) {\n sourceIndex = this.getRecordShowIndexByCell(sourceIndex, 0);\n targetIndex = this.getRecordShowIndexByCell(targetIndex, 0);\n } else {\n sourceIndex = this.getRecordShowIndexByCell(0, sourceIndex);\n targetIndex = this.getRecordShowIndexByCell(0, targetIndex);\n }\n this.dataSource.reorderRecord(sourceIndex, targetIndex);\n }\n /**\n * 方法适用于获取body中某条数据的行列号\n * @param findTargetRecord 通过数据对象或者指定函数来计算数据条目index\n * @param field\n * @returns\n */\n getCellAddress(findTargetRecord: any | ((record: any) => boolean), field: FieldDef): CellAddress {\n let targetRecordIndex: number;\n\n for (let i = 0; i < this.internalProps.records.length; i++) {\n const record = this.internalProps.records[i];\n if (typeof findTargetRecord === 'function') {\n if ((<Function>findTargetRecord)(record)) {\n targetRecordIndex = i;\n }\n } else {\n let isAllRight = true;\n for (const prop in findTargetRecord) {\n if (record[prop] !== findTargetRecord[prop]) {\n isAllRight = false;\n break;\n }\n }\n if (isAllRight) {\n targetRecordIndex = i;\n }\n }\n if (isValid(targetRecordIndex)) {\n break;\n }\n }\n const cellRange = this.getCellRangeByField(field, targetRecordIndex);\n if (cellRange) {\n return { row: cellRange.start.row, col: cellRange.start.col };\n }\n return undefined;\n }\n /**\n * 获取指定field及指定数据条index的单元格位置\n * @param {*} field\n * @param {number} index 要获取的第几条数据\n * @return {number} 返回单元格的坐标范围 TODO 转置表有问题bug\n */\n getCellRangeByField(field: FieldDef, index: number): CellRange | null {\n const { layoutMap } = this.internalProps;\n const colObj = layoutMap.columnObjects.find((col: any) => col.field === field);\n if (colObj) {\n const layoutRange = layoutMap.getBodyLayoutRangeById(colObj.id);\n let startRow;\n if (isValid(index)) {\n startRow = layoutMap.getRecordStartRowByRecordIndex(index);\n }\n if (this.transpose) {\n return {\n start: {\n row: layoutRange.start.row,\n col: isValid(startRow) ? startRow + layoutRange.start.col : undefined\n },\n end: {\n row: layoutRange.end.row,\n col: isValid(startRow) ? startRow + layoutRange.end.col : undefined\n }\n };\n }\n return {\n start: {\n col: layoutRange.start.col,\n row: isValid(startRow) ? startRow + layoutRange.start.row : undefined // layoutRange.start.row这里是0 所以无意义\n },\n end: {\n col: layoutRange.end.col,\n row: isValid(startRow) ? startRow + layoutRange.end.row : undefined // layoutRange.start.row这里是0 所以无意义\n }\n };\n }\n return null;\n }\n /**\n * 获取层级节点收起展开的状态\n * @param col\n * @param row\n * @returns\n */\n getHierarchyState(col: number, row: number) {\n if (!this.options.groupBy) {\n const define = this.getBodyColumnDefine(col, row) as ColumnDefine;\n if (!define.tree) {\n return HierarchyState.none;\n }\n }\n const index = this.getRecordShowIndexByCell(col, row);\n return this.dataSource.getHierarchyState(index);\n }\n /**\n * 表头切换层级状态\n * @param col\n * @param row\n * @param recalculateColWidths 是否重新计算列宽 默认为true.(设置width:auto或者 autoWidth 情况下才有必要考虑该参数)\n */\n toggleHierarchyState(col: number, row: number, recalculateColWidths: boolean = true) {\n this.stateManager.updateHoverIcon(col, row, undefined, undefined);\n const hierarchyState = this.getHierarchyState(col, row);\n if (hierarchyState === HierarchyState.expand) {\n this._refreshHierarchyState(col, row, recalculateColWidths);\n this.fireListeners(TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.collapse\n });\n } else if (hierarchyState === HierarchyState.collapse) {\n const record = this.getCellOriginRecord(col, row);\n if (Array.isArray(record.children)) {\n //children 是数组 表示已经有子树节点信息\n this._refreshHierarchyState(col, row, recalculateColWidths);\n }\n this.fireListeners(TABLE_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.expand,\n originData: record\n });\n }\n }\n setLoadingHierarchyState(col: number, row: number) {\n this.scenegraph.setLoadingHierarchyState(col, row);\n }\n /** 刷新当前节点收起展开状态,如手动更改过 */\n _refreshHierarchyState(col: number, row: number, recalculateColWidths: boolean = true) {\n let notFillWidth = false;\n let notFillHeight = false;\n const checkHasChart = this.internalProps.layoutMap.checkHasChart();\n // 检查当前状态总宽高未撑满autoFill是否在起作用\n if (checkHasChart) {\n if (this.autoFillWidth) {\n notFillWidth = this.getAllColsWidth() <= this.tableNoFrameWidth;\n }\n if (this.autoFillHeight) {\n notFillHeight = this.getAllRowsHeight() <= this.tableNoFrameHeight;\n }\n }\n const index = this.getRecordShowIndexByCell(col, row);\n const diffDataIndices = this.dataSource.toggleHierarchyState(\n index,\n this.scenegraph.proxy.rowStart - this.columnHeaderLevelCount,\n Math.max(\n this.scenegraph.proxy.rowEnd - this.columnHeaderLevelCount,\n this.scenegraph.proxy.rowStart - this.columnHeaderLevelCount + this.scenegraph.proxy.rowLimit - 1\n )\n );\n const diffPositions = this.internalProps.layoutMap.toggleHierarchyState(diffDataIndices);\n //影响行数\n this.refreshRowColCount();\n\n // for bottom frozen row height map\n for (let row = this.rowCount - this.bottomFrozenRowCount; row < this.rowCount; row++) {\n const newHeight = computeRowHeight(row, 0, this.colCount - 1, this);\n this._setRowHeight(row, newHeight);\n }\n\n this.clearCellStyleCache();\n this.internalProps.layoutMap.clearCellRangeMap();\n this.internalProps.useOneRowHeightFillAll = false;\n // this.scenegraph.updateHierarchyIcon(col, row);// 添加了updateCells:[{ col, row }] 就不需要单独更新图标了(只更新图标针对有自定义元素的情况 会有更新不到问题)'\n // const updateCells = [{ col, row }];\n // // 如果需要移出的节点超过了当前加载部分最后一行 则转变成更新对应的行\n // if (\n // diffPositions.removeCellPositions?.length > 0 &&\n // diffPositions.removeCellPositions[diffPositions.removeCellPositions.length - 1].row >=\n // this.scenegraph.proxy.rowEnd\n // ) {\n // for (let i = 0; i <= diffPositions.removeCellPositions.length - 1; i++) {\n // if (diffPositions.removeCellPositions[i].row <= this.scenegraph.proxy.rowEnd) {\n // updateCells.push({\n // col: diffPositions.removeCellPositions[i].col,\n // row: diffPositions.removeCellPositions[i].row\n // });\n // }\n // }\n // diffPositions.removeCellPositions = [];\n\n // // reset proxy row config\n // this.scenegraph.proxy.refreshRowCount();\n // }\n\n const { updateCells, addCells, removeCells } = fixUpdateRowRange(diffPositions, col, row, this);\n this.reactCustomLayout?.clearCache();\n this.scenegraph.updateRow(\n // diffPositions.removeCellPositions,\n // diffPositions.addCellPositions,\n removeCells,\n addCells,\n updateCells,\n recalculateColWidths,\n true\n );\n this.reactCustomLayout?.updateAllCustomCell();\n\n if (checkHasChart) {\n // 检查更新节点状态后总宽高未撑满autoFill是否在起作用\n if (this.autoFillWidth && !notFillWidth) {\n notFillWidth = this.getAllColsWidth() <= this.tableNoFrameWidth;\n }\n if (this.autoFillHeight && !notFillHeight) {\n notFillHeight = this.getAllRowsHeight() <= this.tableNoFrameHeight;\n }\n if (this.widthMode === 'adaptive' || notFillWidth || this.heightMode === 'adaptive' || notFillHeight) {\n this.scenegraph.updateChartSizeForResizeColWidth(-1); // 如果收起展开有性能问题 可以排查下这个防范\n }\n }\n }\n\n _hasHierarchyTreeHeader() {\n return (this.options.columns ?? this.options.header)?.some((column, i) => column.tree);\n }\n\n getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo {\n const result: DropDownMenuEventInfo = {\n field: this.getHeaderField(col, row),\n value: this.getCellValue(col, row),\n cellLocation: this.getCellLocation(col, row),\n event: undefined\n };\n return result;\n }\n _getSortFuncFromHeaderOption(\n columns: ColumnsDefine | undefined,\n field: FieldDef,\n fieldKey?: FieldKeyDef\n ): SortState['orderFn'] | undefined {\n if (!columns) {\n columns = this.internalProps.columns;\n }\n if (field && columns && columns.length > 0) {\n for (let i = 0; i < columns.length; i++) {\n const header = columns[i];\n if (\n ((fieldKey && fieldKey === header.fieldKey) || (!fieldKey && header.field === field)) &&\n header.sort &&\n typeof header.sort === 'function'\n ) {\n return header.sort;\n } else if (header.columns) {\n const sort = this._getSortFuncFromHeaderOption(header.columns, field, fieldKey);\n if (sort) {\n return sort;\n }\n }\n }\n }\n return undefined;\n }\n /**\n * 更新排序状态\n * @param sortState 要设置的排序状态\n * @param executeSort 是否执行内部排序逻辑,设置false将只更新图标状态\n */\n updateSortState(sortState: SortState[] | SortState | null, executeSort: boolean = true) {\n if (!sortState) {\n // 解除排序状态\n if (this.internalProps.sortState) {\n if (Array.isArray(this.internalProps.sortState)) {\n for (let i = 0; i < (<SortState[]>this.internalProps.sortState).length; i++) {\n sortState = this.internalProps.sortState?.[i];\n sortState && (sortState.order = 'normal');\n }\n } else {\n (<SortState>this.internalProps.sortState).order = 'normal';\n sortState = this.internalProps.sortState;\n }\n }\n } else {\n this.internalProps.sortState = sortState;\n // 这里的sortState需要有field属性\n // this.stateManager.setSortState(sortState as SortState);\n }\n\n sortState = Array.isArray(sortState) ? sortState : [sortState];\n\n if (sortState.some((item: any) => item.field) && executeSort) {\n if (this.internalProps.layoutMap.headerObjects.some(item => item.define.sort !== false)) {\n this.dataSource.sort(\n sortState.map((item: any) => {\n const sortFunc = this._getSortFuncFromHeaderOption(this.internalProps.columns, item.field);\n const hd = this.internalProps.layoutMap.headerObjects.find((col: any) => col && col.field === item.field);\n return {\n field: item.field,\n order: item.order,\n orderFn: sortFunc\n };\n })\n );\n\n // clear cell range cache\n this.internalProps.layoutMap.clearCellRangeMap();\n this.internalProps.useOneRowHeightFillAll = false;\n this.scenegraph.sortCell();\n }\n }\n if (sortState.length) {\n this.stateManager.updateSortState(sortState);\n }\n }\n updateFilterRules(filterRules: FilterRules) {\n this.scenegraph.clearCells();\n if (this.sortState) {\n this.dataSource.updateFilterRulesForSorted(filterRules);\n sortRecords(this);\n } else {\n this.dataSource.updateFilterRules(filterRules);\n }\n this.refreshRowColCount();\n this.stateManager.initCheckedState(this.records);\n this.scenegraph.createSceneGraph();\n }\n /** 获取某个字段下checkbox 全部数据的选中状态 顺序对应原始传入数据records 不是对应表格展示row的状态值 */\n getCheckboxState(field?: string | number) {\n if (this.stateManager.checkedState.length < this.rowCount - this.columnHeaderLevelCount) {\n this.stateManager.initLeftRecordsCheckState(this.records);\n }\n if (isValid(field)) {\n let stateArr = this.stateManager.checkedState;\n if (this.options.groupBy) {\n stateArr = getGroupCheckboxState(this);\n }\n return stateArr.map(state => {\n return state[field];\n });\n }\n return this.stateManager.checkedState;\n }\n /** 获取某个单元格checkbox的状态 */\n getCellCheckboxState(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row) as ColumnDefine;\n const field = define?.field;\n const cellType = this.getCellType(col, row);\n if (isValid(field) && cellType === 'checkbox') {\n const dataIndex = this.dataSource.getIndexKey(this.getRecordShowIndexByCell(col, row));\n return this.stateManager.checkedState[dataIndex as number]?.[field as string | number];\n }\n return undefined;\n }\n /** 获取某个字段下checkbox 全部数据的选中状态 顺序对应原始传入数据records 不是对应表格展示row的状态值 */\n getRadioState(field?: string | number) {\n if (isValid(field)) {\n return this.stateManager.radioState[field];\n }\n return this.stateManager.radioState;\n }\n /** 获取某个单元格checkbox的状态 */\n getCellRadioState(col: number, row: number): boolean | number {\n return getCellRadioState(col, row, this);\n }\n\n setCellCheckboxState(col: number, row: number, checked: boolean) {\n setCellCheckboxState(col, row, checked, this);\n }\n\n setCellRadioState(col: number, row: number, index?: number) {\n setCellRadioState(col, row, index, this);\n }\n /**\n * 设置表格数据 及排序状态\n * @param records\n * @param option 附近参数,其中的sortState为排序状态,如果设置null 将清除目前的排序状态\n */\n setRecords(records: Array<any>, option?: { sortState?: SortState | SortState[] | null }): void {\n // 释放事件 及 对象\n this.internalProps.dataSource?.release();\n // 过滤掉dataSource的引用\n this.internalProps.releaseList = this.internalProps.releaseList?.filter((item: any) => !item.dataSourceObj);\n this.internalProps.dataSource = null;\n let sort: SortState | SortState[];\n if (Array.isArray(option) || (option as any)?.order) {\n //兼容之前第二个参数为sort的情况\n sort = <any>option;\n } else if (option) {\n sort = option.sortState;\n } else if (option === null) {\n //兼容之前第二个参数为null来清除sort排序状态的逻辑\n sort = null;\n }\n const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n // 清空单元格内容\n this.scenegraph.clearCells();\n\n //重复逻辑抽取updateWidthHeight\n if (sort !== undefined) {\n if (sort === null || (!Array.isArray(sort) && isValid(sort.field)) || Array.isArray(sort)) {\n this.internalProps.sortState = this.internalProps.multipleSort ? (Array.isArray(sort) ? sort : [sort]) : sort;\n this.stateManager.setSortState((this as any).sortState as SortState);\n }\n }\n if (records) {\n _setRecords(this, records);\n if ((this as any).sortState) {\n const sortState = Array.isArray((this as any).sortState) ? (this as any).sortState : [(this as any).sortState];\n\n // 根据sort规则进行排序\n if (sortState.some((item: any) => item.order && item.field && item.order !== 'normal')) {\n // hd?.define?.sort && //如果这里也判断 那想要利用sortState来排序 但不显示排序图标就实现不了\n if (this.internalProps.layoutMap.headerObjectsIncludeHided.some(item => item.define.sort !== false)) {\n this.dataSource.sort(\n sortState.map((item: any) => {\n const sortFunc = this._getSortFuncFromHeaderOption(undefined, item.field);\n // 如果sort传入的信息不能生成正确的sortFunc,直接更新表格,避免首次加载无法正常显示内容\n const hd = this.internalProps.layoutMap.headerObjectsIncludeHided.find(\n (col: any) => col && col.field === item.field\n );\n return {\n field: item.field,\n order: item.order || 'asc',\n orderFn: sortFunc ?? defaultOrderFn\n };\n })\n );\n }\n }\n }\n this.refreshRowColCount();\n } else {\n _setRecords(this, records);\n }\n\n this.stateManager.initCheckedState(records);\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.clearCellStyleCache();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n if (this.internalProps.title && !this.internalProps.title.isReleased) {\n this._updateSize();\n this.internalProps.title.resize();\n this.scenegraph.resize();\n }\n if (this.options.emptyTip) {\n if (this.internalProps.emptyTip) {\n this.internalProps.emptyTip?.resetVisible();\n } else {\n const EmptyTip = Factory.getComponent('emptyTip') as IEmptyTipComponent;\n this.internalProps.emptyTip = new EmptyTip(this.options.emptyTip, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n }\n\n this.render();\n if (isValid(oldHoverState.col) && isValid(oldHoverState.row) && oldHoverState.col >= 0 && oldHoverState.row >= 0) {\n setTimeout(() => {\n this.internalProps?.tooltipHandler.showTooltip(oldHoverState.col, oldHoverState.row);\n }, 0);\n }\n console.log('setRecords cost time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time);\n }\n /**\n * 基本表格树形展示场景下,如果需要动态插入子节点的数据可以配合使用该接口,其他情况不适用\n * @param records 设置到单元格其子节点的数据\n * @param col 需要设置子节点的单元格地址\n * @param row 需要设置子节点的单元格地址\n * @param recalculateColWidths 是否重新计算列宽 默认为true.(设置width:auto或者 autoWidth 情况下才有必要考虑该参数)\n */\n setRecordChildren(records: any[], col: number, row: number, recalculateColWidths: boolean = true) {\n const record = this.getCellOriginRecord(col, row);\n record.children = records;\n const index = this.getRecordShowIndexByCell(col, row);\n this.dataSource.setRecord(record, index);\n this._refreshHierarchyState(col, row, recalculateColWidths);\n }\n\n startEditCell(col?: number, row?: number, value?: string | number) {\n if (isValid(col) && isValid(row)) {\n this.eventManager.isDraging = false;\n this.selectCell(col, row);\n this.editorManager.startEditCell(col, row, value);\n } else if (this.stateManager.select?.cellPos) {\n const { col, row } = this.stateManager.select.cellPos;\n if (isValid(col) && isValid(row)) {\n this.editorManager.startEditCell(col, row, value);\n }\n }\n }\n /** 结束编辑 */\n completeEditCell() {\n this.editorManager.completeEdit();\n }\n /** 获取单元格对应的编辑器 */\n getEditor(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n let editorDefine = this.isHeader(col, row)\n ? (define as ColumnDefine)?.headerEditor ?? this.options.headerEditor\n : (define as ColumnDefine)?.editor ?? this.options.editor;\n\n if (typeof editorDefine === 'function') {\n const arg = {\n col,\n row,\n dataValue: this.getCellOriginValue(col, row),\n value: this.getCellValue(col, row) || '',\n table: this\n };\n editorDefine = (editorDefine as Function)(arg);\n }\n if (typeof editorDefine === 'string') {\n return editors.get(editorDefine);\n }\n return editorDefine as IEditor;\n }\n /** 检查单元格是否定义过编辑器 不管编辑器是否有效 只要有定义就返回true */\n isHasEditorDefine(col: number, row: number) {\n const define = this.getBodyColumnDefine(col, row);\n let editorDefine = this.isHeader(col, row)\n ? (define as ColumnDefine)?.headerEditor ?? this.options.headerEditor\n : (define as ColumnDefine)?.editor ?? this.options.editor;\n\n if (typeof editorDefine === 'function') {\n const arg = {\n col,\n row,\n dataValue: this.getCellOriginValue(col, row),\n value: this.getCellValue(col, row) || '',\n table: this\n };\n editorDefine = (editorDefine as Function)(arg);\n }\n return isValid(editorDefine);\n }\n\n /**\n * 更改单元格数据 会触发change_cell_value事件\n * @param col\n * @param row\n * @param value 更改后的值\n * @param workOnEditableCell 限制只能更改配置了编辑器的单元格值。快捷键paste这里配置的true,限制只能修改可编辑单元格值\n */\n changeCellValue(col: number, row: number, value: string | number | null, workOnEditableCell = false) {\n return listTableChangeCellValue(col, row, value, workOnEditableCell, this);\n }\n /**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n * @param workOnEditableCell 是否仅更改可编辑单元格\n */\n changeCellValues(startCol: number, startRow: number, values: (string | number)[][], workOnEditableCell = false) {\n return listTableChangeCellValues(startCol, startRow, values, workOnEditableCell, this);\n }\n /**\n * 添加数据 单条数据\n * @param record 数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\n addRecord(record: any, recordIndex?: number) {\n listTableAddRecord(record, recordIndex, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n\n /**\n * 添加数据 支持多条数据\n * @param records 多条数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\n addRecords(records: any[], recordIndex?: number) {\n listTableAddRecords(records, recordIndex, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n\n /**\n * 删除数据 支持多条数据\n * @param recordIndexs 要删除数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\n deleteRecords(recordIndexs: number[]) {\n listTableDeleteRecords(recordIndexs, this);\n this.internalProps.emptyTip?.resetVisible();\n }\n\n /**\n * 修改数据 支持多条数据\n * @param records 修改数据条目\n * @param recordIndexs 对应修改数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\n updateRecords(records: any[], recordIndexs: number[]) {\n listTableUpdateRecords(records, recordIndexs, this);\n }\n\n _hasCustomRenderOrLayout() {\n const { headerObjects } = this.internalProps.layoutMap;\n if (this.options.customRender) {\n return true;\n }\n\n for (let i = 0; i < headerObjects.length; i++) {\n const headerObject = headerObjects[i];\n if (\n headerObject?.define?.customLayout ||\n headerObject?.define?.headerCustomLayout ||\n headerObject?.define?.customRender ||\n headerObject?.define?.headerCustomRender\n ) {\n return true;\n }\n }\n return false;\n }\n /**\n * 根据字段获取聚合值\n * @param field 字段名\n * 返回数组,包括列号和每一列的聚合值数组\n */\n getAggregateValuesByField(field: string | number): {\n col: number;\n aggregateValue: { aggregationType: AggregationType; value: number | string }[];\n }[] {\n const columns = this.internalProps.layoutMap.getColumnByField(field);\n const results: {\n col: number;\n aggregateValue: { aggregationType: AggregationType; value: number | string }[];\n }[] = [];\n for (let i = 0; i < columns.length; i++) {\n const aggregator = columns[i].columnDefine.aggregator;\n delete columns[i].columnDefine;\n if (aggregator) {\n const columnAggregateValue: {\n col: number;\n aggregateValue: { aggregationType: AggregationType; value: number | string }[];\n } = {\n col: columns[i].col,\n aggregateValue: null\n };\n columnAggregateValue.aggregateValue = [];\n if (Array.isArray(aggregator)) {\n for (let j = 0; j < aggregator.length; j++) {\n columnAggregateValue.aggregateValue.push({\n aggregationType: aggregator[j].type as AggregationType,\n value: aggregator[j].value()\n });\n }\n } else {\n columnAggregateValue.aggregateValue.push({\n aggregationType: aggregator.type as AggregationType,\n value: aggregator.value()\n });\n }\n\n results.push(columnAggregateValue);\n }\n }\n return results;\n }\n /** 是否为聚合值单元格 */\n isAggregation(col: number, row: number): boolean {\n return this.internalProps.layoutMap.isAggregation(col, row);\n }\n\n getGroupTitleLevel(col: number, row: number): number | undefined {\n if (!(this.options as ListTableConstructorOptions).groupBy) {\n return undefined;\n }\n const indexArr = this.dataSource.getIndexKey(this.getRecordShowIndexByCell(col, row));\n const groupLength = (this.dataSource as CachedDataSource).getGroupLength() ?? 0;\n let indexArrLngth = isArray(indexArr) ? indexArr.length - 1 : 0;\n if (groupLength > 0 && indexArrLngth === groupLength) {\n indexArrLngth = undefined;\n }\n return indexArrLngth;\n }\n /**\n * 根据数据的索引获取应该显示在body的第几行\n * @param {number} index The record index.\n */\n getBodyRowIndexByRecordIndex(index: number | number[]): number {\n if (Array.isArray(index) && index.length === 1) {\n index = index[0];\n }\n return this.dataSource.getTableIndex(index);\n }\n}\n"]}
@@ -1,7 +1,20 @@
1
1
  import type { CheckboxStyleOption, IStyleOption } from '../../ts-types';
2
2
  import { Style } from './Style';
3
3
  import type { CheckboxStyle as CheckboxStyleThemeOption } from '../../ts-types/column/style';
4
- export declare class CheckboxStyle extends Style {
4
+ export interface ICheckboxStyle extends IStyleOption {
5
+ size?: number;
6
+ spaceBetweenTextAndIcon?: number;
7
+ defaultFill?: string;
8
+ defaultStroke?: string;
9
+ disableFill?: string;
10
+ checkedFill?: string;
11
+ checkedStroke?: string;
12
+ disableCheckedFill?: string;
13
+ disableCheckedStroke?: string;
14
+ checkIconImage?: string;
15
+ indeterminateIconImage?: string;
16
+ }
17
+ export declare class CheckboxStyle extends Style implements ICheckboxStyle {
5
18
  private _size;
6
19
  private _spaceBetweenTextAndIcon;
7
20
  private _defaultFill?;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/body-helper/style/CheckboxStyle.ts"],"names":[],"mappings":"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","file":"CheckboxStyle.js","sourcesContent":["import type { CheckboxStyleOption, IStyleOption } from '../../ts-types';\nimport { Style } from './Style';\nimport type { CheckboxStyle as CheckboxStyleThemeOption } from '../../ts-types/column/style';\n\nlet defaultStyle: CheckboxStyle;\n\nexport class CheckboxStyle extends Style {\n private _size: number;\n private _spaceBetweenTextAndIcon: number;\n\n private _defaultFill?: string;\n private _defaultStroke?: string;\n private _disableFill?: string;\n private _checkedFill?: string;\n private _checkedStroke?: string;\n private _disableCheckedFill?: string;\n private _disableCheckedStroke?: string;\n\n private _checkIconImage?: string;\n private _indeterminateIconImage?: string;\n\n static get DEFAULT(): CheckboxStyle {\n return defaultStyle ? defaultStyle : (defaultStyle = new CheckboxStyle());\n }\n constructor(\n style: CheckboxStyleOption = {},\n headerStyle: CheckboxStyleOption = {},\n checkboxThemeStyle: CheckboxStyleThemeOption = {}\n ) {\n super(style, headerStyle);\n this._size = (style?.size ?? headerStyle?.size ?? checkboxThemeStyle?.size) || 14;\n this._spaceBetweenTextAndIcon =\n (style?.spaceBetweenTextAndIcon ??\n headerStyle?.spaceBetweenTextAndIcon ??\n checkboxThemeStyle?.spaceBetweenTextAndIcon) ||\n 8;\n\n this._defaultFill = style?.checkboxStyle?.defaultFill ?? checkboxThemeStyle?.defaultFill;\n this._defaultStroke = style?.checkboxStyle?.defaultStroke ?? checkboxThemeStyle?.defaultStroke;\n this._disableFill = style?.checkboxStyle?.disableFill ?? checkboxThemeStyle?.disableFill;\n this._checkedFill = style?.checkboxStyle?.checkedFill ?? checkboxThemeStyle?.checkedFill;\n this._checkedStroke = style?.checkboxStyle?.checkedStroke ?? checkboxThemeStyle?.checkedStroke;\n this._disableCheckedFill = style?.checkboxStyle?.disableCheckedFill ?? checkboxThemeStyle?.disableCheckedFill;\n this._disableCheckedStroke = style?.checkboxStyle?.disableCheckedStroke ?? checkboxThemeStyle?.disableCheckedStroke;\n\n this._checkIconImage = style?.checkboxStyle?.checkIconImage ?? checkboxThemeStyle?.checkIconImage;\n this._indeterminateIconImage =\n style?.checkboxStyle?.indeterminateIconImage ?? checkboxThemeStyle?.indeterminateIconImage;\n }\n get size(): number {\n return this._size;\n }\n set size(size: number) {\n this._size = size;\n }\n get spaceBetweenTextAndIcon(): number {\n return this._spaceBetweenTextAndIcon;\n }\n set spaceBetweenTextAndIcon(spaceBetweenTextAndIcon: number) {\n this._spaceBetweenTextAndIcon = spaceBetweenTextAndIcon;\n }\n get defaultFill(): string {\n return this._defaultFill;\n }\n set defaultFill(defaultFill: string) {\n this._defaultFill = defaultFill;\n }\n get defaultStroke(): string {\n return this._defaultStroke;\n }\n set defaultStroke(defaultStroke: string) {\n this._defaultStroke = defaultStroke;\n }\n get disableFill(): string {\n return this._disableFill;\n }\n set disableFill(disableFill: string) {\n this._disableFill = disableFill;\n }\n get checkedFill(): string {\n return this._checkedFill;\n }\n set checkedFill(checkedFill: string) {\n this._checkedFill = checkedFill;\n }\n get checkedStroke(): string {\n return this._checkedStroke;\n }\n set checkedStroke(checkedStroke: string) {\n this._checkedStroke = checkedStroke;\n }\n get disableCheckedFill(): string {\n return this._disableCheckedFill;\n }\n set disableCheckedFill(disableCheckedFill: string) {\n this._disableCheckedFill = disableCheckedFill;\n }\n get disableCheckedStroke(): string {\n return this._disableCheckedStroke;\n }\n set disableCheckedStroke(disableCheckedStroke: string) {\n this._disableCheckedStroke = disableCheckedStroke;\n }\n get checkIconImage(): string {\n return this._checkIconImage;\n }\n set checkIconImage(checkIconImage: string) {\n this._checkIconImage = checkIconImage;\n }\n get indeterminateIconImage(): string {\n return this._indeterminateIconImage;\n }\n set indeterminateIconImage(indeterminateIconImage: string) {\n this._indeterminateIconImage = indeterminateIconImage;\n }\n getStyle(style: IStyleOption): CheckboxStyle {\n return new CheckboxStyle(style, this);\n }\n clone(): CheckboxStyle {\n return new CheckboxStyle(this);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/body-helper/style/CheckboxStyle.ts"],"names":[],"mappings":"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","file":"CheckboxStyle.js","sourcesContent":["import type { CheckboxStyleOption, IStyleOption } from '../../ts-types';\nimport { Style } from './Style';\nimport type { CheckboxStyle as CheckboxStyleThemeOption } from '../../ts-types/column/style';\n\nlet defaultStyle: CheckboxStyle;\n\n/**\n * 复选框样式接口,继承自 IStyleOption\n */\nexport interface ICheckboxStyle extends IStyleOption {\n /**\n * 复选框的尺寸\n */\n size?: number;\n /**\n * 文本与图标之间的间距\n */\n spaceBetweenTextAndIcon?: number;\n /**\n * 默认状态下的填充颜色\n */\n defaultFill?: string;\n /**\n * 默认状态下的边框颜色\n */\n defaultStroke?: string;\n /**\n * 禁用状态下的填充颜色\n */\n disableFill?: string;\n /**\n * 选中状态下的填充颜色\n */\n checkedFill?: string;\n /**\n * 选中状态下的边框颜色\n */\n checkedStroke?: string;\n /**\n * 禁用且选中状态下的填充颜色\n */\n disableCheckedFill?: string;\n /**\n * 禁用且选中状态下的边框颜色\n */\n disableCheckedStroke?: string;\n /**\n * 选中状态下的图标图片\n */\n checkIconImage?: string;\n /**\n * 部分选中状态下的图标图片\n */\n indeterminateIconImage?: string;\n}\n\nexport class CheckboxStyle extends Style implements ICheckboxStyle {\n private _size: number;\n private _spaceBetweenTextAndIcon: number;\n\n private _defaultFill?: string;\n private _defaultStroke?: string;\n private _disableFill?: string;\n private _checkedFill?: string;\n private _checkedStroke?: string;\n private _disableCheckedFill?: string;\n private _disableCheckedStroke?: string;\n\n private _checkIconImage?: string;\n private _indeterminateIconImage?: string;\n\n static get DEFAULT(): CheckboxStyle {\n return defaultStyle ? defaultStyle : (defaultStyle = new CheckboxStyle());\n }\n constructor(\n style: CheckboxStyleOption = {},\n headerStyle: CheckboxStyleOption = {},\n checkboxThemeStyle: CheckboxStyleThemeOption = {}\n ) {\n super(style, headerStyle);\n this._size = (style?.size ?? headerStyle?.size ?? checkboxThemeStyle?.size) || 14;\n this._spaceBetweenTextAndIcon =\n (style?.spaceBetweenTextAndIcon ??\n headerStyle?.spaceBetweenTextAndIcon ??\n checkboxThemeStyle?.spaceBetweenTextAndIcon) ||\n 8;\n\n this._defaultFill = style?.checkboxStyle?.defaultFill ?? checkboxThemeStyle?.defaultFill;\n this._defaultStroke = style?.checkboxStyle?.defaultStroke ?? checkboxThemeStyle?.defaultStroke;\n this._disableFill = style?.checkboxStyle?.disableFill ?? checkboxThemeStyle?.disableFill;\n this._checkedFill = style?.checkboxStyle?.checkedFill ?? checkboxThemeStyle?.checkedFill;\n this._checkedStroke = style?.checkboxStyle?.checkedStroke ?? checkboxThemeStyle?.checkedStroke;\n this._disableCheckedFill = style?.checkboxStyle?.disableCheckedFill ?? checkboxThemeStyle?.disableCheckedFill;\n this._disableCheckedStroke = style?.checkboxStyle?.disableCheckedStroke ?? checkboxThemeStyle?.disableCheckedStroke;\n\n this._checkIconImage = style?.checkboxStyle?.checkIconImage ?? checkboxThemeStyle?.checkIconImage;\n this._indeterminateIconImage =\n style?.checkboxStyle?.indeterminateIconImage ?? checkboxThemeStyle?.indeterminateIconImage;\n }\n get size(): number {\n return this._size;\n }\n set size(size: number) {\n this._size = size;\n }\n get spaceBetweenTextAndIcon(): number {\n return this._spaceBetweenTextAndIcon;\n }\n set spaceBetweenTextAndIcon(spaceBetweenTextAndIcon: number) {\n this._spaceBetweenTextAndIcon = spaceBetweenTextAndIcon;\n }\n get defaultFill(): string {\n return this._defaultFill;\n }\n set defaultFill(defaultFill: string) {\n this._defaultFill = defaultFill;\n }\n get defaultStroke(): string {\n return this._defaultStroke;\n }\n set defaultStroke(defaultStroke: string) {\n this._defaultStroke = defaultStroke;\n }\n get disableFill(): string {\n return this._disableFill;\n }\n set disableFill(disableFill: string) {\n this._disableFill = disableFill;\n }\n get checkedFill(): string {\n return this._checkedFill;\n }\n set checkedFill(checkedFill: string) {\n this._checkedFill = checkedFill;\n }\n get checkedStroke(): string {\n return this._checkedStroke;\n }\n set checkedStroke(checkedStroke: string) {\n this._checkedStroke = checkedStroke;\n }\n get disableCheckedFill(): string {\n return this._disableCheckedFill;\n }\n set disableCheckedFill(disableCheckedFill: string) {\n this._disableCheckedFill = disableCheckedFill;\n }\n get disableCheckedStroke(): string {\n return this._disableCheckedStroke;\n }\n set disableCheckedStroke(disableCheckedStroke: string) {\n this._disableCheckedStroke = disableCheckedStroke;\n }\n get checkIconImage(): string {\n return this._checkIconImage;\n }\n set checkIconImage(checkIconImage: string) {\n this._checkIconImage = checkIconImage;\n }\n get indeterminateIconImage(): string {\n return this._indeterminateIconImage;\n }\n set indeterminateIconImage(indeterminateIconImage: string) {\n this._indeterminateIconImage = indeterminateIconImage;\n }\n getStyle(style: IStyleOption): CheckboxStyle {\n return new CheckboxStyle(style, this);\n }\n clone(): CheckboxStyle {\n return new CheckboxStyle(this);\n }\n}\n"]}
@@ -1,7 +1,14 @@
1
1
  import type { RadioStyleOption, IStyleOption } from '../../ts-types';
2
2
  import { Style } from './Style';
3
3
  import type { RadioStyle as RadioStyleThemeOption } from '../../ts-types/column/style';
4
- export declare class RadioStyle extends Style {
4
+ export interface IRadioStyle extends IStyleOption {
5
+ size?: number;
6
+ spaceBetweenTextAndIcon?: number;
7
+ spaceBetweenRadio?: number;
8
+ outerRadius?: number;
9
+ innerRadius?: number;
10
+ }
11
+ export declare class RadioStyle extends Style implements IRadioStyle {
5
12
  private _size;
6
13
  private _spaceBetweenTextAndIcon;
7
14
  private _spaceBetweenRadio;