Skip to content

Commit 077e368

Browse files
committed
fix: changes from feedback
1 parent b45d8fa commit 077e368

File tree

5 files changed

+42
-40
lines changed

5 files changed

+42
-40
lines changed

packages/compass-components/src/components/document-list/document.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
ElementEvents,
1111
} from 'hadron-document';
1212
import { AutoFocusContext } from './auto-focus-context';
13-
import { useForceUpdate } from './use-force-update';
13+
import { useForceUpdate } from '../../hooks/use-force-update';
1414
import { calculateShowMoreToggleOffset, HadronElement } from './element';
1515
import { usePrevious } from './use-previous';
1616
import VisibleFieldsToggle from './visible-field-toggle';

packages/compass-components/src/components/document-list/element.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { spacing } from '@leafygreen-ui/tokens';
2121
import { KeyEditor, ValueEditor, TypeEditor } from './element-editors';
2222
import { EditActions, AddFieldActions } from './element-actions';
2323
import { useAutoFocusContext } from './auto-focus-context';
24-
import { useForceUpdate } from './use-force-update';
24+
import { useForceUpdate } from '../../hooks/use-force-update';
2525
import { usePrevious } from './use-previous';
2626
import { css, cx } from '@leafygreen-ui/emotion';
2727
import { palette } from '@leafygreen-ui/palette';

packages/compass-components/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,3 +213,4 @@ export {
213213
export { SelectList } from './components/select-list';
214214
export { ParagraphSkeleton } from '@leafygreen-ui/skeleton-loader';
215215
export { InsightsChip } from './components/insights-chip';
216+
export { useForceUpdate } from './hooks/use-force-update';

packages/compass-crud/src/components/table-view/cell-renderer.tsx

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
import React, {
2-
useMemo,
3-
useCallback,
4-
useEffect,
5-
useReducer,
6-
useState,
7-
} from 'react';
1+
import React, { useMemo, useCallback, useEffect, useState } from 'react';
82
import {
93
BSONValue,
104
css,
@@ -13,6 +7,7 @@ import {
137
LeafyGreenProvider,
148
spacing,
159
withDarkMode,
10+
useForceUpdate,
1611
} from '@mongodb-js/compass-components';
1712
import { type Document, Element } from 'hadron-document';
1813
import type { ICellRendererParams } from 'ag-grid-community';
@@ -90,6 +85,21 @@ const decrypdedIconStyles = css({
9085
display: 'flex',
9186
});
9287

88+
const getElementLength = (
89+
element: Element | undefined | null
90+
): number | undefined => {
91+
if (!element) {
92+
return undefined;
93+
}
94+
95+
if (element.currentType === 'Object') {
96+
return Object.keys(element.generateObject() as object).length;
97+
}
98+
if (element.currentType === 'Array' && element.elements) {
99+
return element.elements.size;
100+
}
101+
};
102+
93103
interface CellContentProps {
94104
element: Element | undefined | null;
95105
cellState:
@@ -110,7 +120,7 @@ const CellContent: React.FC<CellContentProps> = ({
110120
onUndo,
111121
onExpand,
112122
}) => {
113-
const [, forceUpdate] = useReducer((x: number) => x + 1, 0);
123+
const forceUpdate = useForceUpdate();
114124
const isEmpty = element === undefined || element === null;
115125
const handleElementEvent = useCallback(() => {
116126
forceUpdate();
@@ -133,18 +143,7 @@ const CellContent: React.FC<CellContentProps> = ({
133143
}
134144
}, [isEmpty, element, handleElementEvent]);
135145

136-
const elementLength = useMemo((): number | undefined => {
137-
if (!element) {
138-
return undefined;
139-
}
140-
141-
if (element.currentType === 'Object') {
142-
return Object.keys(element.generateObject() as object).length;
143-
}
144-
if (element.currentType === 'Array' && element.elements) {
145-
return element.elements.size;
146-
}
147-
}, [element]);
146+
const elementLength = getElementLength(element);
148147

149148
const renderContent = useCallback(() => {
150149
if (cellState === EMPTY || !element) {
@@ -183,7 +182,6 @@ const CellContent: React.FC<CellContentProps> = ({
183182
}
184183
} else {
185184
elementContent = (
186-
//@ts-expect-error Types for this are currently not consistent
187185
<BSONValue type={element.currentType} value={element.currentValue} />
188186
);
189187
}
@@ -204,7 +202,14 @@ const CellContent: React.FC<CellContentProps> = ({
204202
</div>
205203
</div>
206204
);
207-
}, [element, elementLength, cellState]);
205+
// eslint-disable-next-line react-hooks/exhaustive-deps
206+
}, [
207+
element,
208+
element?.currentType,
209+
element?.currentValue,
210+
elementLength,
211+
cellState,
212+
]);
208213

209214
const canUndo =
210215
cellState === ADDED ||
@@ -355,22 +360,18 @@ const CellRenderer: React.FC<CellRendererProps> = ({
355360
// `ag-grid` renders this component outside of the context chain
356361
// so we re-supply the dark mode theme here.
357362
<LeafyGreenProvider darkMode={darkMode}>
358-
<div>
359-
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus*/}
360-
<div
361-
className={
362-
cellState === VALID ? BEM_BASE : `${BEM_BASE}-${cellState}`
363-
}
364-
onClick={handleClicked}
365-
role="button"
366-
>
367-
<CellContent
368-
element={element}
369-
cellState={cellState}
370-
onUndo={handleUndo}
371-
onExpand={handleDrillDown}
372-
/>
373-
</div>
363+
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/interactive-supports-focus*/}
364+
<div
365+
className={cellState === VALID ? BEM_BASE : `${BEM_BASE}-${cellState}`}
366+
onClick={handleClicked}
367+
role="button"
368+
>
369+
<CellContent
370+
element={element}
371+
cellState={cellState}
372+
onUndo={handleUndo}
373+
onExpand={handleDrillDown}
374+
/>
374375
</div>
375376
</LeafyGreenProvider>
376377
);

0 commit comments

Comments
 (0)