diff --git a/src/lib/components/AgGrid.react.js b/src/lib/components/AgGrid.react.js index 829f23b7..ce2e1c3a 100644 --- a/src/lib/components/AgGrid.react.js +++ b/src/lib/components/AgGrid.react.js @@ -2,6 +2,7 @@ import PropTypes from 'prop-types'; import LazyLoader from '../LazyLoader'; import React, {lazy, Suspense, useState, useCallback, useEffect} from 'react'; import {AllCommunityModule, ModuleRegistry} from 'ag-grid-community'; +import {pick} from 'ramda'; // Register all community features ModuleRegistry.registerModules([AllCommunityModule]); @@ -13,6 +14,25 @@ function getGrid(enable) { return enable ? RealAgGridEnterprise : RealAgGrid; } +export const defaultProps = { + className: '', + resetColumnState: false, + exportDataAsCsv: false, + selectAll: false, + deselectAll: false, + enableEnterpriseModules: false, + updateColumnState: false, + persisted_props: ['selectedRows'], + persistence_type: 'local', + suppressDragLeaveHidesColumns: true, + dangerously_allow_code: false, + rowModelType: 'clientSide', + dashGridOptions: {}, + filterModel: {}, + paginationGoTo: null, + selectedRows: [], +}; + /** * Dash interface to AG Grid, a powerful tabular data component. */ @@ -49,31 +69,26 @@ function DashAgGrid(props) { return ( - + ); } +const REACT_VERSION_DASH2_COMPAT = 18.3; +if ( + parseFloat(React.version.substring(0, React.version.lastIndexOf('.'))) < + REACT_VERSION_DASH2_COMPAT +) { + DashAgGrid.defaultProps = defaultProps; +} else { + DashAgGrid.dashPersistence = pick( + ['persisted_props', 'persistence_type'], + defaultProps + ); +} + DashAgGrid.dashRenderType = true; -DashAgGrid.defaultProps = { - className: '', - resetColumnState: false, - exportDataAsCsv: false, - selectAll: false, - deselectAll: false, - enableEnterpriseModules: false, - updateColumnState: false, - persisted_props: ['selectedRows'], - persistence_type: 'local', - suppressDragLeaveHidesColumns: true, - dangerously_allow_code: false, - rowModelType: 'clientSide', - dashGridOptions: {}, - filterModel: {}, - paginationGoTo: null, - selectedRows: [], -}; DashAgGrid.propTypes = { /******************************** * DASH PROPS @@ -755,7 +770,6 @@ DashAgGrid.propTypes = { }; export const propTypes = DashAgGrid.propTypes; -export const defaultProps = DashAgGrid.defaultProps; export default DashAgGrid; diff --git a/src/lib/fragments/AgGrid.react.js b/src/lib/fragments/AgGrid.react.js index c3a4cafc..9ec0b4c3 100644 --- a/src/lib/fragments/AgGrid.react.js +++ b/src/lib/fragments/AgGrid.react.js @@ -15,11 +15,7 @@ import { assoc, assocPath, } from 'ramda'; -import { - propTypes as _propTypes, - defaultProps as _defaultProps, - apiGetters, -} from '../components/AgGrid.react'; +import {propTypes as _propTypes, apiGetters} from '../components/AgGrid.react'; import { COLUMN_DANGEROUS_FUNCTIONS, COLUMN_MAYBE_FUNCTIONS, @@ -1617,11 +1613,9 @@ export function DashAgGrid(props) { ); } -DashAgGrid.defaultProps = _defaultProps; DashAgGrid.propTypes = {parentState: PropTypes.any, ..._propTypes}; export const propTypes = DashAgGrid.propTypes; -export const defaultProps = DashAgGrid.defaultProps; var dagfuncs = (window.dash_ag_grid = window.dash_ag_grid || {}); dagfuncs.useGridFilter = useGridFilter; diff --git a/src/lib/utils/propCategories.js b/src/lib/utils/propCategories.js index 4a8f3008..6e857edd 100644 --- a/src/lib/utils/propCategories.js +++ b/src/lib/utils/propCategories.js @@ -323,6 +323,8 @@ export const PASSTHRU_PROPS = ['rowData']; */ export const PROPS_NOT_FOR_AG_GRID = [ 'children', + 'dashRenderType', + 'licenseKey', 'setProps', 'loading_state', 'enableEnterpriseModules', @@ -356,6 +358,7 @@ export const PROPS_NOT_FOR_AG_GRID = [ 'scrollTo', 'eventListeners', 'eventData', + 'paginationInfo', ]; /**