Skip to content

Latest commit

 

History

History
1244 lines (866 loc) · 81.8 KB

CHANGELOG.md

File metadata and controls

1244 lines (866 loc) · 81.8 KB

1.0.0 (2018-02-02)

Code Refactoring

  • react-core: rename PluginContainer to Plugin (#712) (30734d8)
  • react-grid: rename expanded details getter (#713) (771eb3f)

BREAKING CHANGES

  • react-core: The PluginContainer component has been renamed to Plugin.
  • react-grid: The expandedRowIds getter of the RowDetailState plugin has been renamed to expandedDetailRowIds.

1.0.0-rc.2 (2018-01-26)

Bug Fixes

  • react-core: fix crash when using with webpack-dev-server and Hot Module Reloading (#694) (bdc944b)
  • react-grid-bootstrap3: align header and data cell texts (#687) (b34f142)
  • react-grid-bootstrap3: correct grouping icon alignment (#686) (fb30cc3)
  • react-grid-material-ui: use long paths for modules (#684) (b32f79c)

1.0.0-rc.1 (2018-01-18)

Bug Fixes

  • react-core: clear text selection when dragging (#669) (b7c2eac)
  • react-grid: display empty message when all data columns are hidden (#670) (44d7622)
  • react-grid: set higher precedence to props in state plugins (#663) (bb5ef97), closes #662
  • react-grid: update render component in correct lifecycle hook (#655) (c56ff88), closes #649
  • react-grid-bootstrap3: repair keyboard navigation in column chooser (#666) (7f2b461)
  • react-grid-material-ui: disable ripple on active page button (#682) (c75078d)
  • react-grid-material-ui: import 'VisibilityOff' icon from separate file (#640) (7b71ebc)

Code Refactoring

  • react-grid: change columnWidth type from object to array (#613) (6f4d19f)
  • react-grid: change the 'expandedGroups' Getter data type (#661) (f078d3a)
  • react-grid: change the 'selection' Getter data type (#656) (262d169)
  • react-grid: rename the *hiddenColumns getters and props (#651) (068604d)
  • react-grid: rename the changedRows Getter and dependent properties (#657) (26735c7)
  • react-grid: rename the deletedRows Getter and dependent properties (#652) (ae78d23)
  • react-grid: rename the expandedRows Getter and dependent properties (#653) (db56cad)
  • react-grid: rename the groupByColumn action to changeColumnGrouping (#660) (a3974bd)
  • react-grid: rename the setColumnFilter action to changeColumnFilter (#659) (eec6c41)
  • react-grid: rename the setColumnSorting action to changeColumnSorting (#658) (e4f9c12)
  • react-grid: rename the setDetailRowExpanded action (#648) (1285a14)
  • react-grid: standardize draft change actions in GroupingState (#668) (43593eb)
  • react-grid: standardize draft change actions in TableColumnResizing (#665) (3fec37a)
  • react-grid: use the 'state' name as a parameter in toggle actions (#645) (6c3f15d)
  • react-grid: rename the EditingState plugin properties (#650) (4d7fe82)

BREAKING CHANGES

  • react-grid: The draftGrouping getter does not contain information about draft mode anymore. The draftGroupingChange, and cancelGroupingChange actions have been renamed to draftColumnGrouping, and cancelColumnGroupingDraft.

  • react-grid: The type of the TableColumnResizing plugin's columnWidths and defaultColumnWidths properties has been changed from object to array to improve API consistency.

    Before:

    <Grid>
      <TableColumnResizing columnWidths={{ a: 120 }} />
    </Grid>

    After:

    <Grid>
      <TableColumnResizing columnWidths={[{ columnName: a, width: 120 }]} />
    </Grid>
  • react-grid: The changeDraftTableColumnWidth action has been renamed to draftTableColumnWidth. The functionality that resets draft column width has been moved from from the draftTableColumnWidth action into the separate cancelTableColumnWidthDraft action.

    The onDraftWidthChange event of the TableHeaderRow's cellComponent has been renamed to onWidthDraft. The functionality that cancels draft width changes has been extracted to the onWidthDraftCancel event.

  • react-grid: The the GroupingState plugin's groupByColumn action has been renamed to changeColumnGrouping.

  • react-grid: We changed the selection getter's data type from Set to Array to improve the API consistency.

  • react-grid: We renamed the following TableColumnVisibility plugin's properties to improve the API consistency:

    • hiddenColumns => hiddenColumnNames
    • defaultHiddenColumns => defaultHiddenColumnNames
    • onHiddenColumnsChange => onHiddenColumnNamesChange

    The hiddenColumns getter has been renamed to hiddenColumnNames.

  • react-grid: The following RowDetailState plugin's properties have been renamed to improve the API consistency:

    • expandedRows => expandedRowIds
    • defaultExpandedRows => defaultExpandedRowIds
    • onExpandedRowsChange => onExpandedRowIdsChange

    The expandedRows getter has been renamed to expandedRowIds.

  • react-grid: The following EditingState plugin's properties have been renamed to improve the API consistency:

    • changedRows => rowChanges
    • defaultChangedRows => defaultRowChanges
    • onChangedRowsChange => onRowChangesChange

    The changedRows getter has been renamed to rowChanges.

  • react-grid: The FilteringState plugin's setColumnFilter action has been renamed to changeColumnFilter.

  • react-grid: The RowDetailState plugin's setDetailRowExpanded action has been renamed to toggleDetailRowExpanded.

  • react-grid: The toggleSelection action's selected parameter has been renamed to state.

  • react-grid: We changed the expandedGroups getter's data type from Set to Array to improve the API consistency.

  • react-grid: The following EditingState plugin's properties have been renamed to improve the API consistency:

    • deletedRows => deletedRowIds
    • defaultDeletedRows => defaultDeletedRowIds
    • onDeletedRowsChange => onDeletedRowIdsChange
    • editingRows => editingRowIds
    • defaultEditingRows => defaultEditingRowIds
    • onEditingRowsChange => onEditingRowIdsChange

    The deletedRows getter has been renamed to deletedRowIds. The editingRows getter has been renamed to editingRowIds.

  • react-grid: The SortingState plugin's setColumnSorting action has been renamed to changeColumnSorting.

1.0.0-beta.3 (2017-12-28)

Bug Fixes

  • grid-core: fix blinks when reordering group items (#573) (739c664)
  • react-grid: correct state helper & editing state (#623) (3cd07bd)
  • react-grid: fix blinks when reordering header-cell items (#590) (e94b824)
  • react-grid: fix incorrect applying of several actions in a batch (#560) (7c3ff9b), closes #549
  • react-grid: remove outline from header cell when mouse click (#576) (807597b)
  • react-grid-material-ui: add border beetwin rows and pager panel (#622) (d7cb9c7)
  • react-grid-material-ui: use theme constant in the table header background (#602) (797e134)

Code Refactoring

  • react-grid: add the toolbar (#585) (70fdc25)
  • react-grid: cancel column sorting by passing null to the direction argument (#620) (3abe8f9)
  • react-grid: extract table column extension (#586) (7f57be2)
  • react-grid: get rid of explicit column resizing enabling (#597) (f215103)
  • react-grid: get rid of explicit dragging enabling (#583) (60797c2)
  • react-grid: give column properties greater precedence (#617) (4a2924c)
  • react-grid: remove totalCount property from PagingState to CustomPaging (#555) (95fe97d)
  • react-grid: rename data processing plugins (#612) (468dde4)
  • react-grid: rename DragDropContext to DragDropProvider (#611) (26d303e)
  • react-grid: rename properties from allow* to *Enabled (#618) (6c291e8)
  • react-grid: rename some group and paging properties (#581) (6300249)
  • react-grid: specify typed columns directly in DataTypeProvider (#591) (6ed28e4)
  • react-grid: swap args in the createRowChange function (#619) (1178ee1)
  • react-grid: switch to column extensions in EditingState (#604) (d56b3f0)
  • react-grid: switch to column extensions in LocalFiltering (#594) (955da48)
  • react-grid: switch to column extensions in LocalGrouping (#601) (9efc007)
  • react-grid: switch to column extensions in LocalSorting (#603) (08c96da)
  • react-grid: switch to column extensions in TableGroupRow (#609) (373d4d8)

Features

  • react-grid: add the ColumnChooser plugin (#607) (16eb588)

BREAKING CHANGES

  • react-grid: We have moved the PagingState plugin's totalCount property to the CustomPaging plugin to improve API consistency. Now, you can add the CustomPaging plugin to a project and specify its totalCount property to implement remote paging.

    Before:

    <Grid>
      <...>
      <PagingState totalCount={10} />
    </Grid>

    After:

    <Grid>
      <...>
      <PagingState />
      <CustomPaging totalCount={10} />
    </Grid>
  • react-grid: To simplify working and make consistent API, some plugins properties have been renamed.

    • The TableHeaderRow plugin's allowGroupingByClick property has been renamed to showGroupingControls.
    • The GroupingPanel plugin's allowUngroupingByClick property has been renamed to showGroupingControls.
    • The PagingPanel plugin's allowedPageSizes property has been renamed to pageSizes .
  • react-grid: A column's getCellValue function has gotten higher priority than that defined in the Grid component.

  • react-grid: The createRowChange function arguments order has been changed to (row: any, value: any, columnName: string) to improve the API consistency. Now, the EditingState plugin's createRowChange function has the same signature as the column extension's one.

  • react-grid: We have renamed the following plugins that process data to make the Grid API more consistent:

    • LocalFiltering => IntegratedFiltering
    • LocalGrouping => IntegratedGrouping
    • LocalPaging => IntegratedPaging
    • LocalSelection => IntegratedSelection
    • LocalSorting => IntegratedSorting
  • react-grid: We removed the LocalSorting plugin's getColumnIdentity property to improve API consistency. Now, use the column extension's criteria property to specify an individual column's grouping criteria.

    Before:

    const columns = [{ name: 'field' }, { name: 'field2' }];
    const fieldGroupCriteria = /* custom group criteria */;
    const getColumnIdentity = (columnName) => {
      if (name === 'field') return fieldGroupCriteria;
    };
    
    <Grid columns={columns}>
      <LocalGrouping getColumnIdentity={getColumnIdentity} />
    </Grid>

    After:

    const columns= [{ name: 'field' }, { name: 'field2' }];
    const fieldGroupCriteria = /* custom group criteria */;
    const integratedGroupingColumnExtensions = [
      { columnName: 'field', criteria: fieldGroupCriteria },
    ];
    
    <Grid columns={columns}>
      <IntegratedGrouping columnExtensions={integratedGroupingColumnExtensions} />
    </Grid>
  • react-grid: We removed the cancel argument from the SortingState plugin's setColumnSorting action and from the onSort event of the TableHeaderCellProps and GroupPanelItemProps component properties. Now, you can pass null to the direction argument to cancel sorting by column.

  • react-grid: The TableHeaderCellProps interface's allowResizing property has been renamed to resizingEnabled to improve the API consistency.

  • react-grid: We removed the getColumnCompare property from the LocalSorting plugin to improve API consistency. Now, use the columnExtension property to specify individual column sorting options.

    Before:

    const columns = [{ name: 'field' }, { name: 'field2' }];
    const fieldCompare = /* custom sort compare */;
    const getColumnCompare = (columnName) => {
      if (name === 'field') return fieldCompare;
    };
    
    <Grid columns={columns}>
      <LocalSorting getColumnCompare={getColumnCompare} />
    </Grid>

    After:

    const columns= [{ name: 'field' }, { name: 'field2' }];
    const fieldCompare = /* custom sort compare */;
    const integratedSortingColumnExtensions = [
      { columnName: 'field', compare: fieldIdentity },
    ];
    
    <Grid columns={columns}>
      <IntegratedSorting columnExtensions={integratedSortingColumnExtensions} />
    </Grid>
  • react-grid: We have integrated the column chooser into the Grid as a plugin to simplify the API. Now, use the column chooser as follows:

    <Grid>
      {/* ... */}
      <TableColumnVisibility
        /* props */
      />
      <Toolbar />
      <ColumnChooser />
    </Grid>

    For details, see Controlling Column Visibility.

  • react-grid: We extracted the column's showWhenGrouped property that the TableGroupRow plugin handles to a column extension to improve the API readability. The TableGroupRow plugin's showColumnsWhenGrouped property type has been changed to boolean and this property affects all columns. If you need to control specific columns' visibility, use column extensions.

    Before:

    const columns = [{ name: 'field', showWhenGrouped: true }, { name: 'field2' }];
    
    <Grid columns={columns}>
      <TableGroupRow />
    </Grid>

    After:

    const columns= [{ name: 'field' }, { name: 'field2' }];
    const tableGroupColumnExtensions = [
      { columnName: 'field', showWhenGrouped: true },
    ];
    
    <Grid columns={columns}>
      <TableGroupRow columnExtensions={tableGroupColumnExtensions} />
    </Grid>

    Note that column extension properties have higher priority than corresponding plugin properties.

  • react-grid: We renamed the DragDropContext plugin to DragDropProvider to improve API consistency.

  • react-grid: We removed the allowResizing property from the TableHeaderRow plugin to simplify the API. Now, adding the TableColumnResizing plugin enables column resizing.

  • react-grid: In order to improve API readability, we extracted the width and align column properties that the Table and VirtualTable plugins handle into a separate property. Now, the width and align properties in the Grid columns are no longer supported. Use a TableColumnExtension instead:

    Before:

    const columns= [{ name: 'field', width: 100 }, { name: 'field2' }];
    
    <Grid columns={columns}>
      <Table />
    </Grid>

    After:

    const columns= [{ name: 'field1' }, { name: 'field2' }];
    const tableColumnExtensions = [{ columnName: 'field1', width: 100 }];
    
    <Grid columns={columns}>
      <Table columnExtensions={tableColumnExtensions} />
    </Grid>
  • react-grid: In order to simplify API, we changed the way the DataTypeProvider plugin detects columns associated with a type. Now, to associate a custom formatter and editor with a column, pass a column array to the DataTypeProvider's for field:

    Before:

    const columns= [{ name: 'field', dataType: 'boolean' }, { name: 'field2' }];
    
    <Grid columns={columns}>
      <DataTypeProvider type="boolean" />
    </Grid>

    After:

    const columns= [{ name: 'field1' }, { name: 'field2' }];
    const booleanColumns = ['field1'];
    
    <Grid columns={columns}>
      <DataTypeProvider for={booleanColumns} />
    </Grid>
  • react-grid: In order to improve API consistency, we've decided to replace the getColumnPredicate function in the LocalFiltering plugin with the LocalFilteringColumnExtension.

    Before:

    const columns = [{ name: 'field' }, { name: 'field2' }];
    const fieldPredicate = /* custom filtering predicate */;
    const getColumnPredicate = (columnName) => {
      if (name === 'field') return fieldPredicate;
    };
    
    <Grid columns={columns}>
      <LocalFiltering getColumnPredicate={getColumnPredicate} />
    </Grid>

    After:

    const columns= [{ name: 'field' }, { name: 'field2' }];
    const fieldPredicate = /* custom filtering predicate */;
    const integratedFilteringColumnExtensions = [
      { columnName: 'field', predicate: fieldPredicate },
    ];
    
    <Grid columns={columns}>
      <IntegratedFiltering columnExtensions={integratedFilteringColumnExtensions} />
    </Grid>
  • react-grid: In order to simplify API, we've decided to remove allowDragging properties in TableHeaderRow and GroupingPanel plugins. Now, to enable dragging it is enough to add the DragDropContext plugin.

  • react-grid:   To provide a more convenient and flexible way to render elements that are placed within a Grid header we add the Toolbar plugin. For this reason, the GroupingPanel plugin has the Toolbar dependency:  

    import {
      // ...
      Toolbar,
      GroupingPanel
    } from '@devexpress/dx-react-grid-material-ui';
    
    <Grid>
      {/* ... */}
      <Toolbar />
      <GroupingPanel />
    </Grid>

      To simplify Grid's markup we removed header placeholder and footer placeholder components. If you're customizing Grid appearance using the headerPlaceholderComponent and footerPlaceholderComponent properties, your code should be updated as follows:   Before:

    <Grid
      headerPlaceholderTemplate={() => (<div />)}
      footerPlaceholderTemplate={() => (<div />)}
    >
    {/* ... */}
    </Grid>

    After:

    import { Template, TemplatePlaceholder } from '@devexpress/dx-react-core';
    
    <Grid>
      <Template name="header">
        <TemplatePlaceholder />
        {/* Custom markup */}
      </Template>
      <Template name="footer">
        <TemplatePlaceholder />
        {/* Custom markup */}
      </Template>
      {/* ... */}
    </Grid>
  • react-grid: We extracted the column's createRowChange property that the EditingState plugin handles to a column extension to improve API readability.

    Before:

    const columns = [{ name: 'field', createRowChange: (row, value) => { /* logic */ } }, { name: 'field2' }];
    
    <Grid columns={columns}>
      <EditingState />
    </Grid>

    After:

    const columns= [{ name: 'field' }, { name: 'field2' }];
    const editingColumnExtensions = [
      { columnName: 'field', createRowChange: (row, value) => { /* logic */ } },
    ];
    
    <Grid columns={columns}>
      <EditingState columnExtensions={editingColumnExtensions} />
    </Grid>

    Note that column extension properties have higher priority than corresponding plugin properties.

1.0.0-beta.2 (2017-12-14)

Bug Fixes

  • grid-core: allow to place TableColumnVisibility after another table plugins (#557) (6788ba6)
  • grid-core: fix problem when grouped columns are hidden (#562) (8fbc2c9)
  • react-core: fix drag by mouse on a touch-enabled devices (#541) (fd9b7f9), closes #535
  • react-core: remove redundant markup elements (#544) (f5e24a6)
  • react-demos: fix the Featured Remote Data demo (#548) (35729d1)
  • react-grid: clean drag-drop grouping variables (#479) (fdfab56)
  • react-grid: get rid of console error during column dragging (#570) (c508953)
  • react-grid: prevent click event propagation on detail toggle (#494) (f5b861b), closes #492
  • react-grid-material-ui: correct header cell width (#536) (858ee1c)
  • react-grid-material-ui: replace click action from Cell to CheckBox (#490) (8a12806)
  • react-grid-material-ui: rework cell paddings (#480) (1bc29f2)

Code Refactoring

  • react-grid: replace render functions with components in TableEditRow (#518) (9bc0993)
  • react-grid: replace render functions with components in TableEditColumn (#522) (9273e04)
  • react-grid: replace render functions with components in TableFilterRow (#512) (1b95ae5)
  • react-grid: replace Watcher with the Getter (#545) (138c7c0)
  • react-grid: get rid of internal seamless-immutable support (#556) (195ad79)
  • react-grid: rename TableView and VirtualTableView components to Table and VirtualTable (#482) (3874da9)
  • react-grid: replace render functions with components in Grid (#486) (cb409a1)
  • react-grid: replace render functions with components in GroupingPanel (#540) (fbca230)
  • react-grid: replace render functions with components in TableGroupRow (#511) (7d7d3a1)
  • react-grid: replace render functions with components in TableHeaderRow (#508) (255e729)
  • react-grid: replace render functions with components in TableRowDetail (#505) (844330b)
  • react-grid: replace render functions with components in TableSelection (#502) (f9e3c88)
  • react-grid: replace render functions with components in TableView (#485) (f5bd4e0)
  • react-grid: split SelectionState to SelectionState and LocalSelection (#506) (e49ad0d)
  • react-grid: split SelectionState to SelectionState and LocalSelection (#552) (be42695)
  • react-grid-material-ui: get rid of the Paper wrapper (#487) (2e40de9)

Features

  • react-grid: add components for ColumnChooser (#543) (7c24c91)
  • react-grid: add components for DragDropContext plugin (#526) (49d9662)
  • react-grid: add components for the Grid component (#553) (314f0d8)
  • react-grid: add components for the GroupingPanel plugin (#565) (e79ba9c)
  • react-grid: add components for the PagingPanel plugin (#542) (3d226bb)
  • react-grid: add components for the Table plugin (#516) (37b4393)
  • react-grid: add components for the TableColumnVisibility plugin (#539) (2d12091)
  • react-grid: add components for the TableEditColumn plugin (#534) (a24a9ce)
  • react-grid: add components for the TableEditRow plugin (#529) (5615ecf)
  • react-grid: add components for the TableFilterRow plugin (#523) (06afae1)
  • react-grid: add components for the TableGroupRow plugin (#520) (dc9903c)
  • react-grid: add components for the TableRowDetail plugin (#538) (a721d36)
  • react-grid: add components for the TableSelection plugin (#521) (4574aaf)
  • react-grid: add components for the VirtualTable plugin (#566) (d67ec6f)
  • react-grid: add table header row & cell components (#507) (826cda8)

BREAKING CHANGES

  • react-core: To get rid of redundant 'div' elements in markup, we have updated the minimum React version the grid requires to 16.2.0.

  • react-grid: Some times ago, we created a pull request that allows using our React Grid with the seamless-immutable library. The main change is that we switched from the Array.prototype.slice() function to the Array.from() one to copy arrays. It was not a good decision, because Array.from() is slower than Array.prototype.slice(). Now we return back to Array.prototype.slice() for performance reasons.

    If you are using the seamless-immutable library, change your code as follows:

    const state = {
      data: Immutable({
        selection: [],
      })
    };
    
    <Grid>
      { /* ...*/ }
      <SelectionState
        // selection: this.state.data.selection -> before
        selection: this.state.data.selection.asMutable() // now
      />
    </Grid>

    The related guide is updated as well.

  • react-grid-material-ui: To make Grid for Material UI more flexible we've stopped using the Paper component inside the Grid's layout.   It allows placing our Grid to an existing Paper with other components. For example:

    <Paper>
      <Button>Products</Button>
      <Button>Customers</Button>
      <Button>Sales</Button>
      <Grid
        /* ... */
      >
        {/* ... */}
      </Grid>
    </Paper>
  • react-grid: To simplify working with selection features and make the selection plugin's purposes clearer, the functionality that computes the selection state has been moved from the SelectionState plugin to the LocalSelection one:

    • The availableToSelect getter has been deleted from the SelectionState plugin, while the selectAllAvailable, allSelected, and someSelected getters have been added to the LocalSelection plugin.
    • The SelectionState plugin's setRowsSelection action has been renamed to toggleSelection.
    • The selection getter's return value type has been changed to Set.
    • The default value of the TableSelection plugin's showSelectAll property has been changed to false.

    Both plugins are available from the @devexpress/dx-react-grid package. Note that LocalSelection should be linked after SelectionState if you use the TableSelection plugin.

  • react-core: To simplify working with plugins, we have got rid of the Watcher. Now, you can use a Getter instead.

    Before:

    ...
    <Watcher
      watch={
        getter = getter('someGetter')
      }
      onChange={(action, someGetter) => {
        action('someAction')(someGetter);
      }}
    />
    ...
    

    After:

    ...
    <Getter
      name="someGetter"
      computed={(getters, actions) => {
          actions.someAction(getters.someGetter);
        return getters.someGetter;
      }}
    />
    ...
    
  • react-grid: Such plugin names as TableView and VirtualTableView don't correspond to other plugins like TableFilterRow, TableGroupRow, TableSelection, which do not have "view" in their names. To keep the names of plugins consistent, the following changes have been introduced:

    • the TableView plugin has been renamed to Table;
    • the VirtualTableView plugin has been renamed to VirtualTable;
  • react-grid: The TableEditRow plugin's editCellTemplate, and editRowTemplate properties have been replaced with cellComponent, and rowComponent ones, which accept components instead of render functions. Find more details here: #496

  • react-grid: The GroupingPanel plugin's groupPanelTemplate, and groupPanelItemTemplate properties have been replaced with containerComponent, and itemComponent ones, which accept components instead of render functions. Find more details here: #496

    containerComponent takes on the children property instead of all arguments passed to the groupPanelTemplate function.

    The onSort, and onGroup properties passed to itemComponent are used instead of the changeSortingDirection, and groupByColumn arguments passed to the groupPanelItemTemplate function. The item, and draft properties are no longer available, use the item property instead.

  • react-grid: The TableEditColumn plugin's commandTemplate, cellTemplate and headingCellTemplate properties have been replaced with commandComponent, cellComponent, and headerCellComponent ones, which accept components instead of render functions. Find more details here: #496

    Properties passed to a component returned from commandComponent have the same names as arguments passed to the commandTemplate function with the following exception. The onExecute property is used instead of the executeCommand argument.

    All properties passed to the cellComponent except row have been replaced by the children property providing configured commands.

    All properties passed to the headingCellComponent have been replaced by the children property providing configured commands.

  • react-grid: The TableGroupRow plugin's groupIndentColumnWidth property has been renamed to indentColumnWidth. The groupCellTemplate, groupRowTemplate and groupIndentCellTemplate properties have been replaced with cellComponent, rowComponent, and indentCellComponent ones, which accept components instead of render functions. Find more details here: #496

    Properties passed to cellComponent have the same names as arguments passed to the groupCellTemplate function with the following exceptions:

    • The onToggle property is used instead of the toggleGroupExpanded argument.
    • The expanded property is used instead of the isExpanded argument.
  • react-grid: The TableFilterRow plugin's filterCellTemplate and filterRowTemplate properties have been replaced with cellComponent, and rowComponent ones, which accept components instead of render functions. Find more details here: #496

    Properties passed to cellComponent have the same names as arguments passed to the filterCellTemplate function except for the onFilter property, which is used instead of the setFilter argument.

  • react-grid: The TableHeaderRow's headerCellTemplate, and headerRowTemplate properties have been replaced with cellComponent, and rowComponent, which accept components instead of render functions. Find more details here: #496

    Properties passed to cellComponent have the same names as arguments passed to the headerCellTemplate function with the following exceptions: the onSort, onGroup, onWidthChange and onDraftWidthChange properties are used instead of the changeSortingDirection, groupByColumn, changeColumnWidth and changeDraftColumnWidth arguments respectively.

  • react-grid: The TableRowDetail plugin's detailToggleCellWidth property has been renamed to toggleColumnWidth. The template, detailCellTemplate, detailRowTemplate, and detailToggleCellTemplate properties have been replaced with contentComponent, cellComponent, rowComponent, and toggleCellComponent ones, which accept components instead of render functions. Find more details here: #496

    Properties passed to cellComponent have the same names as arguments passed to the detailCellTemplate function except for the children property, which is used instead of the template argument.

    Properties passed to toggleCellComponent have the same names as arguments passed to the detailToggleCellTemplate function except for the onToggle property, which is used instead of the toggleExpanded argument.

  • react-grid: The TableSelection plugin's highlightSelected property has been renamed to highlightRow. The selectCellTemplate and selectAllCellTemplate properties have been replaced with cellComponent, and headerCellComponent ones, which accept components instead of render functions. Find more details here: #496

    Properties passed to headerCellComponent have the same names as arguments passed to the selectAllCellTemplate function with the following exceptions:

    • The onToggle property is used instead of the toggleAll argument.
    • The disabled property is used instead of the selectionAvailable argument and it's value is inverted.

    Properties passed to cellComponent have the same names as arguments passed to the selectCellTemplate function except for the onToggle property, which is used instead of the changeSelected argument.

  • react-grid: The Table's tableLayoutTemplate, tableCellTemplate, tableRowTemplate, tableNoDataCellTemplate, tableNoDataRowTemplate, tableStubCellTemplate, and tableStubHeaderCellComponent properties have been replaced with layoutComponent, cellComponent, rowComponent, noDataCellComponent, noDataRowComponent, stubCellComponent and stubHeaderCellComponent. This also means that they accept components instead of render functions. Find more details here: #496

  • react-grid: The Grid's rootTemplate, headerPlaceholderTemplate, and footerPlaceholderTemplate properties have been replaced with rootComponent, headerPlaceholderComponent, and footerPlaceholderComponent. This also means that they accept components instead of render functions. Find more details here: #496

    The headerTemplate, bodyTemplate, and footerTemplate properties have been replaced with the children property in rootTemplate.

1.0.0-beta.1 (2017-11-10)

Bug Fixes

  • react-grid: cancel find of nested groups within an empty childRows array (#460) (c1c3982)
  • react-grid: correct focus behavior when switching to row edit mode (#455) (aceada7)
  • react-grid: repair group rows keys (#456) (f3021b9)
  • react-grid-bootstrap3: adjust vertical align of controls inside cells (#466) (d982f31)
  • react-grid-material-ui: normalize checkboxes size (#450) (10b61d9)
  • react-grid-material-ui: normalize heights of rows with checkboxes (#445) (123ed27)

Code Refactoring

  • react-grid: export TableColumnResizing from theme packages (#438) (4be4ebf)
  • rect-grid: refactor table column reordering (#424) (dc28366), closes #154

Features

  • react-grid: add localization messages (#385) (c7581bd)
  • react-grid: add the capability to filter/sort grouped rows (#443) (292d429)
  • react-grid: allow to change sorting of the grouped columns by keyboard (#461) (e50c973)
  • react-grid: allow to focus each column and change sorting (#448) (0550848)
  • react-grid: rework virtual table (#454) (b28e365), closes #33 #280 #401
  • react-grid: support expanding/collapsing detail rows with keyboard (#446) (47ab49d)
  • react-grid: support expanding/collapsing group rows with keyboard (#439) (4176d9a)

BREAKING CHANGES

  • rect-grid: The ColumnOrderState plugin has been renamed to TableColumnReordering and is now available via the @devexpress/dx-react-grid-bootstrap3 and @devexpress/dx-react-grid-material-ui packages.

    The TableView plugin's allowColumnReordering property has been removed and the TableColumnReordering plugin now depends on the TableView plugin. Thus, it is enough to link the TableColumnReordering plugin below the TableView plugin to enable column reordering.

    Before:

    import {
      // ...
      ColumnOrderState
    } from '@devexpress/dx-react-grid';
    
    // ...
    
    <ColumnOrderState defaultOrder={[/* ... */]} />
    <TableView allowColumnReordering />

    After:

    import {
      // ...
      TableColumnReordering
    } from '@devexpress/dx-react-grid-bootstrap3';
    // } from '@devexpress/dx-react-grid-material-ui';
    
    // ...
    
    <TableView />
    <TableColumnReordering defaultOrder={[/* ... */]} />
  • react-grid: The TableColumnResizing plugin is now available in the "@devexpress/dx-react-grid-bootstrap3" and "@devexpress/dx-react-grid-material-ui" packages.

    Use the following code to import the plugin.

    import {
      TableColumnResizing,
    } from from '@devexpress/dx-react-grid-bootstrap3'/* or '@devexpress/dx-react-grid-material-ui' */;
    

1.0.0-alpha.14 (2017-10-25)

Bug Fixes

  • react-grid: remove header cell title offset if grouping by click isn't allowed (#434) (60285d4), closes #432
  • react-grid-bootstrap3: do not allow to focus column chooser item checkbox (728ea23)

Features

  • react-grid: support custom grouping processing (#395) (4fb92d0)

1.0.0-alpha.13 (2017-10-19)

Bug Fixes

  • react-grid: remove a redundant SelectionState dependency on LocalGrouping (#429) (50ee891), closes #428

1.0.0-alpha.12 (2017-10-19)

Bug Fixes

  • react-grid: add 'overflow: hidden' for MUI TableCell (#406) (69fd88c), closes #403
  • react-grid: allow to use Grid with react@16 (#389) (9f292fe)
  • react-grid: correlate sorting order with grouping order (#414) (db3377c), closes #398
  • react-grid: optimize table selection rendering (#412) (b0dfae1), closes #397
  • react-grid-bootstrap3: fix server side rendering issue with VirtualTable (#420) (207e81b), closes #415

Features

  • react-grid: implement column chooser (#366) (74b99c1)

Performance Improvements

  • react-core: batch updates on draggable events (#384) (51efef1)

BREAKING CHANGES

  • react-grid: The scope parameter of the setColumnSorting action has been removed.

    The GroupingState plugin now has an optional dependency on the SortingState plugin. So, GroupingState should be placed after SortingState.

    Before:

    <GroupingState /* ... */ />
    <SortingState /* ... */ />

    After:

    <SortingState /* ... */ />
    <GroupingState /* ... */ />

1.0.0-alpha.11 (2017-10-04)

Bug Fixes

  • react-core: update TemplatePlacholder on placeholder func change (#370) (69659c8)
  • react-grid: add 'pointer' cursor on group icon in the HeaderCell (#369) (8d1de4a)

Code Refactoring

  • react-grid: change custom filtering function signature (#354) (67cfdc9)
  • react-grid: rename getCellData to getCellValue (#349) (8f8e41d)

Features

  • react-grid: add custom grouping functions to LocalGrouping (#376) (2c31af1)
  • react-grid: add the functionality to define a custom sorting algorithm (#371) (4ac8ab8)
  • react-grid: support column data types (#336) (1528800)

Performance Improvements

  • react-grid: optimize internal state calculation (#356) (be890b4)
  • react-grid: suppress redundant render (#355) (695aacd)

BREAKING CHANGES

  • react-grid: The filterFn property of the LocalFiltering has been renamed to getColumnPredicate. The argument list has been changed from filterFn(row: Row, filter: Filter) => boolean to getColumnPredicate(columnName: string) => Function. The returning function has the following signature (value: any, filter, row: Row) => boolean.
  • react-grid: The getCellData property of the TableView plugin and the getCellData field of the Column interface have been renamed to getCellValue.

1.0.0-alpha.10 (2017-09-18)

Bug Fixes

  • react-core: use correct params within template chain (#322) (64a9991)

Code Refactoring

  • react-core: remove embedded Template connection (#331) (f90955d)
  • react-grid: rename tableTemplate to tableLayoutTemplate (#310) (def4a97)

Features

  • react-core: implement TemplateConnector (#314) (1e9bcfc)
  • react-grid: add tableRowTemplate to the TableView plugin (#317) (24d9446)
  • react-grid: implement row templates (#333) (bc960d4)
  • react-grid: implement table column resizing (#297) (a377d3c)
  • react-grid: make grouped and ungrouped column sorting independent (#292) (c812fa3)

BREAKING CHANGES

  • react-grid: The tableExtraProps getter was removed from the TableView and TableSelection plugins.
  • react-core: connectGetters and connectActions properties have been removed from the Template component. From now on, you can connect Getters and Actions using the TemplateConnector component.

Before:

<Template name="templateName"
  connectGetters={getter => ({ value: getter('value') })}
  connectActions={action => ({ changeValue: action('changeValue') })}
>
  {({ value, changeValue }) => /* ... */}
</Template>

After:

<Template name="templateName">
  <TemplateConnector>
    {({ value }, { changeValue }) =>  /* ... */}
  </TemplateConnector>
</Template>
  • react-grid: The tableTemplate property has been renamed to tableLayoutTemplate to make the TableView plugin API more eloquent.

1.0.0-alpha.9 (2017-09-04)

Bug Fixes

  • react-grid: display a correct message in an empty grouping panel (#274) (46b5291)
  • react-grid: fix the editing state mutation (#279) (a120730)
  • react-grid: update MUI to the 1.0.0-beta.6 version (#275) (9032c34), closes #271
  • react-grid: update MUI to the 1.0.0-beta.7 version (#296) (7d7d649)

1.0.0-alpha.8 (2017-08-21)

Bug Fixes

  • react-grid: correct pager rendering within an empty grid (#251) (eb13a8b)
  • react-grid: get rid of the exception thrown on a column ungrouping by drag and drop (#260) (8fc2990)
  • react-grid: preserve group panel height when no grouping is specified (#261) (9116e92)

Code Refactoring

  • react-grid: change TableRow and TableColumn interfaces structure (#227) (5288a9f)
  • react-grid: merge the setRowSelection and setRowsSelection actions (#233) (876a2c6)
  • react-grid: remove redundant getters from GroupingState (#244) (1fb21ca)
  • react-grid: rename colspan to colSpan (#248) (afc69e9)
  • react-grid: wrap group panel column data (#267) (156392b)

Features

  • react-core: rework Getter (#259) (4fd5f9b)
  • react-grid: adopt PluginContainer dependencies in Grid plugins (#249) (016f618)
  • react-grid: provide the custom data accessors capability (#264) (5f699bf), closes #176

Performance Improvements

  • react-grid: optimize plugin dependencies check (#253) (640c124)

BREAKING CHANGES

  • react-grid: The following changes have been made in the GroupingPanel plugin:

    • the groupPanelCellTemplate property has been renamed to groupPanelItemTemplate;
    • the groupedColumns property has been renamed to groupingPanelItems and now contains an array of objects which conform the GroupingPanelItem interface.

    The isDraft property of the DraftGrouping interface has been renamed to draft.

  • react-grid:   In order to reduce API verbosity, the groupedColumns and draftGroupedColumns getters are no longer exported from the GroupingState plugin.   The column field is no longer present in the GroupRow interface. So, to access the column field in groupCellTemplate and groupIndentCellTemplate of the TableGroupRow plugin, it is necessary to use args.column instead of args.row.column.

  • react-grid: The colspan field passed to tableNoDataCellTemplate (the TableView plugin), detailCellTemplate (the TableRowDetail plugin) and groupCellTemplate (the TableGroupRow plugin) has been renamed to colSpan.

  • react-grid: To simplify the Grid plugins API the setRowSelection action was removed from the SelectionState and TableSelection plugins.

    For now, to select a single row you can use the setRowsSelection action in the following manner:

    setRowsSelection({ rowIds: [/* rowId */] })
  • react-grid:   TableRow and TableColumn interfaces structure has been changed. Now, it wraps original rows and columns of the Grid component instead of patching it.

    Before:

    interface TableRow extends Row {
      type?: string;
    }
    interface TableColumn extends Column {
      type?: string;
    }

    After:

    interface TableRow {
      key: string;
      type: string;
      rowId?: number | string;
      row?: Row;
      height?: number;
    }
    interface TableColumn {
      key: string;
      type: string;
      column?: Column;
      width?: number;
    }

    The CommandHeadingCellArgs interface related to the TableEditColumn plugin no longer has column and row fields.

1.0.0-alpha.7 (2017-08-07)

Bug Fixes

  • react-grid: allow TableGroupRow to be placed before other table plugins (#221) (bdc81a0)
  • react-grid: correct 'All' page size text rendering in MUI (#242) (6bde2dd)
  • react-grid: fix grouping if TableGroupRow is placed before any other table plugin (#218) (7e09c7e)
  • react-grid: pass style field to editCellTemplate of TableEditRow (#235) (c45ef85), closes #234
  • react-grid: prevent group panel cells blinking while dragging (#223) (786206d)
  • react-grid: remove extra space at the right of GroupPanelCell when sorting is disabled (#220) (257a337)
  • react-grid: use correct cursors for dragging (#224) (6269063)
  • react-grid-material-ui: support indeterminate state for the select all checkbox (#231) (6a5aab3)

Chores

  • react-grid-material-ui: swap UMD bundle with CJS one in package entry (#232) (9dd4273)

Code Refactoring

  • react-grid: add the most recently added row to the end (#238) (442bdbc)

Features

  • react-core: implement dependencies support for PluginContainer (#237) (6ef3be6)

BREAKING CHANGES

  • react-grid: In order to improve API transparency, the most recently added row will be added to the end of the addedRows property of the EditingState plugin.
  • react-grid-material-ui: UMD bundle for the @devexpress/dx-react-grid-material-ui package is no longer provided
  • react-grid: Arguments of the setPageSize and setCurrentPage actions were simpilified. Now, to call these actions, a user can use numbers instead of objects. See the following code:
    setPageSize(5); // instead of setPageSize({ size: 5 })
    
    and
    setCurrentPage(1); // instead of setCurrentPage({ page: 1 })
    

1.0.0-alpha.6 (2017-07-24)

Bug Fixes

  • react-core: prevent scrolling while dragging (#207) (e3e18a9)
  • react-grid: clear expanded groups after ungrouping (#202) (d97809e)
  • react-grid: remove the totalPages getter from the PagingState plugin (#195) (e231d63)
  • react-grid: throw error if the count of title rows exceeds the page size (#193) (8abde20)
  • react-grid: turn edit cell input into the controlled mode (#201) (af26c64)
  • react-grid-material-ui: pin material-ui version (#197) (34e6ddb)
  • fix versions in distrubutives (#208) (7c2f9da)
  • react-grid-material-ui: use correct typography for the drag preview (#214) (e1a134d)

Features

  • react-grid: implement grouping by drag and drop (#205) (ebb6c61)

Performance Improvements

  • react-grid: update only changed rows in table (#199) (e1c64ff)

Reverts

  • fix(react-grid): grid bottom offset in Material UI (#196) (e2392ed)

BREAKING CHANGES

  • react-grid: The TableHeaderRow plugin's allowGrouping property has been renamed to allowGroupingByClick.
  • react-grid: The totalPages getter is no longer exported from the PagingState and LocalPaging plugins.

1.0.0-alpha.5 (2017-07-07)

Bug Fixes

  • react-grid: add grid bottom offset in Material UI (#180) (48f12a2)
  • react-grid: add group icon offset in Material UI (#171) (43d9da1)
  • react-grid: limit filterCellTemplate arguments (#163) (2a4f003)
  • react-grid: reset a column filter when clearing the filter editor value (#184) (83b321c), closes #136
  • react-grid: use MUI Chips for group panel items rendering (#168) (45ceb12)

Code Refactoring

  • react-grid: extract GroupPanelLayout (#149) (ed73aa1)

Features

  • react-grid: introduce column reordering animation (#169) (d5e808b)
  • react-grid: introduce Material UI templates (closes #93)

BREAKING CHANGES

  • react-grid: Use the groupPanelCellTemplate property of the grouping-panel plugin instead of the GroupPanelProps interface's cellTemplate property to specify a template used to render a grouping panel cell. The GroupPanelProps interface's cellTemplate property is no longer available.

1.0.0-alpha.4 (2017-06-23)

Bug Fixes

  • react-grid: Add a vertical space between grouping buttons (#151) (ec1bd30)
  • react-grid: Add an offset for left column in Material UI (#156) (67d0eda)
  • react-grid: Fix incorrect table layout if all columns have fixed width (#160) (b933aea)
  • react-grid: Put the dx-react-grid dependencies in order (#148) (fe60801)
  • react-grid: Update deps (fixes #134) (#139) (5bf504a)

Code Refactoring

  • react-grid: Rename detailToggleTemplate to detailToggleCellTemplate (#146) (bd49b0e)
  • react-grid: Rename groupColumnWidth to groupIndentColumnWidth (#145) (e78b55f)
  • react-grid: Rename groupRowCellTemplate to groupCellTemplate (#153) (fec0aac)

Features

  • react-grid: Ability to show all rows on a page via page size selector (#150) (8af3dde)
  • react-grid: Implement column reordering (#128) (1de1c63)
  • react-grid: TableView support stub cell rendering if no data for cell is provided (#155) (34dee6c)

BREAKING CHANGES

  • react-grid: The following package has become a peer dependency of the @devexpress/dx-react-grid one and has to be installed by your app:

    npm i --save @devexpress/dx-react-core
    
  • react-grid: The 'groupRowCellTemplate' property of the TableGroupRow plugin has been renamed to 'groupCellTemplate'

  • react-grid: We renamed the detailToggleTemplate property of the TableRowDetail plugin to detailToggleCellTemplate to make it consistent with the detailToggleCellWidth property.

  • react-grid: The groupColumnWidth property of the TableGroupRow plugin has been renamed to groupIndentColumnWidth to avoid possible confusion of what it is responsible for.

1.0.0-alpha.3 (2017-06-09)

Bug Fixes

  • react-grid: Cancel sorting by using the Ctrl key in Material UI (#129) (2508537)
  • react-grid: Treat templates as functions (#120) (4b2c490)

Code Refactoring

  • react-grid: Move layout templates to Grid (#107) (f6be302)

Features

  • react-grid: Controlled state featured demo for Material UI (#130) (2528c67)
  • react-grid: Implement ColumnOrderState plugin (#111) (b3284f0)
  • react-grid: Implement DragDropContext plugin (#117) (31f6b2d)
  • react-grid: Introduce Material UI templates (#102) (70975a7)
  • react-grid: Material UI detail row (#115) (c161c66)
  • react-grid: Material UI editing (#124) (3d9a00b)
  • react-grid: Material UI featured uncontrolled state demo (#126) (8e1d80b)
  • react-grid: Material UI filtering (#109) (5484942)
  • react-grid: Material UI pager (#108) (99f30b6)
  • react-grid: Mobile-friendly pager (#125) (23ec7f0)
  • react-grid: Redux integration demo for Material UI (#132) (9988355)
  • react-grid: Remote data featured demo for Material UI (#131) (41b64b2)
  • react-grid: Use column name if its title is not specified (#121) (daef7db)

BREAKING CHANGES

  • react-grid: We moved layout templates from the TableView plugin to the Grid component. The Grid component with the predefined plugins is now available in the "@devexpress/dx-react-grid-bootstrap3" package. If you want to define custom layout templates, the Grid component without predefined templates is still available in the "devexpress/dx-react-grid" package.

    The following code:

    import {
      Grid
    } from '@devexpress/dx-react-grid';

    should be replaced with:

    import {
      Grid
    } from '@devexpress/dx-react-grid-bootstrap3';

1.0.0-alpha.2 (2017-05-26)

Bug Fixes

  • demos: Change initial page size in remote demo (#103) (aa64e3c)
  • docs: Don't use relative links in the package root readme.md (#91) (6863e73)
  • react-grid: Cancel column grouping in FireFox (#98) (8fb9c52), closes #30

Features

  • react-grid: Cancel sorting by using the Ctrl key (#96) (0d804f4)
  • react-grid: Implement page size selector (#95) (9e21583)

BREAKING CHANGES

  • Previously, to enable the 'Detail row' feature a user had to use only the 'TableRowDetail' plugin. But, this plugin mixed up the rendering and state managing functionality. Now, there are two particular plugins. The first one is the 'RowDetailState' plugin. It's responsible for a state managing. The second one is the 'TableRowDetail' plugin. It only renders a detail row.

    The following code:

    <TableRowDetail
      expandedRows={expandedRows}
      onExpandedRowsChange={onExpandedRowsChange}
      template={({ row }) =>
        <GridDetailContainer
          data={row}
          columns={detailColumns}
        />
      }
    />

    should be replaced with:

    <RowDetailState
      expandedRows={expandedRows}
      onExpandedRowsChange={onExpandedRowsChange}
    />
    <TableRowDetail
      template={({ row }) =>
        <GridDetailContainer
          data={row}
          columns={detailColumns}
        />
      }
    />

1.0.0-alpha.1 (2017-05-15)

  • Initial public release