import type { ColDef, ColGroupDef, GridOptions } from 'ag-grid-community'; import lodash from 'lodash'; import { AG_GRID_LOCALE_ZH } from './locale.zh'; export default (i18n) => { const defaultOptions: GridOptions = { suppressColumnVirtualisation: true, rowBuffer: 0, loadingOverlayComponent: 'loadingOverlay', noRowsOverlayComponent: 'noRowsOverlay', // debug:true, // unSortIcon: true, domLayout: 'autoHeight', suppressAutoSize: true, suppressMenuHide: true, defaultColDef: { sortable: true, resizable: true, headerValueGetter: (params) => { try { return i18n.t(lodash.get(params, 'colDef.headerName')); } catch (error) { return ''; } }, minWidth: 160, }, sideBar: { toolPanels: [ { id: 'columns', labelDefault: 'Columns', labelKey: 'columns', iconKey: 'columns', toolPanel: 'agColumnsToolPanel', toolPanelParams: { // suppressRowGroups: true, suppressValues: true, suppressPivots: true, suppressPivotMode: true, // suppressSideButtons: true, // suppressColumnFilter: true, // suppressColumnSelectAll: true, // suppressColumnExpandAll: true }, }, { id: 'filters', labelDefault: 'Filters', labelKey: 'filters', iconKey: 'filter', toolPanel: 'agFiltersToolPanel', }, ], }, }; if (i18n.locale === 'zh') { defaultOptions.localeText = AG_GRID_LOCALE_ZH; } return defaultOptions; }; /** * 行 操作 columnDefs 存在 RowAction 则 合并 * @param components */ export function getColumnDefsAction(columnDefs, components) { if (lodash.has(components, 'RowAction')) { const column = { minWidth: 0, headerName: 'action_name', field: 'RowAction', cellRenderer: 'RowAction', cellClass: 'w-row-action', pinned: window.innerWidth > 701 ? 'right' : undefined, sortable: false, suppressMenu: true, suppressColumnsToolPanel: true, }; return [lodash.assign(column, lodash.find(columnDefs, ['field', 'RowAction']))]; } return []; } /** * 行 头部选择框 * @param checkboxSelection */ export function getColumnDefsCheckbox( checkboxSelection, theme: 'balham' | 'alpine' | 'material', ): (ColGroupDef | ColDef)[] { if (lodash.eq(checkboxSelection, false)) { return []; } const width = { material: 65, alpine: 50, balham: 40 }[theme]; return [ { pinned: window.innerWidth > 701 ? 'left' : undefined, rowDrag: false, dndSource: false, lockPosition: true, suppressMenu: true, suppressSizeToFit: true, suppressMovable: true, suppressNavigable: true, suppressCellFlash: true, enableRowGroup: false, enablePivot: false, enableValue: false, editable: false, suppressColumnsToolPanel: true, filter: false, resizable: false, checkboxSelection: true, headerCheckboxSelection: true, width: width, minWidth: width, maxWidth: width, }, ]; }