Skip to content

Commit 70251dd

Browse files
committed
Revert "Lazy load css for legacy themes"
This reverts commit e604f0c.
1 parent ff98be1 commit 70251dd

11 files changed

Lines changed: 42 additions & 162 deletions

File tree

dash_ag_grid/__init__.py

Lines changed: 0 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -67,66 +67,6 @@
6767
'external_url': f'{_unpkg}async-enterprise.js.map',
6868
'dynamic': True
6969
},
70-
{
71-
'relative_package_path': 'async-ag-grid-css.js',
72-
'namespace': package_name,
73-
'external_url': f'{_unpkg}async-ag-grid-css.js',
74-
'async': True
75-
},
76-
{
77-
'relative_package_path': 'async-ag-grid-css.js.map',
78-
'namespace': package_name,
79-
'external_url': f'{_unpkg}async-ag-grid-css.js.map',
80-
'dynamic': True
81-
},
82-
{
83-
'relative_package_path': 'async-ag-theme-alpine-css.js',
84-
'namespace': package_name,
85-
'external_url': f'{_unpkg}async-ag-theme-alpine-css.js',
86-
'async': True
87-
},
88-
{
89-
'relative_package_path': 'async-ag-theme-alpine-css.js.map',
90-
'namespace': package_name,
91-
'external_url': f'{_unpkg}async-ag-theme-alpine-css.js.map',
92-
'dynamic': True
93-
},
94-
{
95-
'relative_package_path': 'async-ag-theme-balham-css.js',
96-
'namespace': package_name,
97-
'external_url': f'{_unpkg}async-ag-theme-balham-css.js',
98-
'async': True
99-
},
100-
{
101-
'relative_package_path': 'async-ag-theme-balham-css.js.map',
102-
'namespace': package_name,
103-
'external_url': f'{_unpkg}async-ag-theme-balham-css.js.map',
104-
'dynamic': True
105-
},
106-
{
107-
'relative_package_path': 'async-ag-theme-material-css.js',
108-
'namespace': package_name,
109-
'external_url': f'{_unpkg}async-ag-theme-material-css.js',
110-
'async': True
111-
},
112-
{
113-
'relative_package_path': 'async-ag-theme-material-css.js.map',
114-
'namespace': package_name,
115-
'external_url': f'{_unpkg}async-ag-theme-material-css.js.map',
116-
'dynamic': True
117-
},
118-
{
119-
'relative_package_path': 'async-ag-theme-quartz-css.js',
120-
'namespace': package_name,
121-
'external_url': f'{_unpkg}async-ag-theme-quartz-css.js',
122-
'async': True
123-
},
124-
{
125-
'relative_package_path': 'async-ag-theme-quartz-css.js.map',
126-
'namespace': package_name,
127-
'external_url': f'{_unpkg}async-ag-theme-quartz-css.js.map',
128-
'dynamic': True
129-
},
13070
]
13171

13272
_css_dist = []

src/lib/components/AgGrid.react.js

Lines changed: 2 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
import PropTypes from 'prop-types';
22
import LazyLoader from '../LazyLoader';
3-
import React, {
4-
lazy,
5-
Suspense,
6-
useState,
7-
useCallback,
8-
useEffect,
9-
useMemo,
10-
} from 'react';
3+
import React, {lazy, Suspense, useState, useCallback, useEffect} from 'react';
114
import {AllCommunityModule, ModuleRegistry} from 'ag-grid-community';
125

136
// Register all community features
@@ -20,46 +13,6 @@ function getGrid(enable) {
2013
return enable ? RealAgGridEnterprise : RealAgGrid;
2114
}
2215

23-
// Base CSS loader - loads ag-grid.css
24-
const LegacyThemeBaseCSS = lazy(() =>
25-
import(
26-
/* webpackChunkName: "ag-grid-css" */ 'ag-grid-community/styles/ag-grid.css'
27-
).then(() => ({default: () => null}))
28-
);
29-
30-
// Theme-specific CSS loaders
31-
const LegacyThemeAlpineCSS = lazy(() =>
32-
import(
33-
/* webpackChunkName: "ag-theme-alpine-css" */ 'ag-grid-community/styles/ag-theme-alpine.css'
34-
).then(() => ({default: () => null}))
35-
);
36-
37-
const LegacyThemeBalhamCSS = lazy(() =>
38-
import(
39-
/* webpackChunkName: "ag-theme-balham-css" */ 'ag-grid-community/styles/ag-theme-balham.css'
40-
).then(() => ({default: () => null}))
41-
);
42-
43-
const LegacyThemeMaterialCSS = lazy(() =>
44-
import(
45-
/* webpackChunkName: "ag-theme-material-css" */ 'ag-grid-community/styles/ag-theme-material.css'
46-
).then(() => ({default: () => null}))
47-
);
48-
49-
const LegacyThemeQuartzCSS = lazy(() =>
50-
import(
51-
/* webpackChunkName: "ag-theme-quartz-css" */ 'ag-grid-community/styles/ag-theme-quartz.css'
52-
).then(() => ({default: () => null}))
53-
);
54-
55-
// Map themes to their CSS loaders
56-
const legacyThemeLoaderMap = {
57-
alpine: LegacyThemeAlpineCSS,
58-
balham: LegacyThemeBalhamCSS,
59-
material: LegacyThemeMaterialCSS,
60-
quartz: LegacyThemeQuartzCSS,
61-
};
62-
6316
/**
6417
* Dash interface to AG Grid, a powerful tabular data component.
6518
*/
@@ -94,52 +47,6 @@ function DashAgGrid(props) {
9447
const {enableEnterpriseModules} = props;
9548
const RealComponent = getGrid(enableEnterpriseModules);
9649

97-
const themeName = useMemo(() => {
98-
const themeMatch = props.className.match(
99-
/\bag-theme-([a-zA-Z0-9-]+)\b/
100-
);
101-
return themeMatch ? themeMatch[1] : null;
102-
}, [props.className]);
103-
104-
const shouldLoadLegacyCSS = useMemo(() => {
105-
// Only load legacy CSS if theme is 'legacy' or unset
106-
return (
107-
!('theme' in props.dashGridOptions) ||
108-
props.dashGridOptions.theme === 'legacy'
109-
);
110-
}, [props.dashGridOptions.theme]);
111-
112-
const LegacyThemeLoader = useMemo(() => {
113-
if (
114-
themeName &&
115-
shouldLoadLegacyCSS &&
116-
legacyThemeLoaderMap[themeName]
117-
) {
118-
return legacyThemeLoaderMap[themeName];
119-
}
120-
return null;
121-
}, [themeName, shouldLoadLegacyCSS]);
122-
123-
if (themeName && shouldLoadLegacyCSS && LegacyThemeLoader) {
124-
const dashGridOptions = {
125-
...props.dashGridOptions,
126-
theme: 'legacy',
127-
};
128-
return (
129-
<Suspense fallback={null}>
130-
<LegacyThemeBaseCSS />
131-
<LegacyThemeLoader />
132-
<Suspense fallback={null}>
133-
<RealComponent
134-
parentState={state}
135-
{...props}
136-
dashGridOptions={dashGridOptions}
137-
/>
138-
</Suspense>
139-
</Suspense>
140-
);
141-
}
142-
14350
return (
14451
<Suspense fallback={null}>
14552
<RealComponent parentState={state} {...props} />
@@ -150,7 +57,7 @@ function DashAgGrid(props) {
15057
DashAgGrid.dashRenderType = true;
15158

15259
DashAgGrid.defaultProps = {
153-
className: '',
60+
className: 'ag-theme-alpine',
15461
resetColumnState: false,
15562
exportDataAsCsv: false,
15663
selectAll: false,
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
This is a custom assets folder for `themes_legacy.py`. It is used to demonstrate
2+
how you can supply a legacy theme via a custom CSS file, along with the "legacy: True" option
3+
for dashGridOptions.

tests/examples/assets_legacy_themes/ag-grid.css

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/examples/assets_legacy_themes/ag-theme-alpine.min.css

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/examples/assets_legacy_themes/ag-theme-balham.min.css

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/examples/assets_legacy_themes/ag-theme-material.min.css

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/examples/assets_legacy_themes/ag-theme-quartz.min.css

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/examples/themes.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
{"label": "Alpine", "value": "themeAlpine"},
4747
{"label": "Custom Balham with red accent", "value": '{ "function": "themeBalham.withParams({ accentColor: \'red\' })"}'},
4848
{"label": "Invalid theme name", "value": "invalidTheme"},
49-
], value="", id="themeSelector"),
49+
], value="themeQuartz", id="themeSelector"),
5050
dag.AgGrid(
5151
id="grid",
5252
columnDefs=columnDefs,
@@ -61,7 +61,6 @@
6161
Output("grid", "dashGridOptions"),
6262
Input("themeSelector", "value"),
6363
State("grid", "dashGridOptions"),
64-
prevent_initial_call=True,
6564
)
6665
def addGrid(selected_theme, dash_grid_options):
6766
try:

tests/examples/themes_legacy.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
legacy theme in action.
88
"""
99

10-
app = Dash(__name__,)
10+
app = Dash(__name__, assets_folder="assets_legacy_themes/")
1111

1212
rowData = [
1313
{"weight": 0.074657, "date": "01/01/2024"},
@@ -17,8 +17,8 @@
1717
]
1818

1919
columnDefs = [
20-
{"field": "weight"},
21-
{"field": "date"},
20+
{"field": "weight", "cellDataType": "percentage"},
21+
{"field": "date", "cellDataType": "dateString"},
2222
]
2323

2424
app.layout = html.Div(
@@ -28,7 +28,8 @@
2828
columnDefs=columnDefs,
2929
rowData=rowData,
3030
defaultColDef={"filter": True, "editable": True},
31-
className="ag-theme-balham",
31+
dashGridOptions={"theme": "legacy"},
32+
className="ag-theme-material",
3233
),
3334
],
3435
)

0 commit comments

Comments
 (0)