CssClassSwitcher

Content Type: Widget
Categories: User Interface

Overview

This widget adds CSS classes determined by a microflow (or nanoflow) to elements determined by CSS selector. It's useful in applications that need to determine styling based on arbitrary logic and change it dynamically in runtime: An example may be a multi-tenant app with different styling for different brands, depending on settings of the current user. Another use case would be to allow your users to choose between multiple theme or skins for your application, depending on their preferences. You can also improve accessibility by switching to styling with e.g. bigger fonts and cleaner layout with less distractions for users with visual or cognitive impairments.

Documentation

Css Class Switcher

A Mendix widget that adds CSS classes determined by a microflow (or nanoflow) to elements determined by CSS selector.

Typical usage scenario

It's useful in applications that need to determine styling based on arbitrary logic and change it dynamically in runtime:

  • An example may be a multi-tenant app with different styling for different brands, depending on settings of the current user.
  • Another use case would be to allow your users to choose between multiple theme or skins for your application, depending on their preferences.
  • You can also improve accessibility by switching to styling with e.g. bigger fonts and cleaner layout with less distractions for users with visual or cognitive impairments.

Example application

Here you can find a simple yet beautiful sample app that switches its styling between light and dark depending on current user theme stored in Account entity.

(And here is the same app for Mendix 8.)

Usage

Place the widget inside your app and provide the following settings:

  • Microflow: A microflow that has no parameters and returns a string with CSS classes that should be added to target elements. Multiple classes can be seperated with a space.
  • Nanoflow: Alternatively, you can use a nanoflow instead of microflow - as above.
  • Target element selector: Optional CSS selector of target elements to add the classes to. If empty, the parent element of the widget will be used.
  • CSS classes to remove: Optional CSS classes to be removed from the target elements. Multiple classes can be seperated with a space.

Inspired by / thanks to

Releases

Version: 1.1.3
Framework Version: 7.23.4
Release Notes: Test/sample app for Mendix 8 added.
Version: 1.1.2
Framework Version: 7.23.4
Release Notes: Docs updated + test/sample app replaced by a beautiful one :)
Version: 1.1.1
Framework Version: 7.23.4
Release Notes: Cross-browser fix (Internet Explorer issue fixed).
Version: 1.1.0
Framework Version: 7.23.4
Release Notes: Nanoflows support added (now you can also a microflow OR A NANOFLOW to determine the CSS class)
Version: 1.0.1
Framework Version: 7.23.4
Release Notes: Changed used Client API due to deprecations in Mendix 8.0: mx.ui.action => mx.data.action https://docs.mendix.com/releasenotes/studio-pro/8.0#deprecations