# Releases
## v2.9.7 (2026.03.05)
- Added [EditOptions.showErrorIcon](/refs/Interface/EditOptions#showerroricon) property to prevent display of validation failure icon. When set to `false`, validation failure icon is not displayed. - Fixed an issue where `0` was displayed depending on the value even when the decimal point display in numberFormat was set to optional.
- Fixed an issue where `state` was always set to `none` when adding rows with [LocalTreeDataProvider.fillJsonData](/refs/Class/LocalTreeDataProvider#filljsondata).
- Fixed an issue where hidden rows would not be checked when other rows were checked after filtering when [CheckBar.exclusive](/refs/Interface/CheckBar#exclusive) was set to `true`.
- Added a [zeroText](/refs/Interface/ColumnSummary#zerotext) property, which is displayed when the footer value is `0`.
- Added a [disableSaveOnUnchanged](/refs/Interface/DateCellEditor#disablesaveonunchanged) property to disable the `save` button when no date is selected in [DateCellEditor](/refs/Interface/DateCellEditor).
- Improved the issue where values ​​would intermittently change depending on the editFormat when entering a decimal point in [NumberCellEditor]
- Added the [selectorDataOrder](/refs/Interface/FilterAutomatingOptions#filtereddataonly) property to prevent filter selections on preceding columns from being changed by filters on subsequent columns when filtering multiple columns with [filteredDataOnly](/refs/Interface/FilterAutomatingOptions#filtereddataonly) set to `true`
- Added the [DataProvider.undoing](/refs/Class/DataProviderBase#undoing) and [DataProvider.redoing](/refs/Class/DataProviderBase#redoing) properties to check whether the [DataProvider](/refs/Class/DataProviderBase) is executing `undo` or `redo`
```js
dataProvider.onRowUpdated = (provider, dataRow) => {
  if (provider.undoing) || provider.redoing) {
    console.log("dataProvider undo redo executing");
    return;
  }
  if (provider.getValue(dataRow, "text2") === "test") {
    provider.setValue(dataRow, "text3", "test field");
  }
}
// Be careful not to enter an infinite loop when changing values ​​within a dataProvider event.
```
- Improved so that all pasted rows are now undone when undoing after pasting multiple rows.
- Added the `group` argument to [beginUpdate](/refs/Class/DataProviderBase#beginupdate) to allow batch undo when editing or adding multiple rows simultaneously. Nested beginUpdate calls are now treated as a single group.
```js
dataProvider.beginUpdate(true);
try {
  dataProvider.addRow({});
  dataProvider.addRow({}); 
  dataProvider.addRow({});
} finally { 
  dataProvider.endUpdate();
}
```
- Added the [closePopupOnCheck](/refs/Interface/DisplayOptions#closepopuponcheck) property to prevent the popupMenu from closing when a context menu item's type is `check` or `radio` and the menu item is clicked.
- Added the [RowGroup.headerMultiRowsOnly](/refs/Interface/RowGroup#headermultirowsonly) property to display the group header only when the group contains multiple rows of data when grouping rows.
- Improved the `tab` key input in the `input` of the [filterPanel](/refs/Interface/FilterPanel#filterpanel) of a column that is open and fixed to move to the next column.
- Maintain the expanded state when the [endUpdate](/refs/Class/DataProviderBase#endupdate) of the [LocalTreeDataProvider](/refs/Class/LocalTreeDataProvider) is called. Improvement does not apply when updating entire rows, such as setRows/clearRows. - Fixed an issue where [setRows](/refs/LocalTreeDataProvider#setrows) was not displayed properly when [TreeView](/refs/Class/TreeView) was `filtered`.
- Added the (ColumnHeader.excelMemo)(/refs/Interface/ColumnHeader#excelmemo) property to allow [Excel Memo](/guides/excels/excel-memo) to be applied to column headers.
- Fixed an issue where some column widths were not applied when exporting to Excel after specifying [DisplayOptions.fitStyle](/refs/Interface/DisplayOptions#fitstyle) in a nested column grouping state.
- Fixed an issue where [lookupDisplay](/refs/Interface/DataColumn#lookupdisplay) was not applied properly when the editor for a column with a dataType of `number` was set to [list](/refs/Interface/DropDownCellEditor).

## v2.9.6 (2025.12.18)
- Improved behavior where the last scroll point was exceeded in environments where wheel events occurred continuously.
- Fixed an error where the itemIndex was incorrectly returned when using [GridBase.mouseToIndex](/refs/Class/GridBase#mousetoindex) with columns frozen.
- Improved functionality so that tooltips can be displayed in indicator areas.
- Improved the call order of the [onCurrentChanging](/refs/Class/GridBase#oncurrentchanging) and [GridBase.onGridFocusChanged](/refs/Class/GridBase#ongridfocuschanged) events.
- Fixed an intermittent error that occurred when [dropdownEditor](/refs/Interface/DropDownCellEditor#drop) was closed.
- Fixed an error that occurred intermittently when using a Vietnamese keyboard. Fixed an issue where the first letter was entered twice when editing a cell with [NumberCellEditor.editFormat](/refs/Interface/NumberCellEditor#editformat) applied.
- Added the [DropdownCellEditor.dropDownWhenTyping](/refs/Interface/DropDownCellEditor#dropDownWhenTyping) option to prevent the dropdown from appearing while typing when using [DropdownCellEditor](/refs/Interface/DropDownCellEditor) or [DateCellEditor](/refs/Interface/DateCellEditor).
- When using [DropdownCellEditor](/refs/Interface/DropDownCellEditor), if the [sameValueModified](/refs/Interface/DropDownCellEditor#samevaluemodified) option is set to true, a feature has been added to consider the same value as modified even if it is selected.
- Improved the way styles with CSS variables applied are now properly reflected when exporting to Excel using [ExportBaseOptions.useComputedStyle](/refs/Interface/ExportBaseOptions#usecomputedstyle).
```js
  ...
  gridView.exportGrid({
    type: "excel",
    target: "local",
    applyDynamicStyles: true,
    useComputedStyle: true
  })
```
- Added [GridBase.showPopup](/refs/Class/GridBase#showpopup) API to allow direct display of pop-up menus or context menus via methods.
```js
  gridView.showPopup(10, 10, "popupMenu");

  // or

  gridView.showPopup({itemIndex: 0, column: "Column"});
```

## v2.9.5 (2025.11.06)
- Fixed an issue where the alert window would continue to appear in special circumstances after setting [EditOptions.commitWhenLeave](/refs/Interface/EditOptions#commitwhenleave)
- Fixed an issue where the filter window width would not expand again when resetting the filter when [FilterSelector.width](/refs/Interface/FilterSelectorOptions#width) was -1
- Added a feature to [DateCellEditor](/refs/Interface/DateCellEditor) that allows users to swipe left, right, up, or down to change the month or year
- Added [DisplayOptions.fitLayoutPadding](/refs/Interface/DisplayOptions#fitLayoutPadding) property to allow users to add paddings when calling [fitLayoutWidth](/refs/Class/GridBase#fitlayoutwidth)
- Improved width calculation logic to prevent indicator text from being cut off due to variable width differences in numbers when [rowIndicator.width](/refs/Interface/RowIndicator#width) is 0.
- Fixed an issue where styles were not applied properly in Excel export when applying inline styles in rowStyleCallback.

## v2.9.4 (2025.09.25)
- Fixed so that when a row with `rowState` of `updated` is deleted and then reverted, it returns to the `updated` state.
  Added the [DataProviderBase.revertDeletedStates](/refs/Class/DataProviderBase#revertdeletedstates) method, which also returns the state of deleted rows to their original values.
- Improved so that scrolling is possible even when [GridBase.scrollBarWidth](/refs/Class/GridBase#scrollbarwidth) or [GridBase.scrollBarHeight](/refs/Class/GridBase#scrollbarheight) is `0`.
- Added scrollbars to [DisplayOptions.hscrollBar](/refs/Interface/DisplayOptions#hscrollbar) and [DisplayOptions.vscrollBar](/refs/Interface/DisplayOptions#vscrollbar), which set whether to display the scrollbar. Added `always` value to always display.
- Improved display of [DataColumn.defaultValue](/refs/Interface/DataColumn#defaultvalue) for empty rows when [EditOptions.displayEmptyEditRow](/refs/Interface/EditOptions#displayemptyeditrow) is `true`.
- Improved row movement between grids by dropping them in empty areas of the grid.
- Fixed an error where some row heights would be displayed as default after export when displaying a progress bar when [DisplayOptions.rowHeight](/refs/Interface/DisplayOptions#rowheight) was set to `-1`.
- Fixed an error that occurred when adding rows when the grid data area height was smaller than the row height.
- When [fitStyle](/refs/Interface/DisplayOptions#fitstyle) is `evenFill` and [rowHeight](/refs/Interface/DisplayOptions#rowheight) is `-1`. Fixed an issue where data would occasionally not display.
- Added the [CopyOptions.multiSelectionCopyFailText](/refs/Interface/CopyOptions#multiselectioncopyfailtext) and [PasteOptions.multiSelectionPasteFailText](/refs/Interface/PasteOptions#multiselectionpastefailtext) properties to allow customizing the error message displayed when copying or pasting with multiselection.

## v2.9.3 (2025.08.28)
- Fixed an issue where the range selection would be reset when `ctrl + click` was used when [DisplayOptions.selectionStyle](/refs/Interface/DisplayOptions#selectionstyle) was set to [singleRow](/refs/realgrid#selectionstyle).
- Added the [GridBase.fitHeaderHeight](/refs/Class/GridBase#fitheaderheight) method, which adjusts the height of the `header` to fit the content.
- Added the `isEllipsis` argument to the [onShowTooltip](/refs/Class/GridBase#onshowtooltip) event, which allows you to check the cell's ellipsis status.
- Improved the separate handling of scrolling using `trackPad` on `mac` and scrolling using `mouse`.
When using `trackpad`, a slight delay is required after horizontal or vertical scrolling before scrolling in the other direction occurs.
- `sort` or Added the [ToastOptions.fadeOut](/refs/Interface/ToastOptions#fadeout) property, which closes the [toast](/refs/Interface/ToastOptions) window that appears when `filtering` after a specified time.
- Added the `cellIndex` argument to [ExpoExportOptions.numberCallback](/refs/Interface/ExportOptions#numbercallback), which indicates the cell location information.
- Fixed an issue where horizontal scrolling would not work in certain situations after scrolling the grid when the grid was not selected.
- Fixed an issue where lines would not be drawn properly when exporting to Excel when `border-right` was set to a sub-cell of a group header.
- Fixed an issue where only the first value would be applied when pasting to a [MultiCheckCellEditor](/refs/Interface/MultiCheckCellEditor).
- Fixed an issue where some dynamic styles specified with numberFormat would not be applied during Excel export.
- After checking [checkBar](/refs/Interface/CheckBar), use `shift + click` to select the checkbar. Improved the issue where the check does not change when selecting a row above the previously selected row during range selection.

## v2.9.2 (2025.07.03)
- Improved the phenomenon that contextMenu and [DropDownCellEditor](/refs/Interface/DropDownCellEditor#dropdowncelleditor)'s `list` are not displayed properly when the height of `body` is set to `0`
- Added [DisplayOptions.showTooltipWhileEditing](/refs/Interface/DisplayOptions#showtooltipwhileediting) property to display tooltip even while editing
- Improved the phenomenon that [GridBase.onCellEdited](/refs/Class/GridBase#oncelledited) is not called when only the time is changed when [DateCellEditor.commitOnSelect](/refs/Interface/DateCellEditor#commitonselect) is `true`

## v2.9.1 (2025.06.26)
- Fixed the phenomenon where the row is added and then disappears when the down arrow key is pressed continuously on the last row when [EditOptions.appendable](/refs/Interface/EditOptions#appendable) is `true`
- Improved the phenomenon where the caret moves to the end when Korean is entered in [NumberCellEditor](/refs/Interface/NumberCellEditor#numbercelleditor)
- Added the [GroupPanel.showResetButton](/refs/Interface/GroupPanel#showresetbutton) property to display the full reset button in `GroupPanel`
- Improved the phenomenon where the list disappears when entering a value when using [SearchCellEditor](/refs/Interface/SearchCellEditor#searchcelleditor) on mobile
- Enabled the ability to apply Excel format to the footer area when `excel export` Added [ColumnSummary.excelFormat](/refs/Interface/ColumnSummary#excelformat) property
- Fixed the phenomenon that the scroll changes after editing when [CheckBar.showGroupFooter](/refs/Interface/CheckBar#showgroupfooter) is `true`
- Improved the phenomenon that copying is not done in some editors when the browser is `safari`
- Added [GridBase.addInvalidCell](/refs/Class/GridBase#addinvalidcell), [GridBase.addInvalidCellOfRow](/refs/Class/GridBase#addinvalidcellofrow) methods that allow users to directly add to the list of validation failures

Added itemIndex and field arguments to [GridBase.clearInvalidCells](/refs/Class/GridBase#clearinvalidcells) so that they can be initialized by row or cell

[EditOptions.validateOnEdited](/refs/Interface/EditOptions#validateonedited) When it is `false`, change it so that validation is not performed even when editing a row is complete.
```js
const validateColumn = (grid, itemIndex, dataRow, field, value) => {
  const column = grid.columnByField(field);
  if (column.name === "Country") { 
    if (!value) {
      return {level: "error", message: "Required value"};
    } else if (value === "fail") {
      return {level: "error", message: "Invalid value"};
    } else {
      return null;
    }
  }
}

gridView.onCellEdited = (grid, itemIndex, dataRow, fieldIndex) => {
// After cell editing is complete, the user validates and adds or deletes the result from the list
const column = grid.columnByField(fieldIndex);
  if (column.name === "Country") {
    const validate = validateColumn(grid, itemIndex, dataRow, fieldIndex, grid.getValue(itemIndex, fieldIndex));
  if (valudate) {
    gridView.addInvalidCell(itemIndex, fieldIndex, validate.level, validate.message);
  } else {
    gridView.clearInvalidCells(itemIndex, fieldIndex); }
  }
}

gridView.onValidateColumn = (grid, column, inserting, value, itemIndex, dataRow) => {
// When editOptions.validateOnEdited is false, it is not executed after editing is completed, but it is executed in the validateCells method.
return valildateColumn(grid, itemIndex, dataRow, column.dataIndex, value); }
```
- Improved to hide both the header of groupLayout and the header of the sub-layout (except for the group belonging to the root)
- Fixed an error that the result value of [saveColumnLayout](/refs/Class/GridBase#savecolumnlayout) could not be converted to JSON.stringify when [tiedColumn](/refs/Interface/CellLayoutGroupItem#tiedcolumn) is set in groupLayout
- Fixed the phenomenon of scrolling when clicking contextMenu when the body area of ​​the browser is scrolled and only part of the grid is visible
- Improved the phenomenon of not scrolling down when moving rows when neither `footer` nor `hscrollBar` are displayed in the grid
- Improved the phenomenon of the virtual keyboard not being activated with one click even when [EditOptions.editWhenFocused](/refs/Interface/EditOptions#editwhenfocused) is `true` in iOS
- Changed the focus to move to search input when `filter selector` is displayed

## v2.9.0 (2025.05.15)
- Added [ExportOptions.exportMemo](/refs/Interface/ExportBaseOptions#exportmemo) property to add notes to cells when exporting to Excel
```js
gridView.exportGrid({
type: "excel",
  target: "local",
  exportMemo: {
    validation: true,
    callback: (grid, index, dataRow, column, cellMemo) => {
      if (column === "test") {
        if (grid.getDataSource().getValue(dataRow, "startDate") > grid.getDataSource().getValue(dataRow, "endDate")) {
          return {
          author: "Author",
          message: "The start date must be less than the end date.\n Please check the date."
          }
        }
      }
    }
  }
}); 
```
- Fixed an error that occurred in the grid module when using `ssr` in node21 or later versions
- Improved the position of the list to change when scrolling occurs in the upper element of the grid when showing the list of [DropDownCellEditor](/refs/Interface/DropDownCellEditor) or [DateCellEditor](/refs/Interface/DateCellEditor)
- Improved the phenomenon of not moving to the location of the value when the list of [DropdownCellEditor](/refs/Interface/DropDownCellEditor) is expanded
- Fixed an error that occurred intermittently when rowGroup.mergeMode is `true` when using [DataColumn.displayCallback](/refs/Interface/DataColumn#displaycallback)
- Enabled the width to be specified when printing cells using [userCells](/refs/Interface/GridExportOptions#usercells) when printing to Excel. Add [width](/refs/Interface/UserExportCell#width), [widths](/refs/Interface/UserExportCell#widths) properties

```js
gridView.exportGrid({
  type: "excel",
  target: "local",
  userCells: [
    {row: 0, col: 0, value: "User input string", width: 100},
    {row: 2, col: 0, mergeRow: 1, mergeCol: 3, styleName: "userCellRed", value: "Merge and apply style.", widths: [100, 50, 50]},
  ]
})
```

- Fixed an error that occurred when exporting to Excel with `allItems: false` while some groups were collapsed in row merge grouping
- Improved copy/paste when a physical keyboard is connected in a mobile environment
Pasting is limited depending on the os or browser.
- Added [rowIndicator.draggableSelectedRows](/refs/Interface/RowIndicator#draggableselectedrows) property to enable drag and drop when the pointer is pressed on the rowIndicator of the selected row
- Improved the phenomenon where the check of the checkBar is not displayed intermittently when [fixedOptions.rowCount] is changed
- Added [GridBase.onGridFocusChanged](/refs/Class/GridBase#ongridfocuschanged) event that is called when the grid gains or loses focus
```js
gridView.onGridFocusChanged = (grid, focused, event) => {
  console.log(`grid focused => ${focused}`); 
}
```
- Fixed an error that occurs when clicking a cell that is not connected to dataField
- Fixed the phenomenon where the data of the added column is not visible when adding a column using `addColumn` when [DisplayOptions.refreshMode](/refs/Interface/DisplayOptions#refreshmode) is `recycle`
- Fixed the phenomenon where the list appears and disappears when long-pressing the dropdown button when [DropdownCellEditor.dropdownWhenClick](/refs/Interface/DropDownCellEditor#dropdownwhenclick) is `true`
- Fixed the phenomenon where the check of the checkBar merged using [CheckBar.mergeRule](/refs/Interface/CheckBar#mergerule) is not clicked intermittently when [DisplayOptions.rowResizable](/refs/Interface/DisplayOptions#rowresizable) is `true`
- [SearchCellEditor](/refs/Interface/SearchCellEditor#searchcelleditor) Fixed so that the [onEditSearch](/refs/Class/GridBase#oneditsearch) event is called when `ctrl+enter` is entered even if there is no value entered. - Improved so that the grid operates normally even when `zoom` is set in the style of html or body.

## v2.8.9 (2025.03.20)
- Added [treeTemplateOptions](/refs/Interface/TreeTemplateOptions) to display the first column of treeView in `html` format
- Improved the phenomenon that [GridBase.onEditCommit](/refs/Class/GridBase#oneditcommit) occurs twice when [EditOptions.enterToTab](/refs/Interface/EditOptions#entertotab) is `true`
- Improved the phenomenon that selection is released when changing the layout when [DisplayOptions.selectionStyle](/ref/Interface/DisplayOptions#selectinstyle) is `singleRow`
- Improved the phenomenon that the row being edited is not checked when checking all of [checkBar](/refs/Interface/CheckBar#checkbar) while editing a row
- When right-clicking on a scroll-related element Improved the phenomenon that [clickData](/refs/Interface/ClickData#clickdata) is not transmitted to the [onContextMenuPopup](/refs/Class/GridBase#oncontextmenupopup) event
- Fixed the phenomenon that an error occurs when `Control + click` the header of a group column on a mac
- Added the [DisplayOptions.selectionRemovable](/refs/Interface/DisplayOptions#selectionremovable) property that allows the selection area to be removed when [DisplayOptions.selectionMode](/refs/Interface/DisplayOptions#selectionmode) is `extended`
- Improved the phenomenon that the [GridBase.onFilteringChanged](/refs/Class/GridBase#onfilteringchanged) event does not occur when filtering in the row grouping state
- Improved the phenomenon that drag&drop between grids does not work on mobile
- In [GridBase.onCellPasting](/refs/Class/GridBase#oncellpasting) Add `editResult` argument to change the pasted value
```js
gridView.onCellPasting = (grid, index, value, editResult) => {
  if (editResult.value === 'test') {
    editResult.value = "11"
  }
  // return true
}
```
- Improved the phenomenon where `filter` could not be initialized intermittently when filtering using [DataColumn.autoFilter](/refs/Interface/DataColumn#autofilter) and then [setRows](refs/Class/LocalDataProvider#setrows)
- When displaying [autoFilter](/guides/column/column-auto-filtering) in the filter window, display the user-added [filter](/guides/column/column-filtering) at the top or bottom. Add property [FilterAutomatingOptions.userFilterPosition](/refs/Interface/FilterAutomatingOptions#userfilterposition)
```js
gridView.columnByName("number").autoFilter = true;
gridView.addColumnFilters("number", [{name:"Less than 5000", criteria: "value < 5000"}, {name:"More than 5000", criteria: "value > 5000"}], true);
gridView.filteringOptions.automating.userFilterPosition = "first";
```
- Improved the phenomenon that the Excel file does not open when there is a space in `sheetName` when exporting [SeriesColumn](/refs/Interface/SeriesColumn) to Excel
- Added [ExportOptions.coreproperties](/refs/Interface/ExportBaseOptions#coreproperties) property that can change the properties of the Excel file when exporting to Excel
```js
gridView.exportGrid({
  type: "excel",
  target: "local",
  coreProperties: {
    title: 'Title',
    creator: 'Writer',
    description: 'Description/Memo',
    keywords: 'Keywords/Tag',
    subject: 'Topic',
    category: 'Category'
  }
})
```
- Fixed the phenomenon that [GridBase.onEditChange](/refs/Class/GridBase#oneditchange) occurs twice when entering Korean in the editor
- When [LineCellEditor](/refs/Interface/LineCellEditor#linecelleditor) is prevented from entering Korean characters by applying [ignoreCharacters](/refs/Interface/LineCellEditor#ignorecharacters) or [inputCharacters](/refs/Interface/LineCellEditor#inputcharacters), the previously entered characters are deleted. Fixed.
- Added [DisplayOptions.altSelectAndImmedinateDrag](/refs/interface/DisplayOptions#altselectandimmedinatedrag) property to make the cell be in `drag&drop` state when selecting it while holding down the `altKey` when [EditOptins.movable](/refs/Interface/EditOptions#movable) is `true`.
- Fixed the issue where the focus is intermittently displayed in a non-spanned state when moving to the next cell using `tab` in a merged cell.
- [GridBase.setColumnLayout](/refs/Class/GridBase#setcolumnlayout) raises an exception if the layout is incorrect and maintains the previous layout. 
- Improved the phenomenon where some mouse-related UI does not work when using the grid in `whale's IE mode` or extension packs such as `ie-tab`, `ieability`. 
- Changed so that the filtering status is not updated when pasting multiple rows when [PasteOptions.noDataEvent](/refs/interface/PasteOptions/nodataevent) is `true` and [GridBase.filterMode](/refs/Class/GridBase#filtermode) is `explicit`. 
- Changed so that the focused row is maintained when filtering.

## v2.8.8 (2025.01.09)
- Added [showMessage](/refs/Class/GridBase#showmessage) to allow users to display arbitrary messages
- Improved the phenomenon where an error occurred intermittently when the number of rows changed or [hintDelay](/refs/Interface/DisplayOptions#hintdelay) was used when displaying a tooltip.

## v2.8.7 (2024.12.19)
- Improved export to Excel even when the style is specified as inline([ColumnStyleObject.style](/refs/Interface/ColumnStyleObject#style)) using dynamic styles
- Fixed the phenomenon where the browser scrolls together when scrolling using the trackpad when [wheelDeltaY](/refs/Interface/DisplayOptions#wheeldeltay) is applied
- Improved so that [contextMenu](/guides/grid-components/context-menu) can be used using `longPress` in `Ios`
- Improved speed when retrieving non-duplicated value using [Provider.getDistinctValues](/refs/Class/DataProviderBase#getdistinctvalues)
- When retrieving cells using [GridBase.mouseToIndex](/refs/Class/GridBase#mousetoindex), the input coordinates are interpreted based on the body. Added `coordianteByBody` argument
- Improved the phenomenon that the [onCurrentRowChanged](/refs/Class/GridBase#oncurrentrowchanged) event does not occur when deleting another row while the focus is on the last row
- Improved the phenomenon that [GridBase.getValue](/refs/Class/GridBase#getvalue) is not pasted intermittently when using [ValueColumn.styleCallback](/refs/Interface/ValueColumn#stylecallback)
- Fixed an error that occurs when calling [setColumnLayout](/refs/Class/GridBase#setcolumnlayout) and [resetCurrent](/refs/Class/GridBase#resetcurrent) multiple times at the same time
- Fixed an error that occurs intermittently when exporting [SeriesColumn](/refs/Interface/SeriesColumn) to Excel
- Fixed the width of the cell in [multiLineEditor](/refs/Interface/MultiLineCellEditor#multilinecelleditor) Added `width` and `minWidht` properties to allow fixation
- Added [DisplayOptions.columnResizeThreshold](/refs/Interface/DisplayOptions#columnresizethreshold) property to change the mouse focus area for changing the column width
- Added [DataProviderBase.getDataRowId](/refs/Class/DataProviderBase#getdatarowid) method to get the `dataRowId`, which is a unique value of the data row
- Added [DataColumn.mergeCallback](/refs/Interface/DataColumn#mergecallback) to allow the user to return the values ​​needed for merging when [merging cells](/guides/cell-components/cell-merging)
```js
  const column = gridView.columnByName("column"); column.mergeCallback = (grid, column, itemIndex, value) => {
    if (!grid.isCheckedItem(itemIndex)) {
      return value;
    }
  }
  column.breakMergeOnEmpty = true;
  gridView.onItemChecked = (grid, itemIndex, checked) => {
    gridView.populateMerges();
  }
```
- Added [GridBase.getWritable](/refs/Class/GridBase#getwritable) method to get whether a cell is editable
- Improved [emptyMessage](/refs/Interface/DisplayOptions#emptymessage) to allow using HTML tags

## v2.8.6 (2024-10-24)
- Fixed the phenomenon of scrolling to the first row after [DataProvider.addField](/refs/Class/DataProviderBase#addfield) is executed
- Added [TreeOptions.expandWhenSetData](/refs/Interface/TreeOptions#expandwhensetdata) property to display nodes in an expanded state when data is loaded in [TreeView](/refs/Class/TreeView)
- Improved the phenomenon of pasting only a part of the area when selecting more than the screen size and pasting when [PasteOptions.selectBlockPaste](/refs/Interface/PasteOptions#selectblockpaste) is `true`
- When [EditOptions.enterToTab](/refs/Interface/EditOptions#entertotab) is `true` Improved the phenomenon that editing of editors with [editMask](/refs/Interface/EditMaskObject#editmask) is not completed
- Added [SortingOptions.sortDataRow](/refs/Interface/SortingOptions#sortdatarow) property to prevent sorting by `dataRow` when values ​​are the same during sorting
- Fixed [DateCellEDitor](/refs/Interface/DateCellEditor) so that incorrect dates are changed to blank
- Fixed error that occurs when pasting row-by-row to a row containing [LiteralColumn](/refs/Interface/LiteralColumn)
- Fixed error that occurs when values ​​used as control characters of regular expressions are entered in the input window of [FilterPanel](/refs/Interface/FilterPanel)
- In [onValidateColumn](/refs/Class/GridBase#onvalidatecolumn) Fixed an intermittent error when using [GridView.getValue](/refs/Class/GridBase#getvalue)
- Improved so that `underline` and `linethrough` of font are applied when `Excel Export` is performed
- Fixed the phenomenon that styles are not applied when exporting to Excel when more than one class is applied to [ColumnHeader.styleName](/refs/Interface/ColumnHeader#stylename)
- Improved the phenomenon that `sortIcon` is not displayed in the header of a group to which [tiedColumn](/refs/Interface/CellLayoutGroupItem#tiedcolumn) is applied
- Added [GridBase.getFilteredRows](/refs/Class/GridBase#getfilteredrows) method which returns `dataRow` of `filtered` rows
- Added `columns` argument to specify columns when validating values ​​using [GridBase.validateCells](/refs/Class/GridBase#validatecells)
- Added `renewHasChildren` argument to prevent nodes with no children and `hasChildren` set from being updated when expanding children using [TreeView.expandAll](/refs/Class/TreeView#expandall)
- Added `activeOrHovered` element to [HandleVisibility](/refs/realgrid#handlevisibility) to be displayed when `filter` is activated or `mouseOver`

## v2.8.5 (2024-09-12)
- Improved error message output when license error occurs
- Changed [numberCellEditor](/refs/Interface/NumberCellEditor#numbercelleditor) to apply [min](/refs/Interface/NumberCellEditor#min), [max](/refs/Interface/NumberCellEditor#max) values ​​after keyboard editing is completed
- Improved phenomenon where multiple radios are selected intermittently when [checkBar.exclusive](/refs/Interface/CheckBar#exclusive) is `true` in `mobile`
- Improved phenomenon where [hideDeletedRows](/refs/Interface/GridOptions#hidedeletedrows) is not applied in some cases
- [exportOptions.compression](/refs/Interface/ExportBaseOptions#compression) to specify whether to compress and the compression ratio when exporting to Excel Added [exportOptions.compressionLevel](/refs/Interface/ExportBaseOptions#compressionlevel) property
- When [checkBar.useImages](/refs/Interface/CheckBar#useimages) is set to `true`, the `checkBox` inside the [treeView](/refs/Class/TreeView) is also changed to be displayed as an image
- Added [indeterminateItem](/refs/Class/GridBase#indeterminateitem), [indeterminateRow](/refs/Class/GridBase#indeterminaterow) methods to display the `indeterminate` state in the `checkbar` of [checkBar](/refs/Interface/CheckBar)
- Added [header.tooltipEllipsisOnly](/refs/Interface/GridHeader#tooltipellipsisonly) property to display the `tooltip` only when only a part of the text displayed in the header is displayed
- Fixed an error that occurred when [fillLookupData](/refs/Class/GridBase#filllookupdata) was performed after [clearLookupData](/refs/Class/GridBase#clearlookupdata)
- Improved the phenomenon where an error occurred intermittently when returning `false` in [onContextMenuPopup](/refs/Class/GridBase#oncontextmenupopup)
- Fixed the phenomenon where [column.displayCallback](/refs/Interface/DataColumn#displaycallback) was not applied when exporting to Excel
- Added `data` argument so that data can be entered when adding a new row using [beginInsertRow](/refs/Class/GridView#begininsertrow) or [beginAppendRow](/refs/Class/GridView#beginappendrow)
Changed the return value to return the itemIndex of the row being added.
Changed to add even if [editOptions.insertable](/refs/Interface/EditOptions#insertable) or [editOptions.appendable](/refs/Interface/EditOptions#appendable) is `false`
- Fixed an error that occurred when exporting a grid with a column group's [direction](/refs/Interface/CellLayoutGroupItem#direction) of `vertical` to Excel
- Fixed an error that occurred when [pasteOptions.applyEditMask](/refs/Interface/PasteOptions#applyeditmask) was `true`
- Fixed the phenomenon where the position of `footer` did not change when changing [scrollBarHeight](/refs/Class/GridBase#scrollbarheight)
- Fixed the phenomenon where some events were not called when editing on mobile
- Fixed the phenomenon where the screen would freeze when `\` was entered in the inputBox of [FilterPanel](/refs/Interface/FilterPanel#filterpanel)

## v2.8.4 (2024-08-08)
- Improved so that when pasting multiple rows in the [rowGrouping](/guides/row-group/row-grouping) state, even if there is a `groupFooter` in the middle, it is pasted normally
- Improved the phenomenon where the vertical scrollbar thumbTrack area does not move intermittently when clicking the top
- Added the [getLookupData](/refs/Class/GridBase#getlookupdata) method that can read the value set in [LookupTree](/guides/cell-components/lookup-tree)
- Improved so that when [lookupSourceId](/refs/Interface/DataColumn#lookupsourceid) and [labelField](/refs/Interface/DataColumn#labelfield) are set at the same time, if there is no value in `lookupSource`, the value is retrieved from `labelField`
- Removed `CRLF` added at the end when copying from the grid
- Added [LiteralColumn](/refs/Interface/LiteralColumn) to output a fixed value without being connected to [DataField](/refs/Interface/DataField)
- Fixed an error that occurred when moving cells using `tab` when [editOptions.skipReadOnly](/refs/Interface/EditOptions#skipreadonly) is `true` and there is a [SeriesColumn](/refs/Interface/SeriesColumn)
- Fixed an error when using [ActualTargetTextRenderer](/refs/Interface/ActualTargetTextRenderer) in [TreeView](/refs/Class/TreeView)
- Added [collapse](/refs/Class/GridView#collapse), [expand](/refs/Class/GridView#expand) methods to collapse or expand groups when there is no header in `rowGrouping`
- When copying a single cell Fixed the issue where [column.blankWhenCopy](/refs/Interface/ValueColumn#blankwhencopy) is not applied
- Added [text](/refs/Interface/ColumnStyleObject#text) property that can specify the value displayed on the screen in [styleCallback](/refs/Interface/ValueColumn#stylecallback)
- Improved the issue where the target grid cannot be moved when Drag&amp;Drop between grids if it is aligned
- Added [DataDropOptions.dropOtherGrid](/refs/Interface/DataDropOptions#dropothergrid) property that allows movement only within the same grid when Drag&amp;Dropping a grid
- Added [inlileFilterFocus](/refs/Interface/FilterPanel) method to focus on the `input` area of the `filterPanel` when the [filterPanel](/refs/Interface/FilterPanel) is displayed
- Added [templateEvents](/refs/Interface/TemplateCellRenderer#templateevents) property to connect `event` to element when displaying cell in `HTML` format using [TemplateCellRenderer](/refs/Interface/TemplateCellRenderer)
- Improved the phenomenon where [templateCallback](/refs/Interface/CellLayoutGroupHeader#templatecallback) of [layoutGroupHeader](/refs/Interface/CellLayoutGroupHeader) is not called
- Improved so that `aria-hidden`-related error message that occurs after `chrome` update is not output
- Added [useCheckImage](useCheckImage) property to display `checkbox` displayed in [columnHeader](useCheckImage) as image

## v2.8.3 (2024-06-27)
- Improved the phenomenon of changing to editable state when pasting into a row that is not editable when [pasteOptions.checkReadOnly](/refs/Interface/PasteOptions#checkreadonly) is `true`
- Added `includeFooterText` parameter to include the text of `footer` when changing the width of a column using [fitLayoutWidth](/refs/Class/GridBase#fitlayoutwidth).
- Added [GridBase.showFilterSelector](/refs/Class/GridBase#showfilterselector) method to display the filter selection window.
- Added [MultiCheckCellRenderer](/refs/Interface/MultiCheckCellRenderer) to select multiple `checkbox` or `radio`
- Improved the phenomenon in which the calendar is not displayed properly when the [datetimeFormat](/refs/Interface/CellEditor#datetimeformat) of [DateCellEditor](/refs/Interface/DateCellEditor) is `yyyy.M.d`.
- Improved the phenomenon of not pasting properly when [PasteOptions.applyMaxLength](/refs/Interface/PasteOptions#applymaxlength) is `true` and `editor.maxLength` is `0`
- Added [EditorOptions.showMarquee](/refs/Interface/EditorOptions#showmarquee) property to display the pop-up editor in the center of the screen or at the location of the selected cell on mobile.
- Improved the ‘round down’ or ‘round up’ functions to work in [NumberCellEditor.editFormat](/refs/Interface/NumberCellEditor#editformat)
- Added cut function when entering `Ctrl + x`
- Improved the issue where [userCellStyle](/guides/grid-style/add-cell-style) applied to [TreeView](/refs/Class/TreeView) is not removed.
- Improved the phenomenon in which [EditOptions.skipReadOnly](/refs/Interface/EditOptions#skipreadonly) is not applied when changing `editable` by referring to the cell being edited in [styleCallback](/refs/realgrid#cellstylecallback)
```js
 gridView.columnByName("column").styleCallback = (grid, cell) => {
  return {
    editable: grid.getValue(cell.index.itemIndex, "refField", true) === "T"
    // Determine editability by reading the value being edited in the referenced column.
  }
 }
```
- Add `editing` parameter to retrieve the actual value being edited when getting the value using [GridBase.getValue](/refs/Class/GridBase#getvalue)
- Improved the phenomenon where `undo` does not work properly when rows are added or deleted using `removeRow`, `insertChildRow`, etc. of [TreeView](/refs/Class/TreeView)
- Changed so that `text` is not displayed when [ColumnHeader.checkLocation](/refs/Interface/ColumnHeader#checklocation) is `center`.
- Improved the phenomenon in which line breaks do not work properly when outputting to Excel in `Chrome` series browsers.

## v2.8.2 (2024-05-02)
- Added [DisplayOptions.tooltipEllipsisOnly](/refs/Interface/DisplayOptions#tooltipellipsisonly) property to display tooltip only for cells in `ellipsis` state when displaying [tooltip](/guides/cell-components/tooltip).
- Added [RowGroup.indentVisibleLevel](/refs/Interface/RowGroup#indentvisiblelevel) property to display only some level expanders when [Row Group](/guides/row-group/row-grouping) This does not apply in case of mergedRowGrouping.
- Added [RowGroup.blankGroupData](/refs/Interface/RowGroup#blankgroupdata) property to not display if the data in the group column is the same as the previous row when row grouping is performed.
- Added [FilterAutomatingOptions.timeCategorize](/refs/Interface/FilterAutomatingOptions#timecategorize) property to classify by hour/minute/second when using autoFilter.
- Fixed an error that occurred when calling the [GridView.groupBy](/refs/Class/GridView#groupby) method after initializing fields and columns in row group state.
- Fixed an error that occurred intermittently when updating `contextMenu` in [onContextMenuPopup](/refs/Class/GridBase#oncontextmenupopup)
- Fixed an error where some time values were missing when using [maskEdit](/refs/realgrid#editmask) in [dateCellEditor](/refs/Interface/DateCellEditor#datecelleditor)
- Fixed an issue where [TreeView](/refs/Class/TreeView#treeview) does not work properly when folding or expanding using expander when `displayOptions.rowHeight` is `-1`.
- Fixed the phenomenon of grid being distorted when [fixedOptions.rowBarHeight](/refs/Interface/FixedOptions#rowbarheight) is set to `0`
- [checkBar.toggleRadio](/refs/Interface/CheckBar#toggleradio) property that clears the checked state when `radio` is clicked again when [checkBar.exclusive](/refs/Interface/CheckBar#exclusive) is `true` addition
- Fixed an issue where even if the [editOptions.exitGridWhenTab](/refs/Interface/EditOptions#exitgridwhentab) property is set, the grid cannot be exited even by entering `shift + tab` if `checkBox` is displayed in the column header.
- Added [headThreeStates](/refs/Interface/CheckBar#headthreestates) property to display some selections in the checkBox in the head area when only some are checked.

## v2.8.1 (2024-03-28)
- Added `groupFocusLevel` property to specify the level of the group selected when [groupFocusVisible](/refs/Interface/DisplayOptions#groupfocusvisible) is `true`.
- Changed so that [styleName](/refs/Interface/GridFooter#stylename) set in [footer](/refs/Interface/GridFooter) is also added to the `foot` area of the rowIndicator or checkBar.
- [RowGroup.resetOriginVindex](/refs/Interface/RowGroup#resetoriginvindex) property that returns to the original position when a column in [Row Merged Grouping](/guides/row-group/merged-row-grouping) is ungrouped addition
- Improved the phenomenon in which the [fillWidth](/refs/Interface/CellLayoutItem#fillwidth) property set in the subcolumn of `groupLayout` is not applied when [GridFitStyle](/refs/realgrid#gridfitstyle) is `fill`.
- Improved to prevent [onCellClicked](/refs/Class/GridBase#oncellclicked) from occurring when [groupFocusVisible](/refs/Interface/DisplayOptions#groupfocusvisible) is `true`.
- When exporting a grid with [Row Merged Grouping](/guides/row-group/merged-row-grouping) to Excel, use [separateRows](/refs/Interface/GridExportOptions#separaterows) to unmerge the rows. When outputting, add the [fillMergeFooterValue](/refs/Interface/GridExportOptions#separaterows) property to output data in the `footer` or `summary` area.
- Improved the issue where the default message is displayed when changing [displayOptions.emptyMessage](/refs/Interface/DisplayOptions#emptymessage) to `""`

## v2.8.0 (2024-03-14)
- When hiding the header of a group sub-column in [Group Layout](/refs/Interface/CellLayoutGroupItem), specify the column displayed instead of the group header in [CellLayoutGroupItem.tiedColumn](/refs/cell-layout-group- Add item#tiedcolumn) property
```js
gridView.setColumnLayout([
   "text1",
   {
     name:"group1",
     header: {text: "group1"},
     hideChildHeaders: true;
     tiedColumn: "text2",
     items: ["text2", "text3", "text4"]
   }
])
```
- [DataProvider.destroy](/refs/Class/DataProviderBase#destroy) Fixed an error that occurred when removing a grid with row merge grouping.
- Improved to add images in [userCellsCallback](/guides/excels/user-cells)
- Added [sortingOptions.nullsOrder](/refs/Interface/SortingOptions) property to display `null` `undefined` `""` first or last when sorting.
- Fixed an issue where the grid was sorted when the context menu was opened by long-touching the column header on mobile.
- [CheckBar.showFocus](/refs/Interface/CheckBar#showfocus) property to change the background color of the [stateBar](/refs/Interface/StateBar) [checkBar](/refs/Interface/CheckBar) area of the focused row. and add [CheckBar.showSelection](/refs/Interface/CheckBar#showselection) property
- [listCallback](/refs/drop-down) called when a list is displayed in the [listEditor](/refs/Interface/DropDownCellEditor), [checkList](/refs/Interface/MultiCheckCellEditor) editor Improved to allow users to specify using -cell-editor#listcallback) and [templateCallback](/refs/Interface/DropDownCellEditor#templatecallback)
For more information, see [list editor](/guides/editor/dropdown-editor#dropdown-multi-selection)
```js
const columns = [
   {
     fieldName: "list", name: "list",
     editor: {
       type: "list",
       listCallback: async function(grid, index) {
         return new Promise(resolve, reject) {
           gridView.showLoading(true);
           setTimeout(() => {
             gridView.closeLoading();
             resolve({
               list: [
                 {value: "1", label: "Japan", flag: "kr", name: "Korea"},
                 {value: "2", label: "Lee", flag: "us", name: "United States"},
                 {value: "3", label: "3", flag: "ca", name: "Canada"}
               ]
             })
           }, 1000)
         }
       },
       templateCallback: function(grid, index, dom, value, label, item) {
         dom.innerHTML = '<img src="images/flags/'+item.flag+'.png" style="width:20px;height:20px" class="dropdown-image"></img>'+
                         '<span> value = '+value+' </span>'+
                         '<span style="color:red"> label = '+label+'</span>'+
                         '<span style="background:lawngreen"> Country: '+item.name

       }
     }
   }
]
```
- Added [filteringOptions.selector.expandCategory](/refs/Interface/FilterSelectorOptions#expandcategory) property to display expanded when `filter` is displayed.
- Fixed an issue where the group footer disappears when moving with the arrow keys in a grid with row grouping applied
- Improved to include the width of the `sort` and `filter` icons when changing the width of a column using [fitLayoutWidth](/refs/Class/GridBase#fitlayoutwidth)
- Added `eventFire` parameter to prevent selection-related events from occurring when changing the selection area using [setSelection](/refs/Class/GridBase#setselection).
```js
gridView.setSelection({style: "block", startItem: 0, endItem: 1, startColumn: "KorName", endColumn: "Phone"}, false);
```
- Added [viewMode](/refs/Interface/DateCellEditor#viewmode) property to allow only `year` or `month` to be selected in [DateCellEditor](/refs/Interface/DateCellEditor)
- Improved the phenomenon that when clicking when there is no focused cell in the grid, the focus goes to the first cell and then moves to the clicked cell.
- Improved the phenomenon in which the last Korean character entered after filtering is displayed in duplicate when entering Hangul in [filterPanel](/refs/Interface/FilterPanel)
- Added [SortingOptions.outerSort](/refs/Interface/SortingOptions#outersort) property to display only the sort icon without actual sorting when the column header is clicked.
- Improved the issue where [PasteOptions.applyMaxLength](/refs/Interface/PasteOptions#applymaxlength) is not applied properly when pasting.
- Fixed an error that occurred when changing a line by entering `alt+enter` when using `multiLineEditor` in `windows 10`
- Improved the phenomenon in which the grid becomes distorted when changing the visibility of `checkBar` or `stateBar` when [DisplayOptions.fitStyle](/refs/Interface/DisplayOptions#fitstyle) is set.
- Improved the phenomenon in which the style is not applied to Excel when exporting a grid with [GroupFooterStyleCallback](/refs/realgrid#groupfooterstylecallback) applied.
- Added [baseValue](/refs/Interface/BarCellRenderer#basevalue) property to display cases that are smaller than or larger than the standard value in [BarCellRenderer](/refs/Interface/BarCellRenderer)
- Improved the phenomenon in which [DisplayOptions.fitStyle](/refs/Interface/DisplayOptions#fitstyle) is not applied when the number of columns is the same as [fixedOptions.colCount](/refs/Interface/FixedOptions#colcount)
- Improved to return filter conditions from [filterPanelCallback](/refs/Interface/FilterPanel#filterpanelcallback) of [filterPanel](/refs/Interface/FilterPanel)
- Improvements to specify default settings for some editors
The editors that can set default settings are [dropdown](/refs/Interface/DropDownCellEditor), [date](/refs/Interface/DateCellEditor), [number](/refs/number-cell-editor ), [multiCheck](/refs/Interface/MultiCheckCellEditor), [search](/refs/Interface/SearchCellEditor).
If specified in [RealGrid.setDefalut](/refs/Class/RealGrid#setdefault), it will be applied to all grids created thereafter.
```js
   RealGrid.setDefault({
     editorOptions: {
       numberCellEditor: {
         showButton: true
       }
     }
   });
   // or
   gridView.setEditorOptions({
     numberCellEditor: {
       showStepButton: true
     }
   });
```
- Added [RealGrid.setLicense](/refs/Class/RealGrid#setlicensekey) method to save and use the grid's licenseKey in the environment file.
```js
//.env.production
RG_LICENSE='server-licenseKey'

//.env.local
RG_LICENSE='devloper-licenseKey'
// Depending on the development environment, you must apply it by referring to the file that stores environment variables and the method of use.

RealGrid.setLicenseKey(import.meta.env.RG_LICENSE)
```
- Added [RealGrid.setDefault](/refs/Class/RealGrid#setdefault) method to register [options](/refs/Interface/ViewOptions) commonly applied to the grid to the module.
```js
import RealGrid from 'realgrid';

RealGrid.setDefault({
   display: {
     rowHeight: 30
   },
   edit: {
     commitByCell: true
   }
});
```
See demo for more details

- Added [RealGrid.registerCustomRenderer](/refs/Class/RealGrid) method so that [CustomRenderer](/refs/Interface/CustomCellRenderer), commonly used in grid, can be registered and used in the module.
```js
RealGrid.registerCustomRenderer('custom-renderer', {
   ...
});

const columns = [{fieldName: "field1", name: "field1", renderer: "custom-renderer"}];

gridView.setColumns(columns);
```
In addition to adding using an existing object, a method of using it by extending the [RealGrid.CustomCellRendererImpl](/refs/Class/CustomCellRendererImpl) class was added.
```js
//customRenderer.ts
import RealGrid from 'realgrid';

class CustomRenderer1 extends RealGrid.CustomCellRendererImpl {
     get styleName(): string {
         throw new Error('Method not implemented.');
     }
     protected _doInitContent(dom: HTMLElement): void {
         throw new Error('Method not implemented.');
     }
     protected _doClearContent(dom: HTMLElement): void {
         throw new Error('Method not implemented.');
     }
     protected render(grid: GridBase, model: GridCell, w: number, h: number): void {
         throw new Error('Method not implemented.');
     }
}

RealGrid.registerCustomRenderer('randerer1', CustomRenderer1);
```
For more information, see [class custom renderer](/guides/renderer/class-custom-renderer)

- Changed multilingual settings method
The existing method of changing the grid message using `RG_CONST` has been removed, and [RealGrid.setLocale](/refs/Class/RealGrid#setlocale) has been used to register the thousands symbol and decimal point symbol that vary depending on the message and language. change
```js
//realgrid-resource.ts

// Message to display by language
const realgridMessages = {
   "ko": {
     displayEmptyMessage: "There is no data to display"
   },
   "en": {
     displayEmptyMessage: "There is no data to display"
   },
   "fr": {
     displayEmptyMessage: "Il n'y an aucune donnée à afficher"
   }
}

// Register currency symbols that vary by language and region
const realgridLocale = {
   "ko": {
     locale: "ko",
     currency: "KRW",
     messages: realgridMessages.ko
   },
   "en-US": {
     locale: "en-US",
     currency: "USD",
     messages: realgridMessages.en
   },
   "en-CA": {
     locale: "en-CA",
     currency: "CAD",
     messages: realgridMessages.en
   },
   "fr-CA": {
     locale: "fr-CA",
     currency: "CAD",
     messages: realgridMessages.fr
   }
}

export default realgridLocale;


// Register using RealGrid.setLocale depending on the user environment.
import realgridLocale from 'realgrid-resource'
...
const locale = navigator.language; //
const gridLocale = realgridLocale[locale] || realgridLocale["ko"];
RealGrid.setLocale(gridLocale);
```
For more information, see the [Multilingual Settings](/guides/setting/locale) demo.


## v2.7.2 

**update date: 2023-11-01**

- Fixed an issue where an editor with a list does not work properly when [EditOptions.commitWhenLeave](/refs/Interface/EditOptions#commitwhenleave) is `true`.
- Improved so that jszip module can be passed as an option when `excel export`
```js
   import JSZip from 'jszip';
   ...
   gridView.exportGrid({
     type: "excel",
     target: "local",
     zip: JSZip
   })
```
- Improved to display even if there is a `-` value among the values of [spark-column renderer](/refs/Interface/SparkColumnRenderer)## v2.7.1 

**update date: 2023-10-19**

- Improved output to standard time zone or specified time zone using [DataOutputOptions.datetimeFormat](/refs/Interface/DataOutputOptions#datetimeformat)
- Changed the [GridBase.onContextMenuPopup](/refs/Class/GridBase#oncontextmenupopup) event to occur when the `popupMenu` button is clicked.
   Add `menu` and `rightClick` arguments to check the name of the popupMenu and whether the mouse is right-clicked.
- Improved the phenomenon of not operating properly when [SortingOptions.handleVisibility] is set to [HandleVisibility.hovered](/refs/realgrid#handlevisibility#hovered)
- Added the [addCellStyle](/refs/Class/GridBase#addusercellstyle) method so that users can specify the style of the cell. For more information, see [Apply Cell Style](/guides/grid-style/add-cell -style) See also
- Fixed an issue where a selection appears in the first column when rowMove is performed when `displayOptions.selectionStyle` is `none`.
- Fixed an issue where editing mode could not be entered intermittently when clicking while the grid does not have `focus`
- Changed the way the year and month are selected in [dateEditor](/refs/Interface/DateCellEditor)
   Improved to select hour/minute/second
- Added [GridExportOptions.unCheckMark] property to display unchecked cases when outputting `checkBar` to Excel.
- Improved the phenomenon in which data from some columns overflows into other columns when `fixedOptions.colCount` is specified.
- Fixed error that occurs intermittently when `treeView.destroy`
- Fixed error that occurred when removing grid with [displayOptions.hintDelay](/refs/Interface/DisplayOptions#hintdelay) set.
- Fixed error that occurred when calling `setCurrent` on a grid in a hidden area.
- Modified so that the [GridExportOptions.footer](/refs/Interface/GridExportOptions#footer) property is applied properly when exporting to Excel with the `footer` hidden.
- Added [filterPanelCallback](/refs/Interface/FilterPanel#filterpanelcallback), which is called when filtering using [filterPanel](/refs/Interface/FilterPanel)
- Added [displayOptions.showTooltip](/refs/Interface/DisplayOptions#showtooltip) property to show `tooltip` in all columns

## v2.7.0 

**update date: 2023-08-24**

- removeRow the same row twice when [DataProvider.undoable](/refs/Class/DataProviderBase#undoable) is `true` and [DataProvider.softDeleting](/refs/Class/DataProviderBase#softdeleting) is `true` Fixed an error that was actually deleted when doing this.
- Fixed an error that occurs intermittently when retrieving data while the `changeMarker` is displayed.
- Added [GridBase.requestPrepareEditor](/refs/Class/GridBase#requestprepareeditor) method to reapply some of the editor properties of the cell while the cell is selected.
- Added [pasteOptions.forceAppend](/refs/Interface/PasteOptions#forceappend) property to enable row append (Append) when pasting a row.
- When grid.getValue is used within the [onCellPasting](/refs/Class/GridBase#oncellpasting) event, the data from only the row being pasted is changed to being able to get the values of other rows as well.
- Improved the phenomenon where some group footer values are not displayed properly
- Fixed an error that occurs when trying to get the itemIndex of a child row using [treeView.getDescendants](/refs/Class/TreeView#getdescendants-itemindex) when the node does not have a child row.
- [ColumnSummary.value](/refs/Interface/ColumnSummary), which can retrieve the value of [ColumnSummary.valueCallback](/refs/Interface/ColumnSummary#valuecallback) or [ColumnSummary.expression](/refs/Interface/ColumnSummary#expression) Add #value) attribute
- Improved the phenomenon where line breaks do not occur in the latest version of Chrome when exporting to Excel
- Improved the phenomenon in which data in some cells is not displayed when [fixedRow](/refs/Interface/FixedOptions#fixed) and [equalBlank](/refs/Interface/CellLayoutColumnItem#equalblank) are applied at the same time
- Add `autocomplete="off"` attribute to Search `input` Tag of filterSelectBox
- Added [DataDragOptions.dropOtherElement](/refs/Interface/DataDropOptions#dropotherelement) property to enable drag&drop to areas other than the grid.
   For more information, see [Grid to Div](/guides/drag-and-drop/grid-to-div)
- Improved the issue where the editor is not displayed properly on some devices when double tapping on mobile.
   Improved scrolling when swiping left or right
   Improved scrolling in the `footer` area and `headerSummary` area.
- Changed the browser to scroll when the first or last row is visible when scrolling up or down on mobile
- Improved to enable `dropdown` or `multiCheck` editor as editor for columns whose dataType is `object`.
- Fixed an issue where the order of columns is initialized when filling values using [LocalTreeDataProvider.setRows](/refs/Class/LocalTreeDataProvider#setrows) in the tree grid.
- Fixed the phenomenon of font information disappearing when `excel export` with numberFormat of rowGroup Footer set.
- Added [mobileOptions.showEditCommander](/refs/Interface/MobileOptions#showeditcommander) property to display a button to apply or cancel cell editing when editing on mobile.
- rowGroFixed an error that occurred when exporting to Excel while hiding some groupFooters with [up.createFooterCallback](/refs/realgrid#createfootercallback#create)
- When [LocalTreeDataProvider.softDeleting](/refs/Class/DataProviderBase#softdeleting) is `true`, [treeOptions.recursiveDeleting](/refs/tree- changes the rowState of the child node to `deleted` when deleting a row. options#recursivedeleting) property added
   When deleting a row using [LocalTreeDataProvider.removeRows](/refs/Class/LocalTreeDataProvider#removerows), add the `recursive` argument so that the rowState of the child row can also be changed to `deleted`.
- Changed so that when [listEditor.dropdownWhenClick](/refs/Interface/DropDownCellEditor#dropdownwhenclick) is `true`, it does not change to edit state when sorting or filtering.
- Fixed an issue where the value of the cell where `mouse` is located changes when `space` is entered when cells with a check renderer are merged and have focus.
- When combining cells horizontally using [columnLayout.dataSpan](/refs/Interface/CellLayoutColumnItem#dataspan), improvements have been made so that they can be combined even if the parent groups are different.
- Fixed an issue where `booleanFormat` was not applied properly when the field's dataType was `text` when connecting a field to the checkBar of `treeView`.
- Improved so that all checkboxes in the `checkList` editor are checked in conjunction with whether the item is selected.
- Improved to reference grid in [exportOptions.numberCallback](/refs/Interface/ExportOptions#numbercallback)
- Added [exportOptions.bulkImageDownload](/refs/Interface/GridExportOptions#bulkimagedownload) property to download images in bulk or sequentially when exporting them to Excel.
- Remove `formView` and related APIs
- The [recycle](/refs/realgrid#refreshmode) property has been added to displayOptions.refreshMode, a scroll speed improvement option.

## v2.6.3 

**update date: 2023-05-25**

- Changed so that the footer area is not covered when [EmptyMessage](/refs/Interface/DisplayOptions#emptymessage) is displayed.
- When exporting images to [Excel](/guides/excels/image-export), improved to add and save extensions only to `gif`, `png`, `jpeg`, and `bmp` for images without extension.
- Filtering while focus is on checkCellRendererFixed errors that occurred intermittently when using
- Fixed an error that occurred when updating [ContextMenu](/guides/grid-components/context-menu#main-content) within the [onContextMenuItemClicked](/refs/Class/GridBase#oncontextmenuitemclicked) event.
- Added [onWheel](/refs/Class/GridBase#onwheel) event, which is called when a mouse wheel event occurs.
- Fixed an issue where [valueCallback](/refs/Interface/DataField#valuecallback) or [valueExpression](/refs/Interface/DataField#valueexpression) was not recalculated when modified.
- [getInvalidCells](/refs/Class/GridBase#getinvalidcells) - Improved to retrieve only cells corresponding to the specified row among cells that failed value verification.
- Added [getInvalidCellsOfRow](/refs/Class/GridBase#getinvalidcellsofrow-datarow) API to retrieve cells corresponding to a specific dataRow among cells that failed value verification.
- Fixed error related to `params` when downloading `excel remote`
- Fixed an error that occurred intermittently when exporting a screen with vertical layout applied to Excel
- Fixed an error that occurred when exporting a grid with mergedRowGrouping and [rowGroup.expandedAdornments](/refs/Interface/RowGroup#expandedadornments) as `footer` to Excel.
- Added [displayOptions.selectAndImmediateDrag](/refs/Interface/DisplayOptions#selectandimmediatedrag) property to enable drag&drop immediately after selecting a cell.
- Added [footer.heights](/refs/Interface/GridFooter#heights) property to specify the tr height of the footer when one row consists of multiple trs.
- Added [displayOptions.groupFocusVisible](/refs/Interface/DisplayOptions#groupfocusvisible) property that can display `focus` in groups.
- When a row is moved using [moveRow](/refs/Class/LocalDataProvider#moverow), [getUpdatedCells](/refs/Class/DataProviderBase#getupdatedcells) is intermittently missing. phenomenon improvement
- Added [DataColumn.filterSelectorWidth](/refs/Interface/DataColumn#filterselectorwidth) property to specify the width of the filter selector for each column.
- Added [DataDropOptions.scroll](/refs/Interface/DataDropOptions#scroll) property to prevent row scrolling from automatically occurring when drag&drop.
- Fixed an issue where [onScrollToBottom](/refs/Class/GridBase#onscrolltobottom) occurs even when the last row is partially visible.
- Fixed the phenomenon that the width of the column changes when opening Excel after exportGrids and copying the sheet.
- Fixed the issue where [spanCallback](/refs/Interface/CellLayoutColumnItem#spancallback) is not applied when exporting to Excel.
- [clickOnlyFocusedCell](/refs/Interface/CellRenderer#clickonlyfocusedcell) property to prevent unintended actions from being executed in some cellRenderers when `false` is returned in [onCurrentChanging](/refs/Class/GridBase#oncurrentchanging) addition
- Changed the application order of expression and valueCallback of groupFooter and columnFooter to be the same.
- Fixed an issue where [cellProtectProps](/refs/Interface/ColumnStyleObject#cellprotectprops) was not applied properly in some areas.
- Added [displayOptions.selectAtSingleRow](/refs/Interface/DisplayOptions#selectatsinglerow) property to allow selection from only one row when selectionStyle is `block`.
- Added [checkBar.focusMove](/refs/Interface/CheckBar#focusmove) property that moves focus to the corresponding row when the checkBox of checkBar is clicked.
- Added [editOptions.focusMoveStep](/refs/Interface/EditOptions#focusmovestep) property that allows cells to be moved in `group` units when moving cells with the keyboard. Refer to [FocusMoveStep](/refs/realgrid#focusmovestep)
- Add `layout` argument to check the layout where the event occurred in [onShowHeaderTooltip](/refs/Class/GridBase#onshowheadertooltip)
- Added [searchOptions.reverse](/refs/Interface/SearchOptions#reverse) property to search in reverse order when searching data in grid or DataProvider. For more information, see [Search](/guides/data-manager/search-item) Demo reference
- Added [DataColumn.filterIconVisible](/refs/Interface/DataColumn#filtericonvisible) property to hide filterIcon for each column.
- Added [GridBase.resetFilters](/refs/Class/GridBase#resetfilters) method to deactivate all active columnFilters.


## v2.6.2 (
  
  **update date: 2023-01-29**

- Fixed the issue where `itemIndex` and `dataRow` of the [onEditRowPasted](/refs/Class/GridBase#oneditrowpasted) event are incorrectly transmitted when pasting multiple rows in [Treeview](/guides/tree/tree-view)
- Improved the phenomenon of values disappearing intermittently when selecting a searched item in [searchEdit](/refs/Interface/SearchCellEditor#search)
   Improved the phenomenon in which the [onEditSearch](/refs/Class/GridBase#oneditsearch) event occurs once more when entering `enter`.
- Improved the phenomenon in which the grid becomes distorted when the height is set to `1` using [setRowHeight](/refs/Class/GridBase#setrowheight)
- Added [IndicatorValue.REVERSE](/refs/realgrid#indicatorvalue#reverse) to display `itemIndex` in reverse order to [rowIndicator](/refs/Interface/RowIndicator#row)
- Added [editOptions.currentChangingFirst](/refs/Interface/EditOptions#currentchangingfirst) property to ensure that the [onCurrentChanging](/refs/Class/GridBase#oncurrentchanging) event is called before `commit` when moving to another cell after editing a cell.
- Improved the phenomenon of `selection` being changed when clicking on the rowIndicator area when focus cannot be moved.
- Improved the phenomenon in which the `exportStyleName` set in [header](/refs/Interface/GridHeader#grid) is not applied properly when exporting to Excel.
- Changed so that the editor does not disappear when returning `false` in [onEditCommit](/refs/Class/GridBase#oneditcommit)

## v2.6.1 

**update date: 2023-01-05**

- [numberEditor](/guides/editor/number-editor) The `-` symbol is [maxLength](/refs/Interface/TextCellEditor#maxlength) or [maxIntegerLength](/refs/Interface/NumberCellEditor#maxintegerlength) Improved to exclude when calculating
- Fixed an error that occurred when pasting into a cell where [applyNumberFormat](/refs/Interface/PasteOptions#applynumberformat) is `true` and ValueType is `number`.
- [template](/refs/Interface/ColumnObject#template) to use html code in [footer](/refs/Interface/ColumnFooter#column) or [headerSummary](/refs/Interface/ColumnHeaderSummary) Add [templateCallback](/refs/Interface/ColumnSummary#templatecallback), which is used when converting `${key}` to an actual value.
- Fixed the issue where [emptyValue](/refs/Interface/CellEditor#emptyvalue) is not applied in [numberEditor](/guides/editor/number-editor)
- Improved the `Week of Year` area to be clickable when [weekSelectable](/refs/Interface/DateCellEditor#weekselectable) of [dateEditor](/guides/editor/date-editor) is `true`.
- When searching using [dataProvider.searchData](/refs/Class/LocalDataProvider#searchdata), if there is only one row, the [warp](/refs/Interface/SearchCellOptions#wrap) property is applied. Improving the phenomenon that does not work
- When there are multiple grids on one screen, change the id of `checkBox` in [checkBar](/refs/Interface/CheckBar#check-bar) so that it does not overlap.
- [onLayoutCollapsed](/refs/Class/GridBase#onlayoutcollapsed), [onLayoutCollapsing](/refs/Class/GridBase#onlayoutcollapsing), [onLayoutExpanded](/refs/Class/GridBase#onlayoutexpanded) that occurs when a column is collapsed or expanded. , [onLayoutExpanding](/refs/Class/GridBase#onlayoutexpanding) event added, refer to [column collapse](/guides/column/layout-expand)
- Fixed an error that occurred in some browsers when exporting [imageRenderer](/refs/Interface/ImageCellRenderer#image) to Excel.
- When exporting the [paging](/guides/paging/paging1) processed grid to Excel, [onlyCheckedItems](/refs/Interface/GridExportOptions#onlycheckeditems) and [pagingAllitems](/refs/grid- Improved the phenomenon in which `onlyCheckedItems` is not applied when applying export-options#pagingallitems)
- Improved so that non-editable cells are not erased when erasing cell values in the selected area using [eraseSelection](/refs/Class/GridBase#eraseselection).
Added `force` parameter so that even if [editOptions.erasable](/refs/Interface/EditOptions#erasable) is `false`, it can be erased using API.
- When exporting to Excel, if there is a control code (0x00 ~ 0x1F) in the data, the control code is changed to a code that Excel can read and exported.
- Improved the phenomenon of not finding the filter properly when searching for a filter in the filter search window if there is `'` or `"` in the filter string.
   Added [activeWhenEnter](/refs/Interface/FilterSelectorOptions#activewhenenter) property to select all searched filters when enter is entered after filter search.
- [addLayout](/refs/Interface/CellLayoutGroupItem#addlayout-source-index) to add layout to grid Layout-root or CellLayoutGroupItem, [removeLayout](/refs/Interface/CellLayoutGroupItem to remove Add #removelayout-layout) method
- [equalBlankText](/refs/Interface/DataColumn#equalblanktext) allows you to use [equalBlank](/refs/Interface/DataColumn#equalblank) to set the character that is output instead of blank when expressing a cell as one if it is the same as the value of the previous row. ) property and [equalBlankLine](/refs/Interface/DataColumn#equalblankline) property that specifies whether to print a line.
- Improved so that you can directly specify the style of the `tr` element of the row in [rowStyleCallback](/refs/realgrid#rowstylecallback#row)
- Added [feedbackStyle](/refs/Interface/DataDropOptions#feedbackstyle) property to change target location display format to [DataDropOptions](/refs/Interface/DataDropOptions)
- Fixed the issue where [showLabel](/refs/Interface/BarCellRenderer#showlabel) of [barCellRenderer](/refs/Interface/BarCellRenderer#bar) is not applied

## v2.6.0 

**update date: 2022-09-29**

- When using [rowGroup](/guides/row-group/row-grouping), [valueForGroupCallback](/refs/Interface/RowGroup#valueforgroupcallback) has been added so that grouping can be done by referring to partial values of data or values of other fields. For more information, see [ See row group](/guides/row-group/row-grouping)
- Added [getDistinctItemValues](/refs/Class/GridBase#getdistinctitemvalues)api, which returns the values corresponding to the specified field in a sorted state by excluding duplicates, excluding rows hidden by filtering and softDeleting.
- Fix error that occurs when fixedRow occupies the entire data area of the grid
- Fixed the phenomenon that the screen scrolls when clicking the check button in checkBar, and fixed the phenomenon that the screen scrolls when the column is moved.
- Fixed an issue where [searchOptions.compareCallback](/refs/Interface/SearchOptions#comparecallback) was not performed properly.
- Partial improvement in the phenomenon of editButton appearing in the RowGroup Header area
- Separate the filter initialization button into ‘full initialization’ and ‘column initialization’ buttons.
- Improved so that only [footer](/refs/realgrid#rowgroupadornments#footer) can be displayed in [rowGroup.expandedAdornments](/refs/Interface/RowGroup#expandedadornments) even if it is not a mergedRowGroup.
- When a merged cell is clicked, change the clickData.itemIndex of the [onCellClicked](/refs/Class/GridBase#oncellclicked) event to return the itemIndex of the actual clicked row rather than the first row of the merge cell.
- When [displayOptions.editItemMerging](/refs/Interface/DisplayOptions#edititemmerging) is `true` and [editOptions.commitByCell](/refs/Interface/EditOptions#commitbycell) is `true`, paste into a cell and then move to another cell. Fixed issue where commit was not possible
- Improved popupMenu to be displayed at the bottom right of the button when clicking the popup button of a merged cell.
- Improved the phenomenon of column header tooltips being obscured when the grid is scrolled left and right.
- Improved mergedRowGroup to display the partially visible group at the top by scrolling the screen, instead of disappearing when the partially visible group is collapsed.
- Changed so that the sortIcon of the column where [DataColumn.sortable](/refs/Interface/DataColumn#sortable) is false is not displayed when [sortingOptions.handleVisibility](/refs/Interface/SortingOptions#handlevisibility) is `always`.
- Fixed an issue where the value was not applied properly when moving the cell with the keyboard after selecting the value in [multiCheckEditor](/refs/Interface/MultiCheckCellEditor#multi)
- Improved so that it does not enter the editing state when double-clicking the expander of treeView or the expander of mergeRowGroup.
- Improved the phenomenon in which the filter is not applied when clicking on the filter corresponding to `category` when autoFilter is set on a treeView column.
- Fixed an issue where the wrap property was not applied when using searchCell when the number of rows was 1.
- Added [columnByTag](/refs/Class/GridBase#columnbytag) and [columnsByTag](/refs/Class/GridBase#columnsbytag) APIs to retrieve columns using the tag value specified when creating a column.
- Partial improvement of the phenomenon in which the row style in the fixed area is not applied when changing the style of the row using [rowStyleCallback](/refs/Class/GridBase#setrowstylecallback) after opening and fixing and exporting to Excel.
- The header text of the group column is the expander of the group column.Improvement of area invasion phenomenon
- Add `includeHeaderText` to [grid.fitLayoutWidth](/refs/Class/GridBase#fitlayoutwidth) to specify whether to include headerText.
- In the tablet environment, the list of [dropdownEditor](/refs/Interface/DropDownCellEditor#drop) was changed from being displayed in the center to being displayed at the bottom of the cell.
- Added [setTablet](/refs/Class/RealGrid#settablet) API, which allows the grid to be created in tablet mode.
- Changed so that when double clicking on a cell where the list editor is displayed in a mobile environment, only the list is displayed and the virtual keyboard is not created.
- When `autoFilter` of a column using [lookupTree](/guides/cell-components/lookup-tree#main-content) is set to `true`, [filterSelector.lookupDisplay](/refs/filter-automating-options #lookupdisplay) has been improved to work.
- Improved the phenomenon in which DOM-related logs due to ‘id duplication’ are displayed in developer tools when using multiple [checkCellRenderer](/refs/Interface/CheckCellRenderer#check) grids.
- Improved to change the row height at the bottom of the first cell of the row when rowIndicator, checkBar, and stateBar are all hidden

## v2.5.4 

**update date: 2022-07-21**

- Speed improvement when entering large amounts of data into [LocalTreeDataProvider](/refs/Class/LocalTreeDataProvider)
- Improved the phenomenon of unchecking when clicking on a specific area when exclusive of [checkBar](/refs/Interface/CheckBar) is `true`.
   Added useColumnName parameter to make the attribute name of the returned JSON object into a column name.
- When performing [validateCells](/refs/Class/GridBase#validatecells) of a grid with [paging](/guides/paging/paging1), you can also perform validation on the pages visible on the screen. Add ignorePaging` parameter.
- Fixed an issue where the result value was incorrect when calling [getPageCount](/refs/Class/GridView#getpagecount) after changing the filter in paging state.
- Added [gridView.getPageOfDataRow](/refs/Class/GridView#getpageofdatarow) function to get the page number using dataRow.
- Added [treeOptions.treeExpanderIconStyle](/refs/Interface/TreeOptions#treeexpandericonstyle) property to change the image of the `expander` icon of [TreeView](/refs/Class/TreeView).
- If [editOptions.maxLengthToNextCell](/refs/Interface/EditOptions#maxlengthtonextcell) is `true` with maxLength of [numberEditor](/refs/Interface/NumberCellEditor) set, then [editor.maxLengthExceptComma](/refs/number Fixed the issue where -cell-editor#maxlengthexceptcomma) was not applied properly.
- Fixed an error that occurs when `treeView` is exported first during [Multiple Excel output](/guides/excels/multi-export)
- Fixed `global` related error when importing grid from `vue3`.
- Fixed an issue where the size of the grid returns to the size when it was first created when a new row is entered into the grid or the size of the browser is changed.
- Fixed the issue where [getDisplayValues](/refs/Class/GridBase#getdisplayvalues) does not execute due to an error.


## v2.5.3 

**update date: 2022-06-02**

- When [Excel output](/refs/Class/GridBase#exportgrid), set [userCells](/refs/grid-export) to [GridExportOptions](/refs/Interface/GridExportOptions) so that strings can be output to the location specified by the user. -options#usercells) property and [usercellsCallback](/refs/Interface/GridExportOptions#usercellscallback) added. For more information, see [Custom Character Output](/guides/excels/user-cells)
- Added the ability to set ‘Sheet Protection’ when [Excel Output](/refs/Class/GridBase#exportgrid). For more information, see [Excel Sheet Protection](/guides/excels/sheet-protection).
- Improved the phenomenon in which the checkbox in the [ChecBar] (/refs/Interface/CheckBar) area is visible when the `visibility` property of the upper grid element is changed to `hidden`.
- Improved the phenomenon of not being able to select cells when changing the size of the fixed column after setting [fixedOptions.resizable](/refs/Interface/FixedOptions#resizable) to `true`
- [DisplayOptions.fitstyleincludefixed] (/refs/display-options# Add fitstyleincludefixed) property

## v2.5.2 

**update date: 2022-04-28**

- [treeView](/gImproved to apply showTooltip to the first column of uides/tree/tree-view)
- In [numberEditor](/refs/Interface/NumberCellEditor), the behavior is different when English is input and when Korean is input, but the behavior has been improved to be the same.
- When merging by referring to a column whose dataType is `object`, improved to use [objectKey](/refs/Interface/DataColumn#objectkey) or [objectCallback](/refs/Interface/DataColumn#objectcallback) of the object column.
- Improved the phenomenon in which styles are not applied properly when exporting `merged` cells to Excel.
- Improved so that [DisplayOptions.syncGridHeight](/refs/Interface/DisplayOptions#syncgridheight) is applied even in the case of [automatic row height](/guides/row-group/row-height)
- Added [checkLocation](/refs/Interface/CheckBar#checklocation) property to change the location of the checkBox when [checkBar.headText](/refs/Interface/CheckBar#headtext) is displayed. [checkLocation](/refs/Interface/CheckBar#checklocation) property to change the spacing between checkBox and text. [itemGap](/refs/Interface/CheckBar#itemgap) property added
- Fixed the issue of grid scrolling when clicking the checkBox of [checkBar](/refs/Interface/CheckBar)

## v2.5.1 
   
   **update date: 2022-03-29**
- I
mproved to retrieve child nodes including child nodes from [treeProvider.getJsonRow](/refs/Class/LocalTreeDataProvider#getjsonrow)
- [treeProvider.insertChildNode](/refs/Class/LocalTreeDataProvider#insertchildnode) childrenprop-iconfield-nostate) function added
- Added [DisplayOptions.syncGridHeight](/refs/Interface/DisplayOptions#syncgridheight) property to display all searched data without vertical scrolling of the grid.
- Added `extended` status value to [DisplayOptions.selectionMode](/refs/realgrid#selectionmode) to use multiple selection areas. For more information, see [Demo](/guides/grid-components/selecting)
- Added cell merging function for columns that refer to fields whose valueType is [object](/refs/realgrid#valuetype#object)
- Improved the phenomenon where the rowIndicator area and data area are misaligned when zooming in/out in Chrome-based browsers.
- Improved the phenomenon of the window closing intermittently when selecting a filter in the filter selection window.
- Improved the phenomenon in which some areas of documentTitle and subTitle are not merged when exporting from treeView to Excel.
- When [editOptins.crossWhenExitLast](/refs/Interface/EditOptions#crosswhenexitlast) is `true` and the layout has more than 2 lines, change the focus to move to the first cell of the next row when `tab` is entered in the last cell of the row.
- Improved the phenomenon in which some data is not copied when copying data using [copyToClipboard](/refs/Class/GridBase#copytoclipboard)
- Improved the phenomenon of mobile treeGrid not scrolling with touch
- Improved the phenomenon where [disabled] is not cleared when [closeLoading](/refs/Class/GridBase#closeloading) is performed after [showLoading](/refs/Class/GridBase#showloading) several times.
- Improved the phenomenon in which the height of some rows is calculated incorrectly when using automatic row height when there are merged cells.
- Added [editOptions.scrollOnEditing](/refs/Interface/EditOptions#scrollonediting) property that changes the editing state when scrolling the grid while editing.
- Added the ability to export images to Excel. For more information, see [Demo](/guides/excels/excel-export)
- Load data using [setRows](/refs/Class/LocalDataProvider#setrows) or [fillJsonData](/refs/Class/LocalDataProvider#filljsondata) in dataProvider. Add [valuesCallback](/refs/Class/DataProviderBase#valuescallback), which is called when
- If the value of [header.showTooltip](/refs/Interface/GridHeader#showtooltip) is `undefined`, change to use the value of [columnHader.showTooltip](/refs/Interface/ColumnHeader#showtooltip)

## v2.5.0 

**update date: 2022-01-27**

- Changed the method of calculating the width when the direction of the group layout is `vertical` and the child layout has only one column.
- When the numberFormat of the number column is changed to `null`, the numberFormat of [formatOptions](/refs/Class/GridBase#formatoptions) is not applied and the displayCallback of the column is executed.
- Fixed an issue where the value was not set in the footer of [seriesColumn](/refs/Interface/SeriesColumn#series).
- Added the ability to collapse or expand [groupLayout](/refs/Interface/CellLayoutGroupItem). For more information, see [Collapse group column](/guides/column/layout-expand).
- Added [header.rows](/refs/Interface/CellLayoutHeader#rows) property to vertically merge group headers when there are multiple levels of groupLayout. Can only be used if it is a group header
- Changed so that rowState information can also be retrieved when retrieving row values from dataProvider.getJsonRow and dataProvider.getJsonRows.
- Added `styleName` attribute so that style can be given to [documentTitle](/refs/Interface/DocumentTitle) when exporting to Excel.
- When moving a row using dragAndDrop in treeView, change it to only move if it is the same parent.
   [onRowsSiblingMoved](/refs/Class/LocalTreeDataProvider#onrowssiblingmoved), [onRowsSiblingMoving](/refs/Class/LocalTreeDataProvider#onrowssiblingmoving)'s `rows` parameter was changed from being output as an object array to being output as a `rowId` array.
- Fixed an error that occurred when making `heaerSummaries` visible when no columns were created.
- Fixed an error that occurred when using setValue within the dataProvider.onRowInserted event.
- Fixed an issue where the groupFooter value of a column designated as a group was not output when exporting a row-grouped grid to Excel.
- Improved groupFooter.valueCallback from returning only number type to returning other types as well.
- Set [editOptions.commitByCell](/refs/Interface/EditOptions#commitbycell) and [editOptions.commitWhenLeave](/refs/Interface/EditOptions#commitwhenleave) to true and then click on an empty area of the grid to commit.
- Improved the phenomenon in which some properties are not applied when changing column properties using [setColumn](/refs/Class/GridBase#setcolumn)
- When there is an edit button in a merged cell and [editButtonVisibility](/refs/Interface/ValueColumn#editbuttonvisibility) is set to `always`, it is displayed in the center of the cell and moves to the corresponding cell when the mouse is hovered or focused.
- Improved the phenomenon where check is displayed in checkBar even if [editOptions.checkable](/refs/Interface/EditOptions#checkable) is `false`.
- Fixed an error that occurred when pasting multiple rows into a filtered or sorted column.
- &lt;input&gt; created using [header.template](/refs/Interface/ColumnObject#template) Improved the phenomenon of element not being focused
   In the case of &lt;input&gt;,&lt;select&gt;&lt;button&gt;, the default header operation, sorting, is not performed when clicked.
- Fixed error where [dataProvider.exportToCsv](/refs/Class/DataProviderBase#exporttocsv) was not executed.
- Fixed an error that occurs when lookupDisplay is true for a column whose dataType is `boolean`.
- Improved the phenomenon of not being checked when linking checkBar and text field
- Improved the phenomenon where the [editOptions.useArrowKeys](/refs/Interface/EditOptions#usearrowkeys) property is not applied even if changed to `false`.
- Improved the phenomenon in which the height of rowGroup.header and rowGroup.footer becomes smaller when exporting a grid with automatic row height adjustment set to Excel.
- Improved to search by label value when [lookupDisplay](/refs/Interface/DataColumn#lookupdisplay) is set in the filter. See [Data Filtering](/guides/column/column-filtering)
- Improved the scrolling phenomenon when clicking on areas other than the data area such as stateBar, footer, etc.
- Fixed an error that occurred when exporting to Excel when all subcolumns of a group column were visible:false.
- Fixed an issue where values were not displayed in some groupFooters when row grouping and column grouping existed at the same time and fixedColumn was set.
- Improved the phenomenon where `undefined` is displayed when getting the value using grid.getValue within the [onEditRowPasted](/refs/Class/GridBase#oneditrowpasted) event if it is not the column being pasted.
- When the list of [dropdownEditor](/refs/Interface/DropDownCellEditor#drop) is expanded and you select a value using the keyboard and then press enter, change it so that it does not move to the next cell.
- Improved the phenomenon in which individual heights are not set for the header of a fixed area when [header.heights](/refs/Interface/GridHeader#heights) is specified and fixedColumn is set.
- Added [displayOptions.wheelDeltaY](/refs/Interface/DisplayOptions#wheeldeltay) property to reduce scrolling speed when scrolling using devices such as a trackpad or magic mouse.
- Improved the phenomenon where the validation icon does not disappear when editOptions.commitByCell is `true`.
- Added the ability to move to the previous cell when pressing shift+enter.
- Added function to update all merged rows when editing cells merged by mergedGroup or columnMerge.
   Available when [editOptions.commitByCell](/refs/Interface/EditOptions#commitbycell) is `true`.
   For more information, see [Batch edit merge cells](/guides/editing/edit-merge).
- Improved the phenomenon of not committing even if [editOptions.commitWhenLeave](/refs/Interface/EditOptions#commitwhenleave) is `true` when there are two grids on the screen and you click on another grid after editing the grid.
- Changes related to web accessibility
   Remove shadowDom (hidden table accessible only by screen readers).
   Add ariaLabelCallback to renderer
   Changed so that screen readers can refer to it when selecting values with the keyboard in listEditor and dateEditor.
   Changed the default action of the link or button to be executed when enterKey or spaceKey is entered in linkRenderer or buttonRenderer.
   Editing is restricted when a key is entered while the focus is on the cell. Editing is possible after pressing the 'F2' key or double-clicking. 
   
   ## v2.4.2 

**update date: 2021-11-11**

- Fixed an issue where the onCellClicked event occurs when multiple cells in a row are selected using drag.
- Improved the phenomenon of changing the column width to [minCellWidth](/refs/Interface/DisplayOptions#mincellwidth) or less when changing the column width using the mouse.
- Fixed an issue where the [onCellItemClicked](/refs/Class/GridBase#oncellitemclicked) event does not occur and the default action of the `a` tag is executed when the link renderer is used on a cell that is only partially displayed on the screen.
- Fixed an error that occurred when calling the gridView.[setAllCheck](/refs/Class/GridBase#setallcheck) method when gridView.checkBar.exclusive is true.
- Improved the phenomenon in which some cells of groupFooter are not initialized in row merge groups.
- Fixed an error that occurs when there is no border in the documentTitle or a border is not specified in the grid when exporting to Excel.
- If a string is added in the form of a prefix to the selector in realgrid-style.css, add the [stylePrefix](/refs/Interface/GridExportOptions#styleprefix) property so that it can be applied when exporting to Excel.
- Improved the phenomenon that filteringOptions.dateCategoryCallback occurs even in fields of type `number`.
- Improved treeView so that data from nodes without icons are displayed according to the level.
- Fixed the issue of the grid being broken when editing a cell when a row has multiple lines and is set to auto-height

## v2.4.0 

**update date: 2021-09-01**

- Fixed an issue where the filteringOptions.commitBeforeFiltering property was not applied. If it is `true`, if you click the filter-icon while editing or the editor is activated, filtering will be executed after commit.
- Added gridView.onDataLoadComplated event that is issued after data is loaded. For more information, see [Rendering completion event](/guides/events/data-load-complete).
- Fixed the issue where the displayOptions.defaultColumnWidth property was not applied.
- Added column.header.edgeMark property to display edgeMark in column header.
- Fixed an error that occurred when using setValue inside the TreeDataProvider.onRowAdded event.
- Improvements to control editability of rows in setRowStyleCallback. For more information, see [Row Dynamic Style](/guides/grid-style/row-dynamic-style).
- Added [copyTextCallback](/refs/Interface/CopyOptions#copytextcallback) callback to [CopyOptioins](/refs/Interface/CopyOptions). Specifies the text to be copied for each cell. If no callback is specified or `undefined` or `null` is returned, the default action is performed.
- Fixed an issue where the height of the footer did not change intermittently when there was a column group.
- Fixed an issue where maxIntegerLength does not change when editing a column with editor.maxIntegerLength specified and then editing another column.
- Fixed an issue where multiple lines were not pasted properly in the fireFox browser.
- Fixed the issue where maxHeight is not applied when DisplayOptions.rowHeight is -1.
- Fixed an issue where an error occurred depending on the settings when using the orderBy function in a tree.
- Added a function to limit input characters in the text editor. For more information, see [Input Limit Editor](/guides/editor/line-cell-editor).
- Added functions that can be used when exporting to Excel.
Improved the output of grid outlines that were not displayed.
Added [Excel Style](/guides/excels/export-style) property that allows columns to be output but hidden.
   Added the ability to change the style of some areas. For more information, see [Excel Style](/refs/Interface/GridExportOptions#hiddencolumns).
Added [xOffset](/refs/Interface/GridExportOptions#xoffset) and [yOffset](/refs/Interface/GridExportOptions#yoffset) to add a margin to the top left when outputting grid.
Added [applyFixed](/refs/Interface/GridExportOptions#applyfixed) property to apply fixed rows or columns to grid to Excel.
Improved the phenomenon in which some rows are output as unmerged when exporting to Excel in row merge grouping mode.
- Fixed an issue where rowGrouping could not be performed when column.movable was false.
- Fixed an error that occurred when mergedRowGrouping a subcolumn of a group column. Changed the subcolumns of the group column to be excluded when mergedRowGroup.
- Improved the phenomenon of scroll events occurring repeatedly when synchronizing multiple grid scrolls
- Fixed an issue where the editor was not displayed when the column width was larger than the grid in the IE browser.
- Improved the phenomenon where the arguments of [onEditRowPasted](/refs/Class/GridBase#oneditrowpasted) that occur when pasting differ depending on the situation. Improved so that it is delivered in the same format.
- Fixed error that occurred in IE browser when setting column.header.template.
- Fixed an issue where the expander of rowGroup was not displayed intermittently or rows were added when folding and expanding.
- Fixed an issue where tooltips were not displayed for the row being edited.
- Added [expanderVisibleCallback](/refs/Interface/RowGroup#expandervisiblecallback) to display or not display the expander of rowGroupd.
- When using gridView.isFiltering(), if no column is specified, changed to return `true` if there is a column being filtered.
- If editOptions.updatable is `false`, rows with a rowState of "created" are also changed from being uneditable to editable after commit.
- Fixed an issue where the keyboard is displayed when gridView.setFocus() is used on mobile
- Changed so that the default format is not applied when column.numberFormat or column.datetimeFormat is set to `null`
- Fixed an issue where the tooltip was not displayed if the row was not committed after cell editing was completed.
- Fixed an issue where [dateEditor.defaultShowDate](/refs/Interface/DateCellEditor#defaultshowdate) did not work properly.
- Added [dateEditor.defaultDate](/refs/Interface/DateCellEditor#defaultdate) property to specify the selected date when dateEditor pops up.
- Added [searchIgnoreCase](/refs/Interface/FilterSelectorOptions#searchignorecase) property to make searches case-insensitive in the filter search box

## v2.3.2 

**update date: 2021-05-24**

- Fixed the issue where data was not visible when hideDeletedRows and filtering were applied simultaneously in treeView.
- When editOptions.updatable is false, editing is not possible when a row is committed, but has been changed to allow editing even after commit.
- The default value of column.editable has been changed to `undefined`.
- editOptions.columnEditableFirst property has been added. If columnEditableFirst is true and column.editable is specified, the column.editable property is applied before editOptions.editable.
- Fixed an error that occurred when inserting while treeView was filtered.
- The checkBar.fieldName property has been added to link checkBar and dataField. For more information, see [Linking checkbars and data fields](/guides/grid-components/check-bar-link-field).
- The checkBar.mergeRule property has been added to merge checkBar. For more information, see [checkbar](/guides/grid-components/check-bar).
- The column.placeHolder property has been added to display content to be entered when there is no value in the cell. You can specify the style using column.placeHolderStyleName. For more information, see [Place Holder](/guides/cell-components/place-holder).
- The editor.showStepButton property has been added to display a button in the numberEditor. For more information, see [Number Edit Button](/guides/editor/number-editor).
- Fixed an issue where the exclusive option was not applied when checking the checkBox of the checkBar with ctrl+shift+space (windows) or command+shift+space (mac).
- Fixed an issue where the progress bar was displayed abnormally when showProgress:true was applied when exporting a grid with page options applied to Excel.
- The field.objectKey property and field.objectCallback property have been added to display data whose dataType is `object` on the screen.
- If objectKey or objectCallback is specified in a column, the field property is ignored.
- If an objectKey is specified in a field or column, the value of the corresponding `name` can be edited. For more information, see [Object Type Field](/guides/data-manager/object-type).
- With grid.checkItems or after selecting multiple rowsFixed the issue where incorrect values were passed to items in gridView.onItemsChecked when changing check with ctrl+shift+space.
- Fixed an issue where the check was changed intermittently even if the checkRenderer column was readOnly.
- Fixed an issue where the editButton was displayed even when the editable value of the cell was false.
- The displayOptions.watchDisplayChange property has been added to automatically update the screen when the display of the grid's parent element changes.

## v2.3.0 

**update date: 2021-03-31**

- Fixed an issue where some information was missing when savingColumnLayout.
- Fixed an issue where editing was not possible when columns using checkCellRenderer were merged.
- Added displayOptions.useFocusClass property, which adds a class to focused cells and rows. For more information, see the [Focus Style](/guides/grid-style/focus-class) demo.
- Improved footer format and style to be applied when exporting to Excel
- Fixed an issue where the editor was not applied to the grid when setting the editor in column.styleCallback.
- Improved the phenomenon of checkBar not being exported when exporting to Excel
- Fixed an error that occurred when executing undo after executing setRowCount when the data provider is in undo mode.
- Improved the phenomenon in which the checkBox displayed in the checkBar head does not disappear when checkBar.showAll is set to false.
- Improved use of html tag in groupLayout's header. For more information, refer to the [Layout Header Renderer](/guides/header-and-footer/layout-header-html-renderer) demo.
- Fixed an error that occurred when clicking the filter icon after setting autoFilter on a column whose dataType is number.
- Added column.edgeMark property to add highlight to cell.
- Improved the phenomenon in which the value is not visible when `'` is in the data when using autoFilter.
- Fixed error where groupBy does not work when executed before setRows
- Fixed issue where pasteOptions.selectionBase property was not applied
- Fixed the issue of validation icon appearing in groupFooter
- Fixed an issue where collapsed rows in rowGrouping or treegrid are excluded from overall validation.
- When the layout is changed in rowGrouping state, the rowGroup is changed to be released.
- Fixed an issue where left-aligned columns in a grid are displayed in the center when exported to Excel
- Fixed an issue where paste does not work when editable of a column with checkRenderer is false and pasteOptions.checkReadOnly is true.
- Improved to change tooltip of groupLayout header [Group header tooltip](/guides/cell-components/group-header-tooltip) See demo
- Improved the phenomenon of showing the previous value when pasting into an editor with editMask.
- Improved to allow commit even if a validation error occurs if the errorLevel is lower than editOptions.commitLevel [Validation passed](/guides/validation/commit-level-validation) See demo
- Fixed an error that occurs when pasteOptions.checkReadOnly and append is performed when pasting.
- Fixed an error where the position of the filter selector was intermittently created in the wrong location.
- Fixed an issue where merges were unraveled in cells outside the visible area on the screen when exporting merged columns to Excel.
- Fixed an issue where only part of the data was visible because the cell width in the fixed area was calculated incorrectly.
- Improved so that fieldIndex and fieldName can be used when using setCurrent.
- Fixed an issue where only some data was displayed intermittently when the column to which mergeRule was applied was multi-line
- Added footerUserSpans property that allows you to apply rowspan and colspan to the footer at the same time. For more information, see the [Footer Merge](/guides/header-and-footer/footer-user-spans) demo.
- Add allowEmpty property to delete data when textReadOnly is true in DropDownCellEditor and DataCellEditor.
- Added displayOptions.horzPageScroll property to scroll page by page when moving columns with the keyboard.
- Modified so that onCellClicked event does not occur when Column Resize/Row Resize.
- Fixed an issue where check/height does not move together when changing the row position using dataProvider.moveRow
- Fixed an issue where the editable was not applied intermittently when changing it using column.styleCallback

## v2.2.0 

**update date: 2020-12-10**

- Fixed an error where filtering was not performed when there was a callback in the Column Filter.
- Added filteringOptions.lookupDisplay property.
- Added filteringOptions.width and maxWidth properties. When set to -1, the width is displayed as calculated, and when set to 0, it is displayed as the width specified in CSS.
- Fixed errors related to showColumns, hideColumns, and allColumns when exporting to Excel.
- Fixed an error related to the getOutputRow function in LocalTreeDataProvider.
- Changed the location of the callback called when Excel Export is completed so that it is called after file compression. (Supports JSZip 3.0 or higher)
- Fixed an issue where some background colors appear black when an exported Excel file is opened in Number on a Mac.
- Fixed an error that occurred when using restoreUpdatedRows api in LocalTreeDataProvider.
- heights property that specifies the height of each row of the headerAdd this.
- displayOptions.dataHeights property added. Not applied if rowHeight is -1. If the dataHeights property is specified, rowResize is not possible.
- Changed so that when creating a grid, if there is already a grid in containerDiv, it is not created.
- Improved to hide sub-items (columns) of Group Layout.
- When the visibility of all sub-items of the Group Layout is false, the visibility of the Group Layout is also modified to become false.
- `rg-focused-cell` className added to change the style of the focused cell.
- Improved error where `0` is not entered when the requried of the column connected to the number field is true.
- Improved so that columnFilter created using autoFilter can also be selected/deselected using the API.
- Fixed an issue where false is entered if there is no value when entering data using xml.
- fitLayoutWidth API added.
- Fixed an issue that did not work properly when creating a field after creating a grid column.
- Added `getGridInstance` API to retrieve grid instance using Div id or Div element.
- Improved search so that you can search by just entering Korean initial consonants in the search box of Columnfilter.
- Improved display of image in CheckBar header.
- Fixed an error where the merge was not applied to the first row when exporting to Excel while cells were merged.
- Fixed an issue where the expander is not displayed even if hasChildren is set to true when adding a row to TreeDataProvider.
- Modified so that a space is entered even when domainOnly of ListEditor is true.
- Fixed an issue where data in some cells was not updated when displayOptions.fitStyle was set to evenFill.
- Fixed an error that occurred when showProgress was set to true during Excel Multi Export.
- If the name of the column is omitted, it is created by replacing it with fieldName.
- Fixed an issue where the screen does not scroll intermittently when the focus is moved using the keyboard when there is a ColumnGroup 

## v2.1.0 

**update date: 2020-09-18**

- Autofilter performance improvement and error correction.
- Added Excel multi-export function.
- Added Excel DocumentTitle function. In RealGridJS, the styles property was VisualStyles, but it is implemented in CSS, so the usage method is different.
- Added checkBar.useImages property and improved it so that it can be displayed as an image rather than a checkBox.
- Improved so that focus can be moved using the keyboard when connected to a mobile device.
- Improved the onCellItemClicked event to occur when an image is clicked in iconCellRenderer/imageCellRenderer.
- If checkBar's checkable is false, add `rg-checkbar-disabled` class to checkBar's cell.
- Some improvements have been made to the phenomenon of the screen shaking when vertical/horizontal scrolling occurs simultaneously when scrolling using the TouchPad in Mac OS.
- Fixed an issue where the expand Handle is not displayed when expandedAdornments is `summary` in rowGrouping state.
- Fixed an issue where the edit window continues to open even when hideEditor is executed when editOptions.editWhenFocused is true.
- Fixed an issue where link (a tag) in templateRenderer does not work.
- Fixed an error where some cells using templateRenderer were not displayed in rowGroup state.
- Fixed a problem where multiple lines were pasted into a cell in the middle of a columnGroup instead of the first cell.
- When copying a rowSpanned cell after selecting a block, change it to be copied with line breaks included.
- Fixed an error where the unselected area was deleted when deleting data with the `alt+shift+delete` key after selecting a block in a grid with a ColumnGroup.
- Fixed an error where the grid did not respond to the mouse/keyboard when the scroll bar of the grid in the IFrame was dragged outside the area in the IE browser.
- Fixed an issue where the position of the displayed message was displayed incorrectly when moving a row using Drag & Drop.
- Fixed an error that was not applied when changing some properties of the renderer using styleCallback. Dynamically changed properties must be initialized.
- Fixed an issue where some cells could not be accessed using the keyboard when there was a ColumnGroup.
- Fixed an error where validation was not applied when [EditOptions.commitByCell](/refs/Interface/EditOptions#commitbycell) is true.
- Fixed error showing NaN-NaN-NaN when there is an invalid value in the date column.
- Fixed an error where the year navigation button was not displayed when [DateEditor.yearNavigation](/refs/Interface/DateCellEditor#yearnavigation) was true.
- Fixed an error where the row being edited could not be checked using the GridBase.checkRow() function.
- Fixed an error where incorrect values were retrieved when retrieving parent nodes using getAncestors in TreeView.
- Fixed an error where the column width was displayed differently from the grid when exporting to Excel.
- Fixed an issue where the position of the filter selection box was displayed differently when used in the IE browser or IFrame.

## v2.0.5 

**update date: 2020-08-07**

- Added [checkBar.fieldName](/refs/Interface/CheckBar#fieldName) property to specify the field of checkBar.
- Added [column.buttonVisibleCallback](/refs/Interface/GridColumn#buttonVisibleCallback) property.
- Improvements were made to limit the size and enable scrolling when there are many popupMenu items.
- Modified the filter selector to move by 3 rows when scrolling the wheel.
- Fixed an issue where you could not move to the next cell when entering tab in a cell with a span.
- Fixed an issue where the filter icon did not disappear even if column.autoFilter was changed to false.
- Fixed the issue where copying does not occur when copyOptions.copyDisplayText is set to true.
- Fixed an error when executing dataProvider.setRowCount and executing getDistinctValues without entering a value.
- Fixed an issue where the selected filter was not applied after deselecting all during autoFiltering.
- Fixed an issue where the sub-layout of the group could not be retrieved when running grid.layoutByName.
- Fixed an issue where the expander was not displayed when there was a fixedColumn in the treeview.
- Fixed an issue where the expander is displayed in the group column when there is a group column in treeview.
- Fixed an issue where checkBar.exclusive = false was not applied when creating a grid.
- Fixed an error that occurred when showProgress was set to true during exportGrid.
- Fixed an error where the first column was not displayed when the indicator was set to "hidden" during exportGrid.
- Fixed error that occurred when exportGrid in a specific layout
- Fixed error that occurred when exportGrid with row or column frozen 

## v2.0.3 

**update date: 2020-07-03**

- Added [treeOptions.iconVisible](/refs/Interface/TreeOptions#iconvisible) property.
- [fixedOptions.rightCount](/refs/Interface/FixedOptions#rightcount) Modified to execute only when the right fixed column is smaller than the number of columns.
- When rowGroup.mergeMode is true, subcolumns of GroupColumn are modified so that they are not rowGrouped.
- Changed the image of the filtering icon in the Column Header.
- Change the string in rowState to be equal to 1.0 “n” => “none”, “c” => “created”, “u” => “updated”, “d” => “deleted”, “x” = > “createAndDeleted”
- Change filteringOptions.addParentNodeOnFiltering property to filteringOptions.includeParentItem
- Change the background color of opened and fixed columns
- Add grid to the argument of layout.spanCallback.
- Improved selection from filtered values when the auto filter becomes a filter for another column.
- Fixed bug related to span Fixed the issue where the shapes of header, summary, footer, and groupFooter did not match the data when configuring the screen using cellSpan of layout.
- Fix error that occurs when adding rows in treeView
- Fixed focus movement error when pressing the down key in a spanned cell
- Fixed an issue where selection was not displayed properly when there was a dataSpan.
- Fixed an issue where an error occurred intermittently when shrinking a node in treeView.
- Fixed error that occurred when treeView.dispose() was used.
- Fixed the issue of the button disappearing intermittently when there is a button in the merged cell
- Fixed an issue where the index of the cell where the focus is located and the cell retrieved with getCurrent are different when the border of the merged cell is selected.
- Enter displayOptions.rowHeight = -1 to enable automatic height calculation and correct the intermittent stopping phenomenon when scrolling.
- Fixed an issue where focus did not move when inputting the keyboard after scrolling using the mouse
- Fixed an issue where the holidays property specified in column.editor was not applied.
- Add styleCallback to rowIndicator, stateBar, checkBar
- Fixed an issue where the editor was not activated when double-clicking again after clicking on a row spanning the footer area.
- Fixed an issue where input using the keyboard in dateEditor could not be saved.
- Fixed the problem that the file does not open when exporting to Excel in some versions of IE
- Fixed an error that occurred when exporting a file to Excel in an open and locked state.
- Fixed the problem of displaying encoding characters in Excel when the escape string (`&` `>` `<`) is included in the string.
- Fixed other errors such as row height when exporting to Excel

## v2.0.2 

**update date: 2020-06-05**

- Added RealPivot compatible feature
-bugfix

## v2.0.0 

**update date: 2020-06-01**

- `FormView` function added for mobile views such as smartphones