# Change Log

All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

## 9.0.0

### General Breaking Changes

- Updated minimum version of core-react to `11.11.0`
- Updated minimum version of core-icons to `11.1.4`
- `refreshServerSideStore` TableApi method renamed to `refreshServerSide`
- `getRowId` on the top-level `DataTable` component has new params with more information. Now expects a return value of `string` instead of `string | number`
  Old: `getRowId: (data: any) => string | number`
  New: `getRowId: (params: { api: GridApi, columnApi: ColumnApi, data: any, level: number }) => string`
- _Removed_ `getRowNodeId` prop to `DataTable.Table`. Please pass `getRowId` to the top-level `DataTable` component
  - This change unifies two separate methods for getting row IDs
- _Removed_ the deprecated Column Definition key `filterParams`, please use `filterProps`
- _Removed_ `rowChangeDetectionStrategy` and `immutableData` props have been removed by ag-grid. To use immutable data, use the `getRowId` callback to automatically enable immutable data

### Deprecations

- Column definition key `initialIsPinned` is now deprecated. Please use `pinned` instead. The types and usage remain the same. This will better align column definition keys with the `TableConfig` object

## [8.9.0](https://github.com/procore/core/compare/@procore/labs-data-table@8.8.0...@procore/labs-data-table@8.9.0) (2023-03-07)

### Bug Fixes

- column group columns selection and grouping fix (#12564)
- fix col header reorder icon (#12580)
- fix expanded master node border (#12562)
- row selection bugfix (#12565)
- fix pagination placement, server side filterings, stories (#12609)

### Features

- add company bulk editor (#12296)
- add expanded property to serialized row nodes (#12577)

## [8.8.0](https://github.com/procore/core/compare/@procore/labs-data-table@8.7.0...@procore/labs-data-table@8.8.0) (2023-02-27)

### Bug Fixes

- UIF-3282 Fix Dependent Editable Columns example/code (#12495)
- fix grand total cell not displaying with row actions (#12436)
- fix nested checkbox selection (#12371)
- Header checkbox selection when some rows are not selectable (#12508)

### Features

- add disabled state and tooltip to table controls (#12357)
- add person select bulk editor (#12291)
- adds groupRowAggNodes and maintainColumnOrder (#12392)
- Number Filters, `DataTable.NextFiltersPanel` and `DataTable.NextQuickFilters` (#12344)

### Internal

- `UNSAFE_useTableContext` (#12388)

## [8.7.0](https://github.com/procore/core/compare/@procore/labs-data-table@8.6.0...@procore/labs-data-table@8.7.0) (2023-02-10)

### Bug Fixes

- allow empty string values in cells (#12298)

### Features

- Make the inline cell editor responsive (#12091)

## [8.6.0](https://github.com/procore/core/compare/@procore/labs-data-table@8.5.0...@procore/labs-data-table@8.6.0) (2023-01-27)

### Bug Fixes

- ssrm column height fix hide (#12244)
- checkboxes move when the grouped column is resized (#12256)
- filters should persist when data loaded is async (#12251)
- move box shadow to the containers instead of the rows (#12253)
- support custom fielsets in updated column definitions (#12197)

### Features

- add group empty state (#12221)
- add radio select bulk editor (#12210)
- add style prop to Bulk Actions and Quick Controls bar (#12159)
- expose onRowSelected event (#12230)
- adds serverFilters to getTableConfiguration response (#12300)

## [8.5.0](https://github.com/procore/core/compare/@procore/labs-data-table@8.4.0...@procore/labs-data-table@8.5.0) (2022-1-13)

### Bug Fixes

- drag and drop support for rowDrag function (#12068)
- context panel overflow (#12102)
- filter panel overlay (#12119)
- onManualSort custom group field issue (#12038)
- selected rows count ui indicator (#12120)
- hideContextPanel not working properly outside the table (#12122)

### Features

- IPMF-667 Add checkbox bulk editor (#12058)
- IPMF-673 Add currency bulk editor (#12126)
- add aggregation behavior to PillCell (#12099)
- add borders to column groups (#12061)
- add datetime bulk editor (#12153)
- add getColumnDefinitions to TableApi and id to RowNode (#12094)
- add onSearch to SelectCellEditorParams (#12098)
- custom header height prop - headerHeight (#12065)
- data-table search placeholder configurable (#12127)
- updated license from ag-grid (#12064)

## [8.4.0](https://github.com/procore/core/compare/@procore/labs-data-table@8.3.0...@procore/labs-data-table@8.4.0) (2022-11-28)

### Bug Fixes

- Empty state overlay not being closed when state changes from empty to non-empty (#11730)
- parse date string on the filters panel (#11899)
- return ag-Grid-AutoColumn column state when grouping a column (#11820)
- fix the issue with empty tooltips in nested columns (#11942)
- update onModelUpdated when selectedGroupIndex changes (#11897)
- Update @procore/labs-financials-utils to v2.1.5
- fix issue with group column ordering (#11996)
- fix issue with empty state not rendering on searching in client side row model (#11998)

### Features

- implement custom editor fields on the bulk edit panel (#11871)
- Data Table aria label for bulk edit button (#11818)
- Add a custom node to column headers (#11993)
- UIF-2675 SSRM Group Row Selection (#11915)
- add Bulk Edit label and update side panel header title. add track events for fields (#12012)
- add getFilteredAndSortedRowNodes to TableApi (#12035)

## [8.3.0](https://github.com/procore/core/compare/@procore/labs-data-table@8.2.0...@procore/labs-data-table@8.3.0) (2022-10-03)

### Features

- `isRowOverdue` for overdue red text row style (#11768)
- `data-qa` tags on Context Panel table settings sections, `data-table-config-panel-section-row-height` and `data-table-config-panel-section-configure-columns` (#11556)

## [8.2.0](https://github.com/procore/core/compare/@procore/labs-data-table@8.1.0...@procore/labs-data-table@8.2.0) (2022-09-15)

### Bug Fixes

- Fix bulk edit when changing the editability of a column initial render (#11620)
- DataTable Panel animation improvement (76b0069)

## [8.1.0](https://github.com/procore/core/compare/@procore/labs-data-table@8.0.1...@procore/labs-data-table@8.1.0) (2022-09-07)

### Bug Fixes

- fixing rows rendering issue with changing default row detection strategy to IdentityCheck (#11386)
- Data Table Text Cell and (feat) Link Cell Line Clamp (#11555)
- isEmptyValue return false when value is true (#11551)

### Features

- PREC-3064 Server-side row selection updates (#10601)
- PREC-3305 Viewport Scrolling Story and API (#11352)
- UIF-2350 Support 4 lines in DataTable header cells (#11445)

## [8.0.1](https://github.com/procore/core/compare/@procore/labs-data-table@8.0.0...@procore/labs-data-table@8.0.1) (2022-08-03)

- fix: always display header menu option arrow (#11357)
- fix: translation additions (#11362)
- fix: Disable empty state renderer on SSRM when the data is grouped (#11307)
- fix: add tableApi dependency to imperative handle to keep up to date (#11400)
- fix/feat: DataTable header cell adds tooltip when ellipsis (#11387)

## [8.0.0](https://github.com/procore/core/compare/@procore/labs-data-table@7.5.1...@procore/labs-data-table@8.0.0) (2022-07-19)

### General Breaking Changes

- require core-react 11 (#11174)
- DataTable.Table Props: Removed onBulkEditUpdate from internal Table, pass onBulkEditUpdate to the top-level DataTable component
  We’ve consolidated several ColumnDefinition keys related to filtering, with the goal to unify naming regardless of client side or server side row model:
- Column Definition: filterType replaced by filterRenderer
- Column Definition: filterParams replaced by filterProps, this key is used for both client side and server side row models to pass props to the column’s filter
- Column Definition: serverFilterParams removed, please use filterProps
- Column Definition: pinnedRowCellRenderer replaced with cellRendererSelector to prepare for future versions of Ag-Grid. Documentation updated, and more info available on the ag-grid docs
  With the above change, the TPinnedRenderer generic has been removed from the ColumnDefinition type, and will no longer need to be passed to typed column definitions

```ts
// v7
TextCellColumnDefinition<
  string,
  'customBottomRowRenderer', // pinned row renderer
  string,
  string
>;
// v8
TextCellColumnDefinition<string, string, string>;
```

### Server Side Row Model Breaking Changes

- onServerSideDataRequest request object: colId key removed, use the field key for column identification
- onServerSideDataRequest request object: filterModel renamed as serverFilters for clarity

### Non breaking

- feat: Add es-ES locale (#11064)
- feat: Add translation for selection counters (#11065)
- fix: DataTable add translation in date picker filter control (#11086)
- feat: DataTale add sizeColumnsToFit to TableApi (#11177)
- feat: Add onSelectAll callback (#11125)
- feat: menu kebab is always shown (#11216)
- feat: Add Label to Group By Select (#11217)
- feat: add a possibility to disable siblings groups row selection (#11128)
- feat: sort enabled by default in column menu (#11255)
- feat: Location Filter (#10954)

## [7.5.1](https://github.com/procore/core/compare/@procore/labs-data-table@7.5.0...@procore/labs-data-table@7.5.1) (2022-06-08)

- test: fix DataTable tests add awaits to all findBys (#10991)

## [7.5.0](https://github.com/procore/core/compare/@procore/labs-data-table@7.4.0...@procore/labs-data-table@7.5.0) (2022-06-06)

- feat: Reset pagination for Search, Sort, and Group on Client side data (#10867)
- fix: auto-Resize of the columns should happen after rows are rendered (#10801)

## [7.4.1](https://github.com/procore/core/compare/@procore/labs-data-table@7.4.0...@procore/labs-data-table@7.4.1) (2022-05-20)

## [7.4.0](https://github.com/procore/core/compare/@procore/labs-data-table@7.3.0...@procore/labs-data-table@7.4.0) (2022-05-16)

### Features

- add FilterProps#index field allowing custom filter positioning ([#10728](https://github.com/procore/core/issues/10728))
- Add date cell and date editor to the data table component ([#10467](https://github.com/procore/core/issues/10467))
- bulkEditable on column definition, decouple bulk editor from inline editor ([#10626](https://github.com/procore/core/issues/10626))
- trigger change events when server filters change and fix clearing filters ([#10735](https://github.com/procore/core/issues/10735))

### Bug Fixes

- show user-selected group order in group selector summary ([#10740](https://github.com/procore/core/issues/10740))

## [7.3.0](https://github.com/procore/core/compare/@procore/labs-data-table@7.2.0...@procore/labs-data-table@7.3.0) (2022-05-09)

### Features

- Server Side Bulk Edit ([#10481](https://github.com/procore/core/issues/10481))
- Improve Empty State default and customization, DefaultEmptyStateRenderer ([#10678](https://github.com/procore/core/issues/10678))
- support custom page size and margin for pdf export and add table header to each page ([10637](https://github.com/procore/core/pull/10637))
- improve loading experience for infinite scroll pagination ([#10617](https://github.com/procore/core/issues/10617))
- show validation on non-editable cells ([#10638](https://github.com/procore/core/issues/10638))

### Bug Fixes

- reset pagination on sort, filter, search to avoid page overflow ([#10480](https://github.com/procore/core/issues/10480))
- Table header text should be truncated ([#10635](https://github.com/procore/core/issues/10635))
- right aligned headers aligned with text ([#10706](https://github.com/procore/core/issues/10706))
- row states inline edit styles ([#10713](https://github.com/procore/core/issues/10713))
- hide header checkbox when row selection not enabled ([#10714](https://github.com/procore/core/issues/10714))

## [7.2.0](https://github.com/procore/core/compare/@procore/labs-data-table@7.1.0...@procore/labs-data-table@7.2.0) (2022-04-25)

### Features

- add group/row expansion buttons ([#10414](https://github.com/procore/core/issues/10414))

## [7.1.0](https://github.com/procore/core/compare/@procore/labs-data-table@7.0.1...@procore/labs-data-table@7.1.0) (2022-04-08)

### Features

- DataTable using core-react Panel ([#10250](https://github.com/procore/core/issues/10250))
- Add bulk editor types select, multiSelect, and dateSelect ([#10287](https://github.com/procore/core/issues/10287))

### Bug Fix

- EmptyState on Server Side Row Model ([#10273](https://github.com/procore/core/issues/10273))

## [7.0.1](https://github.com/procore/core/compare/@procore/labs-data-table@7.0.0...@procore/labs-data-table@7.0.1) (2022-03-30)

### Bug Fix

- correct DataTable to use non-broken core react peer dep ([#10336](https://github.com/procore/core/issues/10336))

# [7.0.0](https://github.com/procore/core/compare/v10.25.0...@procore/labs-data-table@7.0.0) (2022-03-28)

### Features

- **Breaking:** Updated `@procore/core-react` and `@procore/core-icons` peer dep to `^10.27.0`
- feat: Updated major version of ag-grid to v26
  - Deprecated `pinnedRowCellRenderer`, use `cellRendererSelector` instead
- Standardize approach to 0 as a value in cell renderers ([#10199](https://github.com/procore/core/pull/10199))
- Add placeholder prop to data-table multiselect filters ([#10242](https://github.com/procore/core/pull/10242))

### Bugfix

- LineNumbers story sub-groups total should display value ([#10206](https://github.com/procore/core/pull/10206))

## 6.12.1

### Bugfix

- fix: Applies internal classes to nested tables

## 6.12.0

### Enhancements

- Date Filter opens to display same month as previous selection

### Internal

- Dev dependency on `core-react` updated to latest version

## 6.11.1

### Enhancements

- Exposes `rowSize` constant

### Bugfix

- Reduces padding around nested tables according to DST
- Fixes `PillCellRenderer` to not render empty pill when `value` is empty

## 6.11.0

### Enhancements

- Adds _optional_ prop `suppressColumnVirtualisation` to disable column virtualization. Defaults to `true`.
- Pins rows actions column, if present, to the right if `suppressColumnVirtualisation` is `false`.
- Adds _optional_ prop `rowDragManaged`. Defaults to `true`. More details [here](https://www.ag-grid.com/javascript-data-grid/row-dragging/#managed-dragging).
- Adds _optional_ prop `rowBuffer` to manage virtualized rows buffer.
- Performance updates.
- Splits _column definitions_ stories into multiple files.

### Bugfix

- Fixes column group rendering issue.
- currency cell: Fixes empty input.
- number cell: Fixes empty and alpha input.

## 6.10.0

### Enhancements

- feat: Replaces default data table header with a generic header component that allows for future extensibility

## 6.9.2

### Bug Fixes

- `NumberCell` and `TextCell` placeholder shouldn't be displayed if it's a group cell

## 6.9.1

### Bug Fixes

- Show empty cell inputs when cell value is invalid. Show select arrow when cell value is invalid

## 6.9.0

### Enhancements

- Added `errorMessage` and `isRequired` props to `valueValidator`

## 6.8.2

### Improvement

- Updating @procore/labs-group-by-select dependency version to the latest

## 6.8.1

### Bug Fixes

- Various minor bug fixes and UX tweaks to Date Filter
- Now recommend `10.21.0` or greater of `@procore/core-react` when using date filters for DateInput improvements

### Internal

- Full test suite for `DateFilter` component
- Refactor of Date Filter internals for clarity

## 6.8.0

### Enhancements

- Recalculates totals when the row model updates (rows, filters, or search change)

## 6.7.4

### Bug Fixes

- Group row adjusted to fix bug that can cause row actions to break to a new line.

## 6.7.3

### Bug Fixes

- Fixes bug when under some circumstances, if column definitions are changed, the row actions column would get lost.

## 6.7.2

### Bug Fixes

- Placeholder for empty editable cells should not be shown for groups

## 6.7.1

### Bug Fixes

- Fixes bug when grouping adds an extra empty column to column definitions
- Showing hidden column renders it according to its position in column definitions

## 6.7.0

### Enhancements

- Adds date filtering to the serverside row model filtering types
- Adds `timeZone` column definition key in new `DateTimeColumnDefinition` type
- Recommend `10.20.1-rc.19` or greater of `@procore/core-react` when using date filters for various improvements

## 6.6.6

### Revert

- add `filterType` back to transformer. a valid way to enable filtering
  - avoid mismatch `filterRenderer: 'list'`. from reading existing localStorage key: value to transforming it to the new key but old value

## 6.6.5

### Bug Fixes

- Fix issue with pagination not working for Server-Side Row Model (using `onServerSideDataRequest`)

## 6.6.4

### Bug Fixes

- Allow passing className and style props to Panel components
- Fix spacing for Panels in stories

## 6.6.3

- Fixes a type error for Timeout: TS2322: Type 'Timeout' is not assignable to type 'number'

## 6.6.2

### Bug Fixes

- Add placeholder for table editable cells

## 6.6.1

### Improvement

- Changes `sum` aggregration function to use cached `for-loop` for performance improvements over `reduce`.

## 6.6.0

### Enhancements

- New `customFilters` prop on DataTable
  ```
  <DataTable
    customFilters={[{
      component: React.FunctionComponent;
      name: string;
    }]}
  ```
- New `getFilterTokenText` and `getFilterHeadingText` as filter parameters
- Standardizes the filter values as being expected to be based on the `SetFilter` from `ag-grid`, which defaults all filter values to arrays

### Deprecations

- Deprecates `filterType` in favor of `filterRenderer` to avoid having naming duplications between `DataTable` and `ag-grid`
- Removes the rendering of children in the filters panel
- Removes the default ordering of the server-side filters to match parity with the client-side filters which are based of off `ag-grid's` provided filter functionality.
- Use `filterProps` instead of `serverFilterParams` & `filterParams`

## 6.5.3

### Bug Fixes

- Resolve issue with configuration panel not persisting on column show/hide

## 6.5.2

### Bug Fixes

- Fix `GroupCell` indentation styling

## 6.5.1

### Bug Fixes

- Resolve issue causing duplication of row actions

## 6.5.0

### Enhancements

- Add options to the `refreshCells` api function

## 6.4.0

### Enhancements

- Add selectAll and deselectAll api

## 6.3.1

### Bug Fixes

- Resolve issue with DataTable not applying filters from initialTableConfig

## 6.3.0

### Enhancements

- Add a custom renderer for auto group columns, which passes node properties to the inner renderer
- Adjust styling of checkboxes in group/grouped rows to be after the caret and be indented
- Add indentation indicators to grouped rows and adjusted subtotal row styling
- Add automatic suppression of row click selection whenever table row selection is enabled

## 6.2.4

### Bug Fixes

- Fix issue with text overlap between columns for editable cells with row selection enabled

## 6.2.3

### Enhancements

- Expose `lockPinned` which allows pinned column to be locked in place

## 6.2.2

### Enhancements

- Resolve issue causing incorrect column ordering when updating column definitions
- Add useMemo to propagate dynamic updates to columnDefinitions

## 6.2.1

### Enhancements

- Replace Config and Filter Buttons with ToggleButtons

## 6.2.0

### Enhancements

- Add getColor to PillSelect cellEditorParams

## 6.1.8

### Bug Fixes

- Remove console log

## 6.1.7

### Bug Fixes

- Resolve issue with filters options not updating when row data changes or updates

## 6.1.6

### Enhancements

- Changed cell font size to 12

## 6.1.5

### Bug Fixes

- Fix GranularRequired utility is messing up generic types for column definitions

## 6.1.4

### Bug Fix

- Fix issue with server side row model where multiple rerenders were causing `onServerSideDataRequest` to be fired multiple times on initial render

## 6.1.3

### Bug Fix

- Fix box shadow on grouped and pinned columns so it does not render over the nested table

## 6.1.2

### Bug Fix

- Fix `expandAll` and `collapseAll` to work for rows containing nested tables, not just standard group rows

## 6.1.1

### Bug Fix

- Fix vertical divider in grouped table

## 6.1.0

### Enhancements

- Adds `columnGroupShow` on nested column definitions to allow expanding and collapsing of group columns
- Adds `marryChildren` on column definitions to prevent columns to be dragged within other groups
- Adds group columns expanded state to the `DataTable.initialTableConfig` prop and to the `getTableConfiguration` and `setTableConfiguration` functions in the Table API.

## 6.0.1

### Bug Fixes

- Set semibold font-weight for all cells in grouped rows

## 6.0.0

### Breaking Change

- Upgrades peer dependency on `@procore/core-react` to `v10.18.0` or higher
- Removes `forwardRef` from top-level `DataTable` component. Instead of passing a ref to `DataTable` to get the `tableApi`, please use the `onTableReady` callback
- Disables the `import/no-cycle` rule in ESLint and fixes the appropriate files to remove the individual `next-line` disablers

## 5.2.4

### Enhancements

- Use Avatar Stack component for People cell

## 5.2.3

### Bug Fix

- Add TextCell ellipsis and text wrap
- Add a separator for name and company text in a small single view (PeopleCell)

## 5.2.2

### Bug Fixes

- Fix bug where columnState would be null when `tableApi.getTableConfiguration()` was called in the `onTableReady` callback.

## 5.2.1

### Enhancements

- Do not autosize columns with with or flex key set

## 5.2.0

### Enhancements

- Adds `customFooters` to `TableProps` to allow adding custom footer rows while preserving default aggregation behavior
- Adds `customFooters` attribute to `DetailRowConfig`
- Adds `refreshStrategy` attribute to `DetailRowConfig` to allow configuration of the detail grid refresh strategy
- Adds `parentId` and `parentData` to `DataTableCellRendererProps` to provide information about parent rows to nested tables
- Adds `getDetailGridTableApi` to `TableApi` to provide a partial `TableApi` for each detail grid

## 5.1.3

### Bug Fixes

- Fix the actions should remain visible when the hovering over the menu items.

## 5.1.2

### Enhancements

- Allow single-click to start editing cell

## 5.1.1

### Bug Fixes

- Add company name for list of people (PeopleCell)
- Fix person name shown when no getCompanyName cellRendererParam provided (PeopleCell)

## 5.1.0

### Enhancements

- Introduces `updateServerSideDataSource` on the `InternalTableContext` in order to create a unified update function for server-side data.
- Moves `onChangeFilterValue` into the `filterStorage` object and creates a new property called `filtersState` which hold the state objects that live within the `filterStorage` state.
- Removes individual filter functions such as `onClearFilter` and `onChangeSelectedFilter` from the `filterStorage` object.

## 5.0.0

### Breaking Changes

- `onServerSideDataRequest` prop can only be passed to `DataTable`, removed from `DataTable.Table`
- Move `columnDefinitions` prop from `DataTable.Table` to `DataTable`
- Fix typo in `tableApi.getRootAggegrateData`, renamed to `tableApi.getRootAggregateData`
- The `children` key has been removed from the `ColumnDefinition` type. When using nested columns, use the `NestedColumn` type for the nested column definitions

### Enhancements

- Upgrade ag-grid from v25.1.0 -> v25.3.0
  - For a list of changes, see: https://www.ag-grid.com/ag-grid-changelog/

### Internal Enhancements

- Prevent ag-grid-enterprise from being hoisted in the monorepo. It depends on ag-grid-community internally so the two packages must be colocated.
- Internal rework of several systems:
  - Store column definitions in a ref in InternalTableContext, for performance reasons
  - Listen to onDisplayedColumnsChanged event in row grouping, table config for updates
  - Call setServerSideDataSource in onGridReady instead of as prop to AgGridReact
- Refactor serverSideFilters, serverSideSearch tests (to get passing, also following RTL best practices)
- Merge `columnDefinitions` with `initialTableConfig` so that Table renders with initial config applied
- Remove several callbacks passed to ag-grid like `onModelUpdated`, `onNewColumnsLoaded`, etc reducing rerenders
- No longer pass `columnDefinitions` to ag-grid directly, use api to set in DataTable provider level.
  - Small conditional update if row actions are present

### Fixes

- Properly filter out `rowActions` and columns that are `lockVisible` and `hidden` from appearing in the Table Configuration Panel

## 4.0.3

### Bug Fix

- Name in People cell should be centered when there is no company

## 4.0.2

### Bug Fix

- Fix padding for editable-cell

## 4.0.1

### Bug Fix

- Add second line and truncation to Company cell

## 4.0.0

### Breaking Changes

- Removes `Filters` from the base ContextPanel component, use new `DataTable.FiltersPanel` component
- Renames `data-qa-context-panel-filters` to `data-qa-filters-context-panel`

## 3.26.0

### Enhancement

- Extends optional prop `rowSelectionEnabled` to be a function. It is used to determine if a row is selectable or not.

## 3.25.1

### Bug Fix

- Added drop shadow to pinned columns

## 3.25.0

### Enhancements

- Enable the rendering of children components at the top of the `Filters` and `ServerSideFilters` components
- Fixes a bug where the aggregation footer is showing up when there is no aggregation configured

## 3.24.0

### Enhancements

- Added `isRowActive` prop on `DataTable.Table`
  - Uses [row class rules](https://www.ag-grid.com/react-data-grid/row-styles/#row-class-rules) to set `ag-grid--dt-active` css class.

## 3.23.0

### Enhancements

- Added `childIndex`, `footer`, and `parent` properties to the node property passed to valueGetter functions
- Added a `refreshCells` function to the table api, so the value getters can be optionally recomputed after a sorting change.

## 3.22.1

### Bug Fix

- fix for rightAligned cell

## 3.22.0

### Enhancements

- Update `DataTable.BulkActions` to accept custom actions.
  - Renders `children`, if present, defaults to `BulkEditActionButton` if no children are passed in.
  - Adds optional props `showAlways` - defaults to `false`.
    - `showAlways` -- Does not the hide bulk actions bar even when the row selection is empty.
  - Adds `BulkEditActionButton` as a sub component.
- Adds a new export `useRowSelectionState` hook
  - Returns the list of selected row nodes - `RowNode[]`.

## 3.21.2

### Enhancements

- Added `field` to the list of props passed into custom component renderers.
- Debounced on `onColumnResized` to prevent numerous calls to `onTableConfigChange`.

### Bug fix

- Fixed the analytics property for `design_system.data_table.column.grouped` to pass the colId's and not [object Object]

## 3.21.1

- Update `TableApi` type with `expandAll, collapseAll, setRowNodeExpanded` methods

## 3.21.0

- Add `expandAll, collapseAll, setRowNodeExpanded` methods from GridAPI to TableApi.

## 3.20.0

- Upgrade `financials-utils` to `v2.0.1`

## 3.19.0

- Exposed the `getSelectedRows` function from AgGridReact on the TableApi util
- Added a `rowSelectionEnabled` prop to the `DataTable.Table` component to enable row selection without the `DataTable.BulkActions` component from being required.

## 3.17.0

### Enhancements

- Added optional `excelDataTypeFormats` prop on `DataTable.Table` with matching typing as expected in AgGridReact.
- Added optional `cellExcelDataType` prop to `ColumnDefinition` type for excel data type mapping.

## 3.16.1

### Bug fix

- Fixed issue where nested child fields were not using the correct column definition type

## 3.16.0

### Enhancements

- Added `groupIncludeFooter` as an optional prop to the DataTable.Table. This allows users to include or exclude subtotal rows inside groups. The default value is true.

## 3.15.0

### Enhancements

- Added `preserveColumnWidths` as an optional property in the `HTMLStringExportConfig` that is passed into `exportToHTMLString()`. This allows users to preserve the set column widths when exporting the table to HTML.
- Added the `groupDefaultExpanded` as an optional prop to the DataTable.Table. This allows users to render the table with groups expanded by default.

### Bug Fixes

- Fixed issue that caused rows to have a height of 0 in exported HTML when the parent DOM node had a `display: none` style applied to it.
- Fixed issue that caused the internal HTML string generation code to be called multiple times when the `exportToHTMLString()` tableApi function was only called once.

## 3.14.0

### Enhancements

- `rows` prop on `DataTable.Table` no longer required, as it isn't necessary for server side implementations
- Documentation restructure to split docs into client side and server side

## 3.13.1

### Bug fix

- `Group By` column menu option is suppressed unless `enableRowGroup` is true on the column definition

## 3.13.0

### Enhancements

- Added support for server side search. `searchValue` added to `onServerSideDataRequest` `request` object
  - The `Search` component will automatically switch to server side search if `onServerSideDataRequest` is present
- Extended Server Side Filtering stories and demo server to support search

### Bug Fixes

- Changed DataTable test command to use `--runInBand` flag, fixing non-deterministic errors

## 3.12.0

### Enhancements

- Added `skipFooters`, `skipGroups`, `skipPinnedBottom` and `skipPinnedTop` as optional properties in the `CSVExportConfig` that is passed into `exportToCSV()`. This gives users more control over the exported CSV file.
- Added `sheetName` as an optional property in the `ExcelExportConfig` that is passed into `exportToExcel()`. This enables users to specify the worksheet name in the exported Excel workbook.

### Bug Fixes

- Fixed issue that prevented `cellCSVFormatter` and `cellExcelFormatter` from being called on columns that are children of other columns (Column Groups).

## 3.11.0

### Enhancements

- Server side filtering by ID. Requires `onServerSideDataRequest` on `DataTable` level to enable.
- Add data-qa tags
  - `data-table-context-panel`
  - `data-table-quick-controls`
- Add data-qa tags and `ul` `li` for server side filtering UI components
  - `data-table-context-panel-filters`
  - `data-table-remove-all-filters` 1 `button`
  - `data-table-possible-filters-list` 1 `ol`
  - `data-table-filter-input-${field}` n `MultiSelect`
  - `data-table-selected-filters-list` 1 `ol`
  - `data-table-quick-filter-remove-token` n `Token.Icon`
  - `data-table-show-filters-button` 1 `button`
- Add generics to `ColumnDefinition` and object based cell definitions for server side filtering

## 3.10.1

- Restore `lockPosition:true` on `autoGroupColDef` by default which was accidentally removed in earlier release.

## 3.10.0

### Enhancements

- Added a flag `hideActionsOnGroupedRow` to hide rowActions on grouped Row
- Added applyTransaction, setPinnedBottomRowData methods of gridAPI to tableApi
  to enable users to add pinned rows and perform row actions like add, delete etc.
- Adding `getRootAggregateData` to tableApi to fetch aggregate data.
- Add `rowIndex` to DataTableCellProps to enable user to get current rowIndex.
- Enable user to pass `autoGroupColumnDefinition` to enable the user to decide the structure of grouped row.
- Enable user to pass `pinnedBottomRowData` to enable the user to set a custom pinned row.
- Pass `rowIndex` and `api` to the onCellChangeEvent to make updates to the data of other cells

## 3.9.0

### Enhancements

- Added Excel Export support

## 3.8.2

### Bug Fixes

- Fixes flaky tests for CurrencyCell
- automatically wrap lines that otherwise would be cropped on export

## 3.8.1

### Bug Fixes

- Prevents autosizing of columns with a width set in initialTableConfig

## 3.8.0

### Enhancements

- Added PDF Export support for multiple tables on the same list

## 3.7.0

### Enhancements

- Added `SortModel` type to more accurately type the `request.sortModel` object in `onServerSideDataRequest`
- Transform `onServerSideDataRequest` to include `field` in object
- Deprecate `colId` from individual `SortModel` objects (use `field` instead)
- Added tests and more detailed docs for server side sorting

## 3.6.0

### Enhancements

- Added Pagination support for table, can be enabled with `pagination` and `paginationPageSize` props
- Added basic test for `onServerSideDataRequest`, as well as infrastructure for future server side tests

## 3.5.1

### Bug Fixes

- Fixes bug when header styles were not getting into resulting HTML on first export
- Fixes bug when table configuration was not being set on page reload when the data is not loaded yet.

## 3.5.0

### Enhancements

- Adds a new `onBulkEditUpdate` prop to `DataTable` which gets called when a bulk edit has been applied
- Changes bulk editing to update values using `valueParser` and `valueSetter` functions in column definitions, when set.

## 3.4.0

### Enhancements

- DataTable now passes missing `node` param to `valueGetter`.

## 3.3.2

- Accidentally published alpha

## 3.3.1

### Bug Fixes

- Moved logic that handles onGroup callback into the AG Grid callback instead of inside the API so it fires regardless of where or how a column gets grouped.

## 3.3.0

### Enhancements

- Add `suppressResetColumnsOption` prop to `DataTable.Table` which removes the `Reset Columns` option from the column header dropdown.

## 3.2.0

### Enhancements

- Add `suppressRowClickSelection` prop to `DataTable.Table` which enables disabling row selection when clicking anywhere on the row.

## 3.1.0

### Enhancements

- Adds valueValidator column definition property and basic validation styling
- Adds styling to prevent editable columns from shifting on hover

## 3.0.0

### Breaking

- `core-react` and `core-icons` peer deps are now `^10.0.0`
- The `tableRef` prop from `DataTableProps` has been renamed to `tableApi`
- `DataTableCellRenderer` no longer uses `tableRef` from `cellRendererParams`, and uses the table's internal ref instead
- `DataTableCellEditor` no longer uses `tableRef` from `cellRendererParams`, and uses the table's internal ref instead
- Removed `editorType` from `ColumnDefinition` type. Set this key on each object in the `CustomCell` prop to `DataTable.Table`
- Renamed argument for `aggFunc`, `valueGetter`, `valueParser`, `valueSetter`, `editable` from `colDef` to `columnDefinition`. Runs through transform func, e.g. `columnDefinition.hidden` over `colDef.hide` and limits keys to what it was previously typed to which removes complicated AG Grid internals

### Enhancements

- Updated inputs, buttons, icons from the upgrade to `core-react v10`
- `ButtonsCell` and `RowActionsCell` now pass the entirety of `DataTableProps` to the `Button`/`Action`
- Updated remaining `Font` usages to use `Typography` instead
- Uses internal translations, with option to override by overriding our keys
- `QuickControls` can now be assembled from subcomponents. It will behave like normal when no children are passed.
  - Added `DataTable.ConfigPanelButton`, `DataTable.QuickFilters`, `DataTable.RowGroupSelector`, and `DataTable.Search` subcomponents

### Bug Fixes

- `PercentCell` properly right aligns
- Fixed UI bug with row borders by increasing row height

## 2.17.5

### Bug Fixes

- Ensure that onTableReady only gets called once

## 2.17.4

### Bug Fixes

- Fix update Grand Total when editing dependent columns and using custom aggregation functions

## 2.17.3

### Enhancements

- Improved initial rendering performance

## 2.17.2

### Enhancements

- Added backward compatibility for the following Ag-Grid properties:
  - sortable
  - suppressMenu
  - suppressMovable

## 2.17.1

### Bug Fixes

- Prevent the creation of track events for row height changed when the initial table config is loaded

## 2.17.0

### Enhancements

- Locks grouped column position in place.
- Adds Group and Ungroup dropdown actions to the column header's main dropdown menu.
- Adds popupParent table prop that allows reassigning the parent container of popup context menu when the table is too small or large to prevent clipping. See: https://www.ag-grid.com/javascript-grid/context-menu/#popup-parent

## 2.16.0

### Enhancements

- Expose `waitForAsyncCondition` on index as a testing utility for implementors

## 2.15.0

### Enhancements

- New `PersonCell` renderer
- Select Cell `getOptionLabel`, when select options are a different shape than the value
- Allow Company and Person renderers to use Select Cell editor and have the pseudo hover styles

## 2.14.0

### Enhancements

- Column definition `getFilterKeyCreator` to allow custom options in filters, primarily for MultiSelect. Options default to `getStringFormattedValue` otherwise.

## 2.13.1

### Enhancements / Fixes

- `valueGetter`, `valueSetter`, `valueParser` for both transforms
- call `valueGetter` in the DataTable cell getValue parseValue flow
- Number cell right aligned class

## 2.13.0

### Enhancements

- Adds `setRowData` to `TableApi`

## 2.12.0

### Enhancements

- expose Ag-Grid immutability mode

## 2.11.0

### Enhancements

- Adds `getRowData` to `TableApi`

## 2.10.0

### Enhancements

- Adds `DataTable.BulkActions` child Component, enabling Row Selection and BulkEdit functionality for Client-side data
- expose type `filterParams` on column definition

## 2.9.4

### BugFix

- Fixes loss of PDF file styles

## 2.9.3

### Bug Fix

- Fixes table remounting on every data fetching
- Fixes warning complaining about not recognized `filterType` column definition property
- Adds data-qa attributes to make table loading state more testing-friendly

## 2.9.2

### BugFix

- Fixes browser css breaking, due to PDF export

## 2.9.1

- Accidently published alpha

## 2.9.0

### Enhancements

- Feature Yes/No Boolean Cell Renderer, Editor, Number Cell Renderer, Editor, MultiSelect Renderer

## 2.8.3

### Bug Fix

- fix: Non Chrome, open select menu on double click
- types: Pass more generics around col defs and props

## 2.8.2

### Bug Fix

- Fixes misalignment of group row parent cell introduced by agGrid update.

## 2.8.1

### Bug Fix

- Fixes column menu overflow when called on right-ish columns.
- Additional fix for header misalignment when calling `exportToHTMLString` on horizontally scrolled table (Firefox)

## 2.8.0

### Enhancements

- Adds `onTableReady` to `DataTable.Table` which returns the `TableApi` when it's ready to be used
  - Deprecate ref on `DataTable` in favor of this approach
- Updates ag-grid to v25.1.0

## 2.7.1

### Bug Fix

- Fixes details row PDF export CSS, so the last line of the data table is not truncated when a detail row is present.

## 2.7.0

### Enhancements

- Accepts `rowDataChangeDetectionStrategy` as an optional prop. Fix for [issue](https://github.com/ag-grid/ag-grid/issues/3590).

## 2.6.1

### Bug Fixes

- Fixes header misalignment when calling `exportToHTMLString` on horizontally scrolled table

## 2.6.0

### Enhancements

- Adds server side row model functionality via `onServerSideDataRequest` prop on `DataTable.Table`
- Added `refreshServerSideStore` grid API method onto the TableRef object.
- Adds `suppressFieldDotNotation` prop on `DataTable.Table` which allows column key names to support dot notation without assuming it's a deep reference. See: https://www.ag-grid.com/documentation/javascript/grid-properties/

## 2.5.1

### Enhancements

- PDF export files maintain sans-serif font. Details table CSS adjustments so table is visible on PDF export.

## 2.5.0

### Enhancements

- Styles updated to wrap column-headers to the next row

## 2.4.1

### Bug Fixes

- Suppress virtualization on detail rows to enable PDF export

## 2.4.0

### Enhancements

- Add `groupCellRenderer` as an alias for `agGroupCellRenderer`
- Pass `data` as a second parameter to `getURL()` for `linkCellRenderer`

## 2.3.0

- Small type update for `buttons` key in `ButtonsCell` `cellRendererParams`

## 2.2.1

### Bug Fixes

- Move row back to original position when dragged off the table

## 2.2.0

### Enhancements

- Implement row dragging

## 2.1.1

### Bug Fixes

- Revert change to `@procore/core-scripts` version to fix `Uncaught TypeError: Object(...) is not a function`

## 2.1.0

### Enhancements

- Hides the toggle for columns that should remain hidden when `hidden: true` and `lockVisible: true` is applied to the column definition
- Adds ability to add or restrict columns to be exported by supplying `columnKeys` to `csvExport`

## 2.0.1

### Bug Fixes

- Increase specificity of DataTable styles so that they aren't overwritten by changes in load order

## 2.0.0

### Enhancement

- [Breaking] Two keys have been removed from the persisted column configuration
  - `index` was removed as a key from the `ColumnConfiguration`, used in the `columnState` key on `DataTableConfig`. Column order is now determined by the order within the `columnState` array
  - The `groups` key was removed from `DataTableConfig`. Tracking grouping has been moved into `columnState`, as `rowGroup` and `rowGroupIndex`
- Adds row sorting to saved column configuration

## 1.2.0

### Enhancements

- Removes the default `min-height: 150px` for when a `maxHeight` prop is provided

### Bug Fixes

- Hides the grand total row when there is no grand total data
- Refactors the `maxHeight` implementation to fix an issue with usage inside of a flex column

## 1.1.0

### Enhancements

- Adds `LinkCell` for rendering of Core `Link` components

## 1.0.2

### Bug Fixes

- Ensure comparators are passed to agGrid colDef

## 1.0.1

### Bug Fixes

- Ensure table config get reinitialized when the user passes in new column definitions

## 1.0.0

- [Breaking] `CurrencyCell` and `PercentCell` no longer auto-parse the input value, must provide `valueParser` to column definition
- [Breaking] Removed `ERPStatusCell`, is now an example custom renderer for Procore stories
- Transition all cells to use new default renderer/editor
- Update exports

## 0.38.0

### Internal

- [Breaking] renamed `TableRef` type to `TableApi`
- Refactor moving table api into a separate hook
- Move nested table config out into util
- Wrap `setTableConfig` api method in `React.useCallback`

## 0.37.4

### Bug Fixes

- Fix searching on `undefined` or `null` data

## 0.37.3

### Bug Fixes

- Applies another fix to ensure styles for `styled-components` are applied during PDF export

## 0.37.2

### Bug Fixes

- [Breaking] Removes required type for `cellEditor`, `cellEditorParams`, and `cellRendererParams`

## 0.37.1

### Bug Fixes

- Ensures styles for `styled-components` are applied during PDF export

## 0.37.0

### Enhancements

- [Breaking] Convert `getSearchAndFilterText` to `getStringFormattedValue`
- [Breaking] Remove all `getLabel` and `getText` params from cells, use `getStringFormattedValue` from column definition
- Transform ag-grid `ColDef` to our own `ColumnDefinition` inside of cell renderers and editors

## 0.36.1

### Bug Fixes

- Makes the attributes in `DataTableTranslations` optional
- Prevents `[missing "en.searchEmptyStateTitle" translation]` error when not supplying a translations object with `searchEmptyStateTitle`
- Prevents `[missing "en.loadingLabel" translation]` error when not supplying a translations object with `loadingLabel`

## 0.36.0

### Enhancements

- Adds a `maxHeight` prop to the `Table` to support auto height of the table up to the provided `maxHeight`

## 0.35.0

### Bug Fixes

- Resolve issue where the filterable columns in the Filters context panel would not update to reflect a change to the `columnDefinitions` prop

## 0.34.0

### Enhancements

- [Breaking] CSV export formatters moved to Column Definition, instead of config in `exportToCSV`
  - CSVExportConfig interface removed
  - `cellCSVFormatter` added to `ColumnDefiniton`
- Add `translations` prop to `DataTable`, merge in with client translations
- [Breaking] Remove `loadingLabel` prop on `DataTable.Table`, move to `translations` object
- [Breaking] Remove `i18nScope` prop, remove only usage in `EmptyState`
  - Remove usage of internal translations
- [Breaking] Now depend on minimum version of core with DataTable translations (9.7.0)

## 0.33.0

### Dependencies

- Bump `ag-grid-community` from `24.1.0` to `25.0.0`
- Bump `ag-grid-enterprise` from `24.1.0` to `25.0.0`
- Bump `ag-grid-react` from `24.1.1` to `25.0.1-beta`

## 0.32.0

### Enhancements

- [Breaking] Remove `colId` from `ColumnDefinition`
- [Breaking] Change `pinned` to `initialPinned`
- [Breaking] `valueGetter` function should have return type of `TValue`
- `cellRendererParams` and `cellEditorParams` come from the renderer, not the column definition type

## 0.31.0

### Enhancements

- Change row height selector to `SegmentedController`
- Change column visibility `Checkboxes` to `Switch`
- Update `Typography` for headers

## 0.30.0

### Enhancements

- Adjusts position of column Context menu to display under the column header row

## 0.29.0

### Enhancements

- Adds column `index` to `ColumnConfig` to enable persisting of column position

### Bug Fixes

- Fixes the props type for `DataTable` to include a `children` prop

## 0.28.0

### Enhancements

- Adds `initialTableConfig` prop for working with stored table configuration states
- Adds `contextPanelShow` and `contextPanelHide` functions to `tableRef` for controlling context panel
- [Breaking] removes `DataTableContext`
- [Breaking] `DataTable.Table` is no longer a `forwardRef` component
- Passing a ref is no longer required

### Bug Fixes

- Fixes bug where initial grouping configuration in table was not reflected in the `GroupBySelect`

## 0.27.1

### Bug Fixes

- Fixes typo with the track event key for filtering

## 0.27.0

### Enhancements

- Adds track events for filtering and grouping

## 0.26.0

### Enhancements

- Adds `ButtonsCell` for rendering an array of Core `Button` components

## 0.25.0

### Enhancements

- Minor UI improvements across table borders, grand total footer, and group expand/collapse
- Remove `Show All` button from table configuration panel

## 0.24.0

### Enhancements

- Adds the ability to change the loading status of the table via `loading` and `loadingLabel` on `TableProps`

## 0.23.0

### Bug Fixes

- Fixes bug where Export CSV/PDF analytics path fails to post

## 0.22.0

### Enhancements

- Adds the ability to send Analytics for column events - grouped, filtered, moved, pinned, hidden, table exported and table row height changed

## 0.21.0

### Bug Fixes

- `emptyStateRenderer` should be able to take a `React.FunctionComponent` and not just a `React.ReactNode`

## 0.20.0

### Enhancements

- Adds `onTableConfigChange` event for storing table configuration when the table is modified
  - It is up to the implementor to store the table configuration
- Adds `setTableConfigChange` and `getTableConfigChange` to tableRef api for manually getting and setting config
- Adds `removeAllFilters` api method and slight internal refactor of the table's filters

### Bug Fixes

- Fixes bug where deselecting all groups would make all columns visible, instead of only groupable columns, which would override any columns hidden through the table configuration panel.

## 0.19.0

### Bug Fixes

- Ensures the row actions are always present when resizing the table
- Always updates filter options when a cell value is changed
- Removes flex from default column definition to respect the `width` attribute
- Ensures updates to the `columnDefinitions` prop are accurately reflected in the table

## 0.18.0

### Bug Fixes

- Resolves issue with editable styles being applied to non-editable cells

## 0.17.0

### Enhancements

- Implements `exportToHTMLString` to enable exporting to PDF or printing

## 0.16.0

### Enhancements

- Implements min widths and widths on columns

## 0.15.0

### Enhancements

- Implements ability to export to CSV

## 0.14.0

### Enhancements

- Apply new menu icon to header row

## 0.13.0

### Bug Fixes

- Remove editable hover effects from non-editable cells
- Fix `Contracts with Nested Detail` story
- Fix footer background color

## 0.12.0

### Bug Fixes

- Resolve grouping issues with ERP Status Cell

## 0.11.0

### Enhancements

- Minor UI cleanup to header row

## 0.10.0

### Enhancements

- Adjust editable input fields to font size 28px

## 0.9.0

### Enhancements

- Adds input/select styles on inline edit cells when hovering on a row
- Adds `SelectCellRenderer`, which is the same as a `TextCellRenderer`, except it shows a select dropdown carat on row hover
- Minor UI cleanups, mainly for padding in the editable cells and their editors

## 0.8.0

### Enhancements

- Adds an optional `getLabel` attribute to the `PillCellColumnDefinition` to allow for configurable labels
- Hides the "Filters" button when there are no columns that support filtering
- Hides the "Group By" control when there are no columns that support grouping
- Adds optional `getLabel` attribute to the `SelectCellColumnDefinition`
- Adds optional `getText` attribute to the `TextCellColumnDefinition`

### Breaking Changes

- Adding `enableRowGroup: true` to a column definition is now required to enable row grouping for a column

## v0.7.0

### Enhancements

- Updates Quick Controls filtering to display and clear filters whether the filter panel is open or closed

## v0.6.0

### Enhancements

- Adds `onCellValueChanged` prop to table, applied to all editable columns by default
- Can provide `onCellValueChanged` to individual column definitions to customize response to cell edit for that column

## v0.5.0

### Enhancements

- Resets borders on cells for selection and editing
- Adds ability for row selection (currently, clicking on a row does nothing. row selection still needs UX decisions, so leaving off behavior implementation for now)
- Updates colors for cell and row selection
- Darken background of inline editable fields on row hover
- Set background to white when actively editing

## v0.4.0

### Breaking Changes

- Removes configuration to allow editing group row cells
- Removes configuration to render a group row as a standard row when it only has one child

### Enhancements

- Adds support for Master Detail Rows via the `detailRowConfigs` prop

## v0.3.0

### Enhancements

- Adds `emptyStateRenderer` prop for providing an empty state when there are no rows
- Reintroduces `i18nScope` for the search empty state title
- Adds `isAnyFilterPresent` to table ref to determine which empty state to show
- Upgrades package to use core v9. main migration step was to drop `consumeI18n` in favor of `useI18nContext`

## v0.2.0

### Enhancements

- Add configuration to prevent columns from being hidden
- Add configuration to allow editing group row cells
- Add configuration to render a group row as a standard row when it only has one child
- Add configuration to show the child count on a group row
- Expand `sum` aggregation support to handle data types of `number`, `string`, and `Decimal` (previously just supported `number`)

### Bug Fixes

- Fix cell alignment style issues

## v0.1.0

- Implements the DataTable to be functionally complete with some style issues still remaining

## v0.0.1

- Early stage version (do not use!)
- Exposes `DataTable` component, based on [ag-grid](https://www.ag-grid.com/)
