Skip to content

Commit c3f684c

Browse files
IEC1greptile-apps[bot]masenf
authored
Added dropdown-cell support for the data editor (#6139)
* Added dropdown-cell support * Ran pre-commit * Set allowOverlay/readonly based on editable Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Made custom_renderers optional * Update hash for dataeditor.pyi in pyi_hashes.json * Add extended_cell_types param to DataEditor.create * Update hash for dataeditor.pyi in pyi_hashes.json * Formatting --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Masen Furer <m_github@0x26.net>
1 parent 4c53848 commit c3f684c

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

packages/reflex-base/src/reflex_base/.templates/web/utils/helpers/dataeditor.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,20 @@ export function formatCell(value, column) {
4646
data: value,
4747
readonly: !editable,
4848
};
49+
case "dropdown":
50+
const cellValue = value ? String(value) : "";
51+
return {
52+
kind: GridCellKind.Custom,
53+
allowOverlay: editable,
54+
copyData: cellValue,
55+
displayData: cellValue,
56+
readonly: !editable,
57+
data: {
58+
kind: "dropdown-cell",
59+
allowedValues: (column.allowedValues || []).map((v) => String(v)),
60+
value: cellValue,
61+
},
62+
};
4963
default:
5064
console.log(
5165
"Warning: column.type is undefined for column.title=" + column.title,

packages/reflex-components-dataeditor/src/reflex_components_dataeditor/dataeditor.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from reflex_base.utils.imports import ImportDict, ImportVar
1515
from reflex_base.utils.serializers import serializer
1616
from reflex_base.vars import get_unique_variable_name
17-
from reflex_base.vars.base import Var
17+
from reflex_base.vars.base import Var, VarData
1818
from reflex_base.vars.function import FunctionStringVar
1919
from reflex_base.vars.sequence import ArrayVar
2020

@@ -395,6 +395,9 @@ class DataEditor(NoSSRComponent):
395395
doc="Fired when the search close button is clicked."
396396
)
397397

398+
# Custom cell renderers
399+
custom_renderers: Var[Any]
400+
398401
def add_imports(self) -> ImportDict:
399402
"""Add imports for the component.
400403
@@ -489,11 +492,12 @@ def add_hooks(self) -> list[str]:
489492
return ["\n".join(code)]
490493

491494
@classmethod
492-
def create(cls, *children, **props) -> Component:
495+
def create(cls, *children, extended_cell_types: bool = False, **props) -> Component:
493496
"""Create the DataEditor component.
494497
495498
Args:
496499
*children: The children of the data editor.
500+
extended_cell_types: Whether to enable extended cell types.
497501
**props: The props of the data editor.
498502
499503
Returns:
@@ -550,6 +554,18 @@ def create(cls, *children, **props) -> Component:
550554
"reconstructGridSelection"
551555
).call(grid_selection)
552556

557+
if extended_cell_types:
558+
props["custom_renderers"] = Var(
559+
"allCells",
560+
_var_data=VarData(
561+
imports={
562+
"@glideapps/glide-data-grid-cells@6.0.3": ImportVar(
563+
tag="allCells", is_default=False
564+
)
565+
}
566+
),
567+
)
568+
553569
grid = super().create(*children, **props)
554570
return Div.create(
555571
grid,

pyi_hashes.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"packages/reflex-components-core/src/reflex_components_core/el/elements/tables.pyi": "cba93678248925c981935a251379aa7c",
3838
"packages/reflex-components-core/src/reflex_components_core/el/elements/typography.pyi": "4abedc6f98f6d54194ff9e7f1f76314e",
3939
"packages/reflex-components-core/src/reflex_components_core/react_router/dom.pyi": "1074a512195ae23d479c4a2d553954e1",
40-
"packages/reflex-components-dataeditor/src/reflex_components_dataeditor/dataeditor.pyi": "07de150d57e16f66b62d66a94da98d74",
40+
"packages/reflex-components-dataeditor/src/reflex_components_dataeditor/dataeditor.pyi": "8e379fa038c7c6c0672639eb5902934d",
4141
"packages/reflex-components-gridjs/src/reflex_components_gridjs/datatable.pyi": "d2dc211d707c402eb24678a4cba945f7",
4242
"packages/reflex-components-lucide/src/reflex_components_lucide/icon.pyi": "3892ce64fef33649813a25f63c0ba43b",
4343
"packages/reflex-components-markdown/src/reflex_components_markdown/markdown.pyi": "da02f81678d920a68101c08fe64483a5",

0 commit comments

Comments
 (0)