Skip to content

Commit f731d0d

Browse files
authored
Add support for a configurable editor bloom (#885)
1 parent b9b8b2f commit f731d0d

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

packages/core/src/data-editor/data-editor.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,6 +628,8 @@ export interface DataEditorProps extends Props, Pick<DataGridSearchProps, "image
628628
* Controls if focus will trap inside the data grid when doing tab and caret navigation.
629629
*/
630630
readonly trapFocus?: boolean;
631+
632+
readonly editorBloom?: readonly [number, number];
631633
}
632634

633635
type ScrollToFn = (
@@ -722,6 +724,7 @@ const DataEditorImpl: React.ForwardRefRenderFunction<DataEditorRef, DataEditorPr
722724
coercePasteValue,
723725
drawHeader: drawHeaderIn,
724726
drawCell: drawCellIn,
727+
editorBloom,
725728
onHeaderClicked,
726729
onColumnProposeMove,
727730
spanRangeBehavior = "default",
@@ -3953,6 +3956,7 @@ const DataEditorImpl: React.ForwardRefRenderFunction<DataEditorRef, DataEditorPr
39533956
<DataGridOverlayEditor
39543957
{...overlay}
39553958
validateCell={validateCell}
3959+
bloom={editorBloom}
39563960
id={overlayID}
39573961
getCellRenderer={getCellRenderer}
39583962
className={experimental?.isSubGrid === true ? "click-outside-ignore" : undefined}

packages/core/src/internal/data-grid-overlay-editor/data-grid-overlay-editor-style.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ export const DataGridOverlayEditorStyle = styled.div<Props>`
1616
1717
--overlay-top: ${p => p.targetY}px;
1818
19-
left: ${p => p.targetX - 1}px;
20-
top: ${p => p.targetY - 1}px;
21-
min-width: ${p => p.targetWidth + 2}px;
22-
min-height: ${p => p.targetHeight + 2}px;
19+
left: ${p => p.targetX}px;
20+
top: ${p => p.targetY}px;
21+
min-width: ${p => p.targetWidth}px;
22+
min-height: ${p => p.targetHeight}px;
2323
width: max-content;
2424
max-width: 400px;
2525
max-height: calc(100vh - ${p => p.targetY + 10}px);
@@ -41,7 +41,9 @@ export const DataGridOverlayEditorStyle = styled.div<Props>`
4141
border-radius: 2px;
4242
background-color: var(--gdg-bg-cell);
4343
44-
box-shadow: 0 0 0 1px var(--gdg-accent-color), 0px 0px 1px rgba(62, 65, 86, 0.4),
44+
box-shadow:
45+
0 0 0 1px var(--gdg-accent-color),
46+
0px 0px 1px rgba(62, 65, 86, 0.4),
4547
0px 6px 12px rgba(62, 65, 86, 0.15);
4648
4749
animation: glide_fade_in 60ms 1;

packages/core/src/internal/data-grid-overlay-editor/data-grid-overlay-editor.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ interface DataGridOverlayEditorProps {
2929
readonly className?: string;
3030
readonly id: string;
3131
readonly initialValue?: string;
32+
readonly bloom?: readonly [number, number];
3233
readonly theme: Theme;
3334
readonly onFinishEditing: (newCell: GridCell | undefined, movement: readonly [-1 | 0 | 1, -1 | 0 | 1]) => void;
3435
readonly forceEditMode: boolean;
@@ -59,6 +60,7 @@ const DataGridOverlayEditor: React.FunctionComponent<DataGridOverlayEditorProps>
5960
theme,
6061
id,
6162
cell,
63+
bloom,
6264
validateCell,
6365
getCellRenderer,
6466
provideEditor,
@@ -207,6 +209,9 @@ const DataGridOverlayEditor: React.FunctionComponent<DataGridOverlayEditorProps>
207209
classWrap += " gdg-pad";
208210
}
209211

212+
const bloomX = bloom?.[0] ?? 1;
213+
const bloomY = bloom?.[1] ?? 1;
214+
210215
return createPortal(
211216
<ThemeContext.Provider value={theme}>
212217
<ClickOutsideContainer
@@ -220,10 +225,10 @@ const DataGridOverlayEditor: React.FunctionComponent<DataGridOverlayEditorProps>
220225
className={classWrap}
221226
style={styleOverride}
222227
as={useLabel === true ? "label" : undefined}
223-
targetX={target.x}
224-
targetY={target.y}
225-
targetWidth={target.width}
226-
targetHeight={target.height}>
228+
targetX={target.x - bloomX}
229+
targetY={target.y - bloomY}
230+
targetWidth={target.width + bloomX * 2}
231+
targetHeight={target.height + bloomY * 2}>
227232
<div className="gdg-clip-region" onKeyDown={onKeyDown}>
228233
{editor}
229234
</div>

0 commit comments

Comments
 (0)