Quantcast
Channel: Developer Express Inc.
Viewing all articles
Browse latest Browse all 2370

DevExtreme - Custom Style Bundles (v19.2)

$
0
0

If you require optimized deployment sizes for DevExtreme applications, here is some great news: With our most recent release (v19.2), you can build custom CSS bundles for the widgets used by your application. Alternatively, widget-specific LESS files are available for import. This means you need to only deploy those styles used within your application (instead of the complete set included by default in previous releases).

CSS Bundles

Using the option –widgets for the build-theme command of DevExtreme CLI, you can specify a list of widgets to include when you build a bundle. For example, the following command line creates a bundle for the theme Material Blue Light, including only styles for the Data Grid and the Menu widgets (note that the command appears wrapped):

1
2
>devextremebuild-theme--base-theme=material.blue.light\
--version=19.2.3--widgets=datagrid,menu

It is also possible to specify the widgets parameter as a metadata option. Starting with v19.2, this approach is used by the DevExtreme application templates for Angular, Vue and React.

We will soon add a feature to the visual ThemeBuilder tool that allows selection of individual widgets.

LESS Imports

We now deliver LESS format files in the less folder of the installed devextreme package. You can use these files as they are, or import them in your own LESS files to create custom bundles. We don’t recommend that you modify our LESS files. Instead, please import them and override rules as required.

In addition to the theme-specific bundles in less/bundles, there are also per-component files in less/widgets. You can import these files individually to optimize your bundle. For example, here’s how to import only the Button style for the theme material.blue.light:

1
@import'devextreme/less/widgets/material.blue.light/dx.button.less';

Supported Widgets

As you see in the example above, widget names can be specified in lower case for ease of use. All HTML widgets are supported (please see this link about the different styling approaches for HTML- and SVG-based widgets).

Please note that we don’t supply LESS files for dx.common.css. You should import this file directly, like this:

1
@import(css)'devextreme/dist/css/dx.common.css';

Of course, an HTML style tag or an environment specific import mechanism (such as an entry in the styles section in angular.json) works as well.

Test It Today

Install the latest version of devextreme-cli (v1.1.8 at the time of writing):

1
>npminstall-gdevextreme-cli

Build a theme including specific widgets (note that the command appears wrapped):

1
2
>devextremebuild-theme--base-theme=material.blue.light\
--version=19.2.3--widgets=datagrid,menu

Depending on your options, bundle size will vary. Here are some sample sizes based on the Material Blue Light theme and v19.2.3:

WidgetsSize (bytes)
All640,977
Data Grid, Menu280,355
Scheduler414,878
Text Box, Date Box, Autocomplete, Tag Box213,400

Join the Webinar

Please join our v19.2 webinar, where you can learn about the features described above as well as all other v19.2 news.

Click this link to sign up for the webinar.


Viewing all articles
Browse latest Browse all 2370

Trending Articles