# AG Grid Enterprise Rich Cell Select Editor

**URL:** <https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356>\
**Category:** Dash Python\
**Tags:** tips-and-tricks\
**Created:** [February 14, 2024, 4:57pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356 "2024-02-14T16:57:10Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![AnnMarieW](https://avatars.discourse-cdn.com/v4/letter/a/ec9cab/32.png) [@AnnMarieW](https://community.plotly.com/u/AnnMarieW)\
**Post date:** [February 14, 2024, 4:57pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/1 "2024-02-14T16:57:10Z")

</div>

This question was asked on GitHub, so I’m posting it here to make it easier to find. This isn’t in the Dash AG Grid docs yet, but it’s available in Dash AG Grid \>= 31.0.0

Note that the Rich Select Cell Editor is an AG Grid Enterprise feature. Find out more information on AG Grid Licensing and pricing in the AG Grid Doc.

Note that the cool color cell renderer (and many many other great features) ares available in the **Free** AG Grid Community version 🙂

> **[AG Grid: Licence and Pricing](https://ag-grid.com/license-pricing/)**
>
> View licence and pricing details for AG Grid. Compare features in AG Grid Community vs. Enterprise. Purchase AG Grid Bundle for a discount Grid & Charts licences.

> **[React Grid: Rich Select Cell Editor | AG Grid](https://www.ag-grid.com/react-data-grid/provided-cell-editors-rich-select/#allow-typing)**
>
> An alternative to using the browser's select popup for dropdowns inside the grid. Download AG Grid v34.3.1 today: The best React Table & React Data Grid in the world.

# Rich Select Cell Editor

## An AG Grid Enterprise Feature

An alternative to using the browser’s `select` popup for dropdowns inside the grid.

The Rich Select Cell Editor allows users to enter a cell value from a list of provided values by searching or filtering the list.

### Allow Typing

The editor input can be configured to allow text input, which is used to match different parts of the editor list items as shown below:  
 ![ag-grid-rich-cell-select](https://us1.discourse-cdn.com/flex024/uploads/plot/original/3X/4/6/46f0cc54d1fcca0625dfa1c91924017bbe264743.gif)

```auto

from dash import Dash, html
import dash_ag_grid as dag
import pandas as pd

app = Dash( __name__ )

colors = [
  'AliceBlue',
  'AntiqueWhite',
  'Aqua',
  'Aquamarine',
  'Azure',
  'Beige',
  'Bisque',
  'Black',
  'BlanchedAlmond',
  'Blue',
  'BlueViolet',
  'Brown',
  'BurlyWood',
  'CadetBlue',
  'Chartreuse',
  'Chocolate',
  'Coral',
  'CornflowerBlue',
  'Cornsilk',
  'Crimson',
  'Cyan',
  'DarkBlue',
  'DarkCyan',
  'DarkGoldenrod',
  'DarkGray',
  'DarkGreen',
  'DarkGrey',
  'DarkKhaki',
  'DarkMagenta',
  'DarkOliveGreen',
  'DarkOrange',
  'DarkOrchid',
  'DarkRed',
  'DarkSalmon',
  'DarkSeaGreen',
  'DarkSlateBlue',
  'DarkSlateGray',
  'DarkSlateGrey',
  'DarkTurquoise',
  'DarkViolet',
  'DeepPink',
  'DeepSkyBlue',
  'DimGray',
  'DodgerBlue',
  'FireBrick',
  'FloralWhite',
  'ForestGreen',
  'Fuchsia',
  'Gainsboro',
  'GhostWhite',
  'Gold',
  'Goldenrod',
  'Gray',
  'Green',
  'GreenYellow',
  'Grey',
  'Honeydew',
  'HotPink',
  'IndianRed',
  'Indigo',
  'Ivory',
  'Khaki',
  'Lavender',
  'LavenderBlush',
  'LawnGreen',
  'LemonChiffon',
  'LightBlue',
  'LightCoral',
  'LightCyan',
  'LightGoldenrodYellow',
  'LightGray',
  'LightGreen',
  'LightGrey',
  'LightPink',
  'LightSalmon',
  'LightSeaGreen',
  'LightSkyBlue',
  'LightSlateGray',
  'LightSlateGrey',
  'LightSteelBlue',
  'LightYellow',
  'Lime',
  'LimeGreen',
  'Linen',
  'Magenta',
  'Maroon',
  'MediumAquamarine',
  'MediumBlue',
  'MediumOrchid',
  'MediumPurple',
  'MediumSeaGreen',
  'MediumSlateBlue',
  'MediumSpringGreen',
  'MediumTurquoise',
  'MediumVioletRed',
  'MidnightBlue',
  'MintCream',
  'MistyRose',
  'Moccasin',
  'NavajoWhite',
  'Navy',
  'OldLace',
  'Olive',
  'OliveDrab',
  'Orange',
  'OrangeRed',
  'Orchid',
  'PaleGoldenrod',
  'PaleGreen',
  'PaleTurquoise',
  'PaleVioletRed',
  'PapayaWhip',
  'PeachPuff',
  'Peru',
  'Pink',
  'Plum',
  'PowderBlue',
  'Purple',
  'Rebeccapurple',
  'Red',
  'RosyBrown',
  'RoyalBlue',
  'SaddleBrown',
  'Salmon',
  'SandyBrown',
  'SeaGreen',
  'Seashell',
  'Sienna',
  'Silver',
  'SkyBlue',
  'SlateBlue',
  'SlateGray',
  'SlateGrey',
  'Snow',
  'SpringGreen',
  'SteelBlue',
  'Tan',
  'Teal',
  'Thistle',
  'Tomato',
  'Turquoise',
  'Violet',
  'Wheat',
  'White',
  'WhiteSmoke',
  'Yellow',
  'YellowGreen',
]
df = pd.DataFrame({"color": colors})

columnDefs = [
  {
    'headerName': 'Allow Typing (Match)',
    'field': 'color',
    'cellRenderer': 'ColourCellRenderer',
    'cellEditor': 'agRichSelectCellEditor',
    'cellEditorParams': {
      'values': colors,
      'searchType': 'match',
      'allowTyping': True,
      'filterList': True,
      'highlightMatch': True,
      'valueListMaxHeight': 220,
    },
  },
  {
    'headerName': 'Allow Typing (MatchAny)',
    'field': 'color',
    'cellRenderer': 'ColourCellRenderer',
    'cellEditor': 'agRichSelectCellEditor',
    'cellEditorParams': {
      'values': colors,
      'searchType': 'matchAny',
      'allowTyping': True,
      'filterList': True,
      'highlightMatch': True,
      'valueListMaxHeight': 220,
    },
  }
]

app.layout = html.Div(
    [
        dag.AgGrid(
            enableEnterpriseModules=True,
        # licenseKey = Your license key here
            columnDefs=columnDefs,
            defaultColDef={"editable": True},
            rowData=df.to_dict('records'),
            columnSize="sizeToFit",
            dashGridOptions={"animateRows": False}
        ),
    ]
)

if __name__ == " __main__":
    app.run(debug=True)

"""
Add the following to the dashAgGridComponentFunctions.js file in the assets folder:

 var dagcomponentfuncs = (window.dashAgGridComponentFunctions =
    window.dashAgGridComponentFunctions || {});

 dagcomponentfuncs.ColourCellRenderer = (props) => {
  
  const styles = {
    verticalAlign: "middle",
    border: "1px solid black",
    margin: 3,
    display: "inline-block",
    width: 20,
    height: 10,
    backgroundColor: props.value.toLowerCase(),
  };
  return React.createElement("div", {}, [
    React.createElement("span", { style: styles }),
    React.createElement("span", {}, props.value),
  ]);
};

"""

```

dag-docs

---

<div class="post-metadata">

**Author:** ![davy.datascience](https://avatars.discourse-cdn.com/v4/letter/d/7bcc69/32.png) [@davy.datascience](https://community.plotly.com/u/davy.datascience)\
**Post date:** [March 26, 2024, 4:37pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/2 "2024-03-26T16:37:34Z")

</div>

Hello @AnnMarieW  
I’ve managed to allow typing on a select cell editor, while setting hardcoded values on the python-side, as you did in your example:

```auto
'cellEditorParams': {
      'values': colors,

```

But when I am trying to achieve the same while using a JS function, I can’t manage to make it work:

```auto
'cellEditorParams': {
    'headerName': 'Allow Typing (MatchAny)',
    'field': 'my_field',
    'function': 'myCustomJSFunction(params.data.my_custom_data_col)',
    'searchType': 'matchAny',
    'allowTyping': True,
    'filterList': True,
    'highlightMatch': True
}

```

Is it yet possible to combine typing and generate cell possible values through a JS function?

Thank you  
Davy

---

<div class="post-metadata">

**Author:** ![AnnMarieW](https://avatars.discourse-cdn.com/v4/letter/a/ec9cab/32.png) [@AnnMarieW](https://community.plotly.com/u/AnnMarieW)\
**Post date:** [March 26, 2024, 5:00pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/3 "2024-03-26T17:00:37Z")

</div>

Hi @davy.datascience

You should be able to use a JS function. but it would probably need to look something like

```auto
'cellEditorParams': {
      'values': {"function": "myCustomJSFunction(params)"}

```

If that doesn’t work could you provide a complete minimal example with some sample data?

---

<div class="post-metadata">

**Author:** ![davy.datascience](https://avatars.discourse-cdn.com/v4/letter/d/7bcc69/32.png) [@davy.datascience](https://community.plotly.com/u/davy.datascience)\
**Post date:** [March 27, 2024, 11:14am UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/4 "2024-03-27T11:14:52Z")

</div>

Hi @AnnMarieW

Thanks for your fast reply.

I still do not manage to make it work. Here I’ve build a minimal example of dropdown options with JS working without the free text typing:

```auto
from dash import Dash, html
import dash_ag_grid as dag
import pandas as pd

app = Dash( __name__ )

df = pd.DataFrame(
    {
        "color": ["red", "blue", "yellow"],
        "color_options": [["red", "blue"], ["blue", "brown"], ["yellow", "orange"]]
    }
)
    
columns_def = [
    {"headerName": "ID", "field": "id", "editable": False, "type": "rightAligned"},
    {
        "headerName": "color",
        "field": "color",
        "cellEditor": "agRichSelectCellEditor",
        "cellEditorPopup": True,
        "cellEditorParams": {"function": "getColorOptions(params.data.color_options)"},
        "filter": "agSetColumnFilter"
    }
]

app.layout = html.Div(
    [
        dag.AgGrid(
        	id="activity-table",
        	getRowId="params.data.id",
        	rowData=df.to_dict("records"),
        	columnDefs=columns_def,
        	columnSize="autoSize",
        	columnSizeOptions={"keys": []},
        	defaultColDef={
        	    "editable": True,
        	    "resizable": True,
        	    "sortable": True,
        	    "floatingFilter": True,
        	    "suppressMovable": True,
        	    "menuTabs": ["filterMenuTab", "columnsMenuTab"],
        	},
        	dashGridOptions={
        	    "rowSelection": "multiple",
        	    "singleClickEdit": False,
        	    "enableRangeSelection": True,
        	    "enableFillHandle": True,
        	    "undoRedoCellEditing": True,
        	    "stopEditingWhenCellsLoseFocus": True,
        	    "tooltipShowDelay": 100,
        	},
        	enableEnterpriseModules=True,
        	# licenseKey= Your license key here
        	style={"height": "1000px"},
        ),
    ]
)

```

But when I try to implement the free text typing it doesn’t work at all:

```auto
from dash import Dash, html
import dash_ag_grid as dag
import pandas as pd

app = Dash( __name__ )

df = pd.DataFrame(
    {
        "color": ["red", "blue", "yellow"],
        "color_options": [["red", "blue"], ["blue", "brown"], ["yellow", "orange"]]
    }
)

columns_def = [
    {"headerName": "ID", "field": "id", "editable": False, "type": "rightAligned"},
    {
        "headerName": "color",
        "field": "color",
        "cellEditor": "agRichSelectCellEditor",
        "cellEditorPopup": True,
        'cellEditorParams': {
            'values': {"function": "getColorOptions(params.data.color_options)"},
            'searchType': 'matchAny',
            'allowTyping': True,
            'filterList': True,
            'highlightMatch': True,
            'valueListMaxHeight': 220,
        },
        "filter": "agSetColumnFilter"
    }
]

app.layout = html.Div(
    [
        dag.AgGrid(
        	id="activity-table",
        	getRowId="params.data.id",
        	rowData=df.to_dict("records"),
        	columnDefs=columns_def,
        	columnSize="autoSize",
        	columnSizeOptions={"keys": []},
        	defaultColDef={
        	    "editable": True,
        	    "resizable": True,
        	    "sortable": True,
        	    "floatingFilter": True,
        	    "suppressMovable": True,
        	    "menuTabs": ["filterMenuTab", "columnsMenuTab"],
        	},
        	dashGridOptions={
        	    "rowSelection": "multiple",
        	    "singleClickEdit": False,
        	    "enableRangeSelection": True,
        	    "enableFillHandle": True,
        	    "undoRedoCellEditing": True,
        	    "stopEditingWhenCellsLoseFocus": True,
        	    "tooltipShowDelay": 100,
        	},
        	enableEnterpriseModules=True,
        	# licenseKey= Your license key here
        	style={"height": "1000px"},
        ),
    ]
)

```

Here’s the JS code associated:

```auto
var dagfuncs = window.dashAgGridFunctions = window.dashAgGridFunctions || {};

dagfuncs.getColorOptions = function(colorOptions) {
    return {
        values: colorOptions,
    }
}

```

Thanks in advance

---

<div class="post-metadata">

**Author:** ![AnnMarieW](https://avatars.discourse-cdn.com/v4/letter/a/ec9cab/32.png) [@AnnMarieW](https://community.plotly.com/u/AnnMarieW)\
**Post date:** [March 27, 2024, 2:15pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/5 "2024-03-27T14:15:05Z")

</div>

Hi @davy.datascience

Oh, I see - providing a complete example is helpful.

Start with your first example and keep this the same (disregard my earlier answer)

```auto
 "cellEditorParams": {"function": "getColorOptions(params.data.color_options)"},

```

Then change the JS function to:

```auto

dagfuncs.getColorOptions = function(colorOptions) {
    return {
        values: colorOptions,
        allowTyping: true,
        filterList: true,
        highlightMatch: true,
    }
}

```

---

<div class="post-metadata">

**Author:** ![davy.datascience](https://avatars.discourse-cdn.com/v4/letter/d/7bcc69/32.png) [@davy.datascience](https://community.plotly.com/u/davy.datascience)\
**Post date:** [March 27, 2024, 5:02pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/6 "2024-03-27T17:02:59Z")

</div>

Thank you @AnnMarieW it works like a charm! 😃

---

<div class="post-metadata">

**Author:** ![yoann\_diep](https://avatars.discourse-cdn.com/v4/letter/y/a8b319/32.png) [@yoann\_diep](https://community.plotly.com/u/yoann_diep)\
**Post date:** [October 22, 2024, 5:05pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/7 "2024-10-22T17:05:24Z")

</div>

Hi @AnnMarieW ,

I’m having trouble to display the full list of options (using the valueListMaxHeight param).

You’ll find below the code as well as a screenshot of the issue:

```auto
***dashAgGridComponentsFunctions.js***
dagfuncs.getOptions = function(options) {

    return {
        values: options,
        allowTyping: true,
        filterList: true,
        highlightMatch: true,
        valueListMaxHeight: 500
    }
}

***column_def***
CORRECTION_DEFINED_DEF = custom_column_def(
    field=CORRECTION_DEFINED,
    header_name='Corrected Value (Defined Choice)',
    cell_style={
        'styleConditions': [
            {
                'condition': "params.data.column == 'Area'",
                'style': {'backgroundColor': 'grey'},
            },
            {
                'condition': "params.data.column != 'Area'",
                'style': {'backgroundColor': ECOACT_GREEN_LIGHT},
            },
        ],
    },
    cell_editor='agRichSelectCellEditor',
    cell_editor_params={'function': 'getOptions(params.data.options)',
                        'valueListMaxHeight': 300},
    editable={'function': "params.data.column != 'Area'"}
)

def custom_column_def(field: str,
                      header_name: Optional[str] = None,
                      width: Optional[int] = None,
                      dag_type: Optional[DagTypes] = None,
                      sortable: Optional[bool] = False,
                      editable: bool | Dict = False,
                      value_formatter: Optional[str] = None,
                      value_getter: Optional[str] = None,
                      cell_renderer: Optional[str] = None,
                      cell_renderer_params: Optional[Dict] = None,
                      cell_style: Optional[Dict] = None,
                      cell_editor: Optional[str] = None,
                      cell_editor_params: Optional[Dict] = None) -> Dict[str, Any]:
    """
    Creates a custom def dict
    """
    return {
        'field': field,
        'headerName': header_name or field.replace('_', ' ').title(),
        'width': width,
        'filter': DAG_FILTERS.get(dag_type, True), # type: ignore[arg-type]
        'sortable': sortable,
        'editable': editable,
        'type': DAG_TYPES.get(dag_type), # type: ignore[arg-type]
        'valueFormatter': get_value_formatter(dag_type, value_formatter),
        'valueGetter': {'function': value_getter},
        'filterValueGetter': {'function': "d3.timeParse('%d/%m/%Y')(params.data.date)"} if
        dag_type == DagTypes.DATE else None,
        'cellRenderer': cell_renderer,
        'cellRendererParams': cell_renderer_params,
        'tooltipField': field,
        'cellStyle': cell_style,
        'cellEditor': cell_editor,
        'cellEditorParams': cell_editor_params
    }

```

I can’t seem to be able to show more than one possible choice:

 ![image](https://us1.discourse-cdn.com/flex024/uploads/plot/original/3X/3/2/323e439a5082f4c4a14f31168b527106d6bc0146.png)

Could you please help me?  
Best,  
Yoann

---

<div class="post-metadata">

**Author:** ![AnnMarieW](https://avatars.discourse-cdn.com/v4/letter/a/ec9cab/32.png) [@AnnMarieW](https://community.plotly.com/u/AnnMarieW)\
**Post date:** [October 22, 2024, 7:24pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/8 "2024-10-22T19:24:07Z")

</div>

Hi @yoann_diep

Can you make a complete minimal example I can run that will reproduce the issue in the image?

Did you run the example app in the initial post? Does that work for you?

---

<div class="post-metadata">

**Author:** ![yoann\_diep](https://avatars.discourse-cdn.com/v4/letter/y/a8b319/32.png) [@yoann\_diep](https://community.plotly.com/u/yoann_diep)\
**Post date:** [October 23, 2024, 6:44am UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/9 "2024-10-23T06:44:04Z")

</div>

Sure, tell me if you need more

```auto
PAGE_ID = f"{'-'.join(DATA_VALIDATION.split('_'))}-{PAGE}"
layout = dmc.Container(id=PAGE_ID, fluid=True)

@callback(
    Output(PAGE_ID, CHILDREN),
    Input(TOKEN, DATA)
)
def render_data_validation_page(token: Dict) -> html.Div | List:
    """
    Renders the Data Validation page
    """
    page = dmc.Stack([
        html.Div(id=DATA_VALIDATION_DIV),
        dmc.LoadingOverlay(
            visible=False,
            id=DATA_VALIDATION_LOADING_OVERLAY,
            overlayProps={"radius": "sm", "blur": 2},
            zIndex=10,
        ),
    ])

    return page

@callback(
    Output(DATA_VALIDATION_DIV, CHILDREN),
    Input(PORTFOLIO_STORE, DATA),
    Input(YEAR_STORE, DATA),
    Input(SCENARIO_STORE, DATA),
    running=[(Output(DATA_VALIDATION_LOADING_OVERLAY, 'visible'), True, False)]
)
def render_data_validation_div(portfolio: str,
                               year: str,
                               scenario: str) -> dmc.Stack | None:
    """
    Renders the Data Validation tables
    """

    row_data = [{OPTIONS: ['Yes', 'No', 'Unknown']}]

    column_def = {'field': 'correction_defined', 'headerName': 'Corrected Value (Defined Choice)',
      'width': None, 'filter': True, 'sortable': False, 'editable': {'function': "params.data.column != 'Area'"}, 'type': None, 'valueFormatter': None, 'valueGetter': {'function': None}, 'filterValueGetter': None, 'cellRenderer': None, 'cellRendererParams': None, 'tooltipField': 'correction_defined', 'cellStyle': {'styleConditions': [{'condition': "params.data.column == 'Area'", 'style': {'backgroundColor': 'grey'}}, {'condition': "params.data.column != 'Area'", 'style': {'backgroundColor': '#bed1ad'}}]}, 'cellEditor':'agRichSelectCellEditor', 'cellEditorParams': {'function': 'getOptions(params.data.options)', 'valueListMaxHeight': 300}}

   default_col_def = {
        # make every column use 'text' filter by default
        # enable floating filters by default
        'floatingFilter': False,
        # make columns resizable
        'resizable': True,
        'sortable': True,
        'wrapHeaderText': True,
        'autoHeaderHeight': True,
        'wrapText': True,
        'autoHeight': False,
        # Make columns editable
        'editable': True,
        'filter': 'agSetColumnFilter',
        "suppressMovable": True,
        "menuTabs": ["filterMenuTab", "columnsMenuTab"],

    }
   row_style = {
        'styleConditions': [
            {
                'condition': 'params.node.rowIndex % 2 === 1',
                'style': {'backgroundColor': row_alternating_color},
            },
        ]
    }

   dash_grid_options = {
        'colResizeDefault': 'shift',
        'rowSelection': 'single',
        'headerHeight': 30,
        'groupHeaderHeight': 30,
        'pagination': True,
        'paginationPageSize': pagination_page_size,
        'suppressRowHoverHighlight': True,
        'animateRows': False
    }

    return dag.AgGrid(
        id='data-validation-table',
        enableEnterpriseModules=True,
        licenseKey=DAG_ENTERPRISE_AUTH.dag_license_key,
        columnDefs=column_def,
        rowData=row_data,
        defaultColDef=default_col_def,
        getRowStyle=row_style,
        columnSize='responsiveSizeToFit',
        dashGridOptions=dash_grid_options,
        className='ag-theme-material',
        persistence=True,
    )

```

---

<div class="post-metadata">

**Author:** ![yoann\_diep](https://avatars.discourse-cdn.com/v4/letter/y/a8b319/32.png) [@yoann\_diep](https://community.plotly.com/u/yoann_diep)\
**Post date:** [October 23, 2024, 6:49am UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/10 "2024-10-23T06:49:39Z")

</div>

I’ve tried the example app and I’m getting the same issue

 ![image](https://us1.discourse-cdn.com/flex024/uploads/plot/original/3X/b/1/b1542cc7e60233909ac594720dbcfd1dc41e5caa.png)

---

<div class="post-metadata">

**Author:** ![AnnMarieW](https://avatars.discourse-cdn.com/v4/letter/a/ec9cab/32.png) [@AnnMarieW](https://community.plotly.com/u/AnnMarieW)\
**Post date:** [October 23, 2024, 1:01pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/11 "2024-10-23T13:01:09Z")

</div>

I just tried the example and it worked fine. Are you using AG Grid Enterprise (license required)?  
What version of Dash AG Grid are you using?

 ![image](https://us1.discourse-cdn.com/flex024/uploads/plot/original/3X/3/9/399be5601382ffef7c4e60a95dfd588226b763c8.png)

Here’s a live example on PyCafe

> **[PyCafe - Dash - Example of agRichSelectCellEditor component in Dash AG Grid](https://py.cafe/amward/dash-ag-grid-agRichSelectCellEditor-example)**
>
> Create & Share Streamlit, Dash and Python Apps Online.

---

<div class="post-metadata">

**Author:** ![yoann\_diep](https://avatars.discourse-cdn.com/v4/letter/y/a8b319/32.png) [@yoann\_diep](https://community.plotly.com/u/yoann_diep)\
**Post date:** [October 23, 2024, 1:50pm UTC](https://community.plotly.com/t/ag-grid-enterprise-rich-cell-select-editor/82356/12 "2024-10-23T13:50:54Z")

</div>

I’ve upgraded my version of dash-ag-grid and it works now! Thanks!
