Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[core] Isolate DataGrid and XGrid #2176

Merged
merged 55 commits into from
Aug 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
d2e16ff
isolating dataGrid
dtassone Jul 20, 2021
3baddcf
splitting xgrid and data-grid
dtassone Jul 21, 2021
fd16e9f
cleanup
dtassone Jul 21, 2021
0ff1714
refactor license prop
dtassone Jul 22, 2021
e51e39e
fix imports
dtassone Jul 22, 2021
2108473
fix imports
dtassone Jul 22, 2021
0ddc634
fix props
dtassone Jul 22, 2021
a3f51df
fix props and selection model
dtassone Jul 22, 2021
19a8484
Merge branch 'master' into pluginApi2
dtassone Jul 23, 2021
9a16f4c
revert rename GridComponentProps
dtassone Jul 23, 2021
d326f6d
Merge
flaviendelangle Jul 27, 2021
bda9bfa
Prettier
flaviendelangle Jul 27, 2021
8030690
Fix test error
flaviendelangle Jul 27, 2021
3ace712
Fix
flaviendelangle Jul 27, 2021
d6d4f31
Handle non-array selectionModel
flaviendelangle Jul 27, 2021
803303d
Build api
flaviendelangle Jul 27, 2021
aae0d22
Fix
flaviendelangle Jul 27, 2021
2715068
Do not put XGrid-only-props in DataGrid interface
flaviendelangle Jul 27, 2021
573ee98
Fix
flaviendelangle Jul 27, 2021
74e9b78
Fix
flaviendelangle Jul 27, 2021
5f3d5db
Fix
flaviendelangle Jul 27, 2021
e41fd15
Fix
flaviendelangle Jul 27, 2021
c64bbdf
Code review
flaviendelangle Jul 28, 2021
e4cf37f
Fix
flaviendelangle Jul 28, 2021
ab75f80
Merge branch 'master' into pluginApi2
flaviendelangle Jul 28, 2021
cac3a71
Remove useGridColumnReorder from DataGrid bundle
flaviendelangle Jul 28, 2021
b55897f
Merge branch 'master' into pluginApi2
flaviendelangle Jul 29, 2021
185ee29
Fix intl
flaviendelangle Jul 29, 2021
2ec476f
Fix
flaviendelangle Jul 29, 2021
2084b4e
Merge branch 'master' into pluginApi2
flaviendelangle Jul 29, 2021
8f2e0fc
Merge branch 'master' into pluginApi2
flaviendelangle Jul 29, 2021
d785bec
Merge
flaviendelangle Jul 30, 2021
6d4812e
convention
oliviertassinari Jul 31, 2021
f64a481
remove useless variable
oliviertassinari Jul 31, 2021
3338acd
convention
oliviertassinari Jul 31, 2021
7ae7932
remove Watermark from DataGrid
oliviertassinari Jul 31, 2021
844a383
Merge
flaviendelangle Aug 3, 2021
b05053e
Fix
flaviendelangle Aug 3, 2021
a424c45
Merge
flaviendelangle Aug 4, 2021
92ce93a
Fix
flaviendelangle Aug 4, 2021
b9722b1
Lint
flaviendelangle Aug 4, 2021
673f6b1
Clean selection
flaviendelangle Aug 4, 2021
ec9d1f2
Fix
flaviendelangle Aug 4, 2021
0a1d872
Revert selection selector changes
flaviendelangle Aug 4, 2021
3a28278
Prettier
flaviendelangle Aug 4, 2021
226c83e
Fix
flaviendelangle Aug 4, 2021
c51c90b
Fix
flaviendelangle Aug 4, 2021
b220cb1
Fix
flaviendelangle Aug 4, 2021
4e8cdcb
Fix doc
flaviendelangle Aug 4, 2021
f2e9e80
Fix
flaviendelangle Aug 4, 2021
5a3c506
Fix
flaviendelangle Aug 4, 2021
26bc417
Add todo for defaultProps
oliviertassinari Aug 4, 2021
159fce0
Merge
flaviendelangle Aug 5, 2021
fc1ebbc
Fix
flaviendelangle Aug 5, 2021
5ca14f2
Merge
flaviendelangle Aug 5, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { DataGrid, GridRowId } from '@material-ui/data-grid';
import { DataGrid, GridSelectionModel } from '@material-ui/data-grid';
import { useDemoData } from '@material-ui/x-grid-data-generator';

export default function ControlledSelectionGrid() {
Expand All @@ -9,7 +9,7 @@ export default function ControlledSelectionGrid() {
maxColumns: 6,
});

const [selectionModel, setSelectionModel] = React.useState<GridRowId[]>([]);
const [selectionModel, setSelectionModel] = React.useState<GridSelectionModel>([]);

return (
<div style={{ height: 400, width: '100%' }}>
Expand Down
38 changes: 0 additions & 38 deletions packages/grid/_modules_/grid/GridComponent.tsx

This file was deleted.

4 changes: 0 additions & 4 deletions packages/grid/_modules_/grid/GridComponentProps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,6 @@ export interface GridComponentProps extends GridOptionsProp {
* Return the id of a given [[GridRowData]].
*/
getRowId?: GridRowIdGetter;
/**
* @internal enum
*/
licenseStatus: string;
/**
* If `true`, a loading overlay is displayed.
*/
Expand Down
15 changes: 9 additions & 6 deletions packages/grid/_modules_/grid/components/Watermark.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import * as React from 'react';
import { GridState } from '../hooks/features/core/gridState';
import { useGridSelector } from '../hooks/features/core/useGridSelector';
import { useGridApiContext } from '../hooks/root/useGridApiContext';

// we duplicate licenseStatus to avoid adding a dependency on x-license.
enum LicenseStatus {
Expand All @@ -21,12 +24,12 @@ function getLicenseErrorMessage(licenseStatus: string) {
}
}

export interface WatermarkProps {
licenseStatus: string;
}
const licenseStatusSelector = (state: GridState) => state.licenseStatus;

export function Watermark() {
const apiRef = useGridApiContext();

export const Watermark = (props: WatermarkProps) => {
const { licenseStatus } = props;
const licenseStatus = useGridSelector(apiRef, licenseStatusSelector);
if (licenseStatus === LicenseStatus.Valid.toString()) {
return null;
}
Expand All @@ -50,4 +53,4 @@ export const Watermark = (props: WatermarkProps) => {
{getLicenseErrorMessage(licenseStatus)}{' '}
</div>
);
};
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
import * as React from 'react';
import { GridColumnsHeader } from './components/columnHeaders/GridColumnHeaders';
import { GridColumnsContainer } from './components/containers/GridColumnsContainer';
import { GridMainContainer } from './components/containers/GridMainContainer';
import { GridWindow } from './components/containers/GridWindow';
import { useGridApiContext } from './hooks/root/useGridApiContext';
import { GridAutoSizer } from './components/GridAutoSizer';
import { GridViewport } from './components/GridViewport';
import { Watermark } from './components/Watermark';
import { GRID_RESIZE } from './constants/eventsConstants';
import { GRID_RESIZE } from '../../constants/eventsConstants';
import { useGridApiContext } from '../../hooks/root/useGridApiContext';
import { ElementSize } from '../../models/elementSize';
import { GridColumnsHeader } from '../columnHeaders/GridColumnHeaders';
import { GridColumnsContainer } from '../containers/GridColumnsContainer';
import { GridMainContainer } from '../containers/GridMainContainer';
import { GridWindow } from '../containers/GridWindow';
import { GridAutoSizer } from '../GridAutoSizer';
import { GridViewport } from '../GridViewport';
import { GridOverlays } from './GridOverlays';
import { ElementSize } from './models/elementSize';
import { useGridRootProps } from './hooks/utils/useGridRootProps';
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';

export function GridBody() {
interface GridBodyProps {
children?: React.ReactNode;
}

export function GridBody(props: GridBodyProps) {
const { children } = props;
const apiRef = useGridApiContext();
const rootProps = useGridRootProps();

Expand All @@ -34,7 +38,6 @@ export function GridBody() {
return (
<GridMainContainer>
<GridOverlays />
<Watermark licenseStatus={rootProps.licenseStatus} />
<GridColumnsContainer ref={columnsContainerRef}>
<GridColumnsHeader ref={columnsHeaderRef} />
</GridColumnsContainer>
Expand All @@ -49,6 +52,7 @@ export function GridBody() {
</GridWindow>
)}
</GridAutoSizer>
{children}
</GridMainContainer>
);
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import * as React from 'react';
import { GridMainContainer } from './components/containers/GridMainContainer';
import { ErrorBoundary } from './components/ErrorBoundary';
import { useGridApiContext } from './hooks/root/useGridApiContext';
import { useGridState } from './hooks/features/core/useGridState';
import { useLogger } from './hooks/utils/useLogger';
import { useGridRootProps } from './hooks/utils/useGridRootProps';
import { useGridState } from '../../hooks/features/core/useGridState';
import { useGridApiContext } from '../../hooks/root/useGridApiContext';
import { useLogger } from '../../hooks/utils/useLogger';
import { GridMainContainer } from '../containers/GridMainContainer';
import { ErrorBoundary } from '../ErrorBoundary';
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';

export function GridErrorHandler(props) {
const { children } = props;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from 'react';
import { useGridApiContext } from './hooks/root/useGridApiContext';
import { useGridRootProps } from './hooks/utils/useGridRootProps';
import { useGridApiContext } from '../../hooks/root/useGridApiContext';
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';

export function GridFooterPlaceholder() {
const apiRef = useGridApiContext();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from 'react';
import { useGridApiContext } from './hooks/root/useGridApiContext';
import { useGridRootProps } from './hooks/utils/useGridRootProps';
import { useGridApiContext } from '../../hooks/root/useGridApiContext';
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';

export function GridHeaderPlaceholder() {
const apiRef = useGridApiContext();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import * as React from 'react';
import { useGridApiContext } from './hooks/root/useGridApiContext';
import { useGridSelector } from './hooks/features/core/useGridSelector';
import { visibleGridRowCountSelector } from './hooks/features/filter/gridFilterSelector';
import { gridRowCountSelector } from './hooks/features/rows/gridRowsSelector';
import { useGridRootProps } from './hooks/utils/useGridRootProps';
import { useGridSelector } from '../../hooks/features/core/useGridSelector';
import { visibleGridRowCountSelector } from '../../hooks/features/filter/gridFilterSelector';
import { gridRowCountSelector } from '../../hooks/features/rows/gridRowsSelector';
import { useGridApiContext } from '../../hooks/root/useGridApiContext';
import { useGridRootProps } from '../../hooks/utils/useGridRootProps';

export function GridOverlays() {
const apiRef = useGridApiContext();
Expand Down
5 changes: 5 additions & 0 deletions packages/grid/_modules_/grid/components/base/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export * from './GridBody';
export * from './GridErrorHandler';
export * from './GridFooterPlaceholder';
export * from './GridHeaderPlaceholder';
export * from './GridOverlays';
1 change: 1 addition & 0 deletions packages/grid/_modules_/grid/components/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from './base';
export * from './cell';
export * from './containers';
export * from './columnHeaders';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ const hasCursorPositionChanged = (
): boolean =>
currentCoordinates.x !== nextCoordinates.x || currentCoordinates.y !== nextCoordinates.y;

/**
* Only available in XGrid
*/
export const useGridColumnReorder = (apiRef: GridApiRef): void => {
const logger = useLogger('useGridColumnReorder');

Expand Down
9 changes: 6 additions & 3 deletions packages/grid/_modules_/grid/hooks/features/core/gridState.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { LicenseStatus } from '@material-ui/x-license';
import { getInitialGridColumnsState, GridColumnsState } from '../../../models/colDef/gridColDef';
import {
GridContainerProps,
Expand All @@ -9,8 +10,8 @@ import { GridEditRowsModel } from '../../../models/gridEditRowModel';
import { DEFAULT_GRID_OPTIONS, GridOptions } from '../../../models/gridOptions';
import { GridColumnMenuState } from '../columnMenu/columnMenuState';
import {
GridColumnReorderState,
getInitialGridColumnReorderState,
GridColumnReorderState,
} from '../columnReorder/columnReorderState';
import {
getInitialGridColumnResizeState,
Expand All @@ -25,7 +26,7 @@ import {
import { GridFocusState, GridTabIndexState } from '../focus/gridFocusState';
import { GridPreferencePanelState } from '../preferencesPanel/gridPreferencePanelState';
import { getInitialGridRowState, InternalGridRowsState } from '../rows/gridRowsState';
import { GridSelectionState } from '../selection/gridSelectionState';
import { GridSelectionModel } from '../../../models/gridSelectionModel';
import { getInitialGridSortingState, GridSortingState } from '../sorting/gridSortingState';
import {
getInitialGridRenderingState,
Expand All @@ -50,16 +51,18 @@ export interface GridState {
sorting: GridSortingState;
focus: GridFocusState;
tabIndex: GridTabIndexState;
selection: GridSelectionState;
selection: GridSelectionModel;
filter: GridFilterModel;
visibleRows: VisibleGridRowsState;
preferencePanel: GridPreferencePanelState;
density: GridGridDensity;
error?: any;
licenseStatus: LicenseStatus;
}

export const getInitialGridState = (): GridState => ({
rows: getInitialGridRowState(),
licenseStatus: LicenseStatus.NotFound,
editRows: {},
pagination: getInitialPaginationState(),
options: DEFAULT_GRID_OPTIONS,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { GridDensity } from '../../../models/gridDensity';
import { DEFAULT_GRID_OPTIONS } from '../../../models/gridOptions';
import { GridDensity, GridDensityTypes } from '../../../models/gridDensity';

export interface GridGridDensity {
value: GridDensity;
Expand All @@ -9,8 +8,8 @@ export interface GridGridDensity {

export function getInitialGridDensityState(): GridGridDensity {
return {
value: DEFAULT_GRID_OPTIONS.density,
rowHeight: DEFAULT_GRID_OPTIONS.rowHeight,
headerHeight: DEFAULT_GRID_OPTIONS.headerHeight,
value: GridDensityTypes.Standard,
rowHeight: 52,
headerHeight: 56,
};
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import { createSelector, OutputSelector } from 'reselect';
import { gridRowsLookupSelector, GridRowsLookup } from '../rows/gridRowsSelector';
import { GridState } from '../core/gridState';
import { GridSelectionState } from './gridSelectionState';
import { GridRowId, GridRowModel } from '../../../models/gridRows';
import { GridSelectionModel } from '../../../models/gridSelectionModel';

export const gridSelectionStateSelector = (state: GridState) => state.selection;
export const selectedGridRowsCountSelector: OutputSelector<
GridState,
number,
(res: GridSelectionState) => number
> = createSelector<GridState, GridSelectionState, number>(
(res: GridSelectionModel) => number
> = createSelector<GridState, GridSelectionModel, number>(
gridSelectionStateSelector,
(selection) => selection.length,
);

export const selectedGridRowsSelector = createSelector<
GridState,
GridSelectionState,
GridSelectionModel,
GridRowsLookup,
Map<GridRowId, GridRowModel>
>(
Expand All @@ -28,8 +28,8 @@ export const selectedGridRowsSelector = createSelector<
export const selectedIdsLookupSelector: OutputSelector<
GridState,
Record<string, GridRowId>,
(res: GridSelectionState) => Record<string, GridRowId>
> = createSelector<GridState, GridSelectionState, Record<string, GridRowId>>(
(res: GridSelectionModel) => Record<string, GridRowId>
> = createSelector<GridState, GridSelectionModel, Record<string, GridRowId>>(
gridSelectionStateSelector,
(selection) =>
selection.reduce((lookup, rowId) => {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
export * from './gridSelectionState';
export * from './gridSelectionSelector';
export * from './useGridSelection';
Loading