A visual effect
Add fade, slide, zoom or hover effects with CSS classes. The animation stylesheet is included in Community.
Explore effects & CSSAdd animation to your app. Set it up for Web or OutSystems, then find the settings you need.
Use a class for a visual effect, enable motion on a supported component, or use an OutSystems Block to manage a panel or workspace.
The API tab lists the settings you see when you select an animation Block in Service Studio. Each entry explains its purpose, property types and defaults.
Open OutSystems Block settingsChoose your platform for setup instructions. The underlying effects are shared; the integration follows your platform’s lifecycle.
In Service Studio, reference the animation Blocks and Motion_* Client Actions from BluKavantUi_Community_Layout.
For CSS effects, place MotionProvider around your content and use a Container’s Style Classes or a Block’s ExtendedClass. For a supported component, set EnableMotion=True.
Keep MotionPreference="System". To match the demo, set UseDefaultMotionDuration=False and MotionDurationMs=750.
MotionContainer
EnableMotion = True
MotionPreference = "System"
UseDefaultMotionDuration = False
MotionDurationMs = 750
Effect = "slide-up"
ReplayKey = ReplayRevision
// ReplayRevision is a Text local variable.
// In your Replay button action, assign:
ReplayRevision = ReplayRevision + "1"Place your two views in WorkspaceTransition’s First and Second placeholders. Bind ActivePanel to your screen state. The content stays mounted so notes and selections can survive switching back.
Use FocusFallbackId for a visible focus destination when the active control would become hidden. OutSystems continues to handle navigation between screens.
Motion helpers and CSS ship inside Community. Also include the normal stylesheet for each component you use.
Use the motion component factories for supported components. Their existing options and events still apply.
Destroy the component instances before destroying their controller.
import '@blukavantui/community/motion.css';
import '@blukavantui/community/component-motion.css';
import { createMotionController } from '@blukavantui/community/motion';
import { createMotionComponents } from '@blukavantui/community/component-motion';
const screenRoot = document.querySelector('#your-screen');
const motion = createMotionController(screenRoot, 'system');
const ui = createMotionComponents(motion, { duration: 750 });
// Create supported components through ui, with their usual options/events.
// When the owning screen is removed:
ui.destroy();
motion.destroy();Licensed Pro motion is available through @blukavantui/pro/grid-motion, workflow-motion and advanced-motion. For charts, use a selective entry such as @blukavantui/charts-community/motion/line, or the corresponding licensed chart entry.
The examples target the prepared 1.2 packages. Public packages remain on their current release while this update is under review.
These are the properties you configure when you select an animation Block in Service Studio. Expand a Block to see its property names, types, defaults and usage.
UseDefaultMotionDuration=True uses the effect’s shared timing. Set it to False and enter MotionDurationMs=750 to match the playground. The stored duration input is 450 ms until you change it.
MotionProvider| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | True | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
MotionContainer| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
EffectText | "fade" | The effect name, such as fade or slide-up. |
ReplayKeyText | "" | Change this value to replay the effect; keep it stable during unrelated refreshes. |
OriginText | "center" | The point from which the effect transforms the content, such as center. |
PhaseText | "enter" | Choose the enter or exit phase of an effect. |
MotionVisibility| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
IsVisibleBoolean | True | Bind to the Boolean that controls whether the content is shown. |
EffectText | "fade" | The effect name, such as fade or slide-up. |
FocusFallbackIdText | "" | DOM Id of a visible focus destination when the currently focused content is hidden. Prefer a nearby trigger or heading. |
MotionCollapse| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
IsVisibleBoolean | True | Bind to the Boolean that controls whether the content is shown. |
FocusFallbackIdText | "" | DOM Id of a visible focus destination when the currently focused content is hidden. Prefer a nearby trigger or heading. |
AxisText | "height" | The dimension to animate. The default collapses the height. |
MotionReveal| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
EffectText | "fade" | The effect name, such as fade or slide-up. |
OnceBoolean | True | Reveal once when True; allow subsequent reveals when False. |
MotionStagger| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
EffectText | "fade" | The effect name, such as fade or slide-up. |
ReplayKeyText | "" | Change this value to replay the effect; keep it stable during unrelated refreshes. |
OrderText | "forward" | Optional setting for this effect. |
ColumnsInteger | 1 | Optional setting for this effect. |
GapMsInteger | 45 | Optional setting for this effect. |
WorkspaceTransition| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
EffectText | "fade" | The effect name, such as fade or slide-up. |
ActivePanelText | "First" | Choose First or Second to show the corresponding workspace placeholder. |
FocusFallbackIdText | "" | DOM Id of a visible focus destination when the currently focused content is hidden. Prefer a nearby trigger or heading. |
MotionFeedback| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
FeedbackText | "highlight" | Optional setting for this effect. |
ReplayKeyText | "" | Change this value to replay the effect; keep it stable during unrelated refreshes. |
MotionDecoration| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
DecorationText | "ripple" | Optional setting for this effect. |
IsActiveBoolean | False | Optional setting for this effect. |
PauseMotionBoolean | False | Pause the continuing effect while retaining the component content. |
LoopDurationMsInteger | 0 | Optional duration of a repeating decoration. Zero uses the foundation default. PauseMotion, Reduced and Off suppress continuing decorative movement. |
MotionIcon| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
IconKindText | "chevron" | Optional setting for this effect. |
IsActiveBoolean | False | Optional setting for this effect. |
MotionLoading| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
LoadingLabelText | "Loading" | Optional setting for this effect. |
LoadingVariantText | "Spinner" | Optional setting for this effect. |
UseProgressValueBoolean | False | Optional setting for this effect. |
ProgressValueDecimal | 0 | Optional setting for this effect. |
MotionPhotoZoom| Property | Default | What it does |
|---|---|---|
EnableMotionBoolean | False | Opt in to the 1.2 animation adapter for this instance. Existing component instances remain unchanged when False. MotionProvider itself defaults to True. |
MotionPreferenceText | "System" | System follows the operating-system reduced-motion preference. Reduced removes large movement and uses gentle opacity feedback. Off completes immediately. Do not override a user's reduced-motion preference. |
UseDefaultMotionDurationBoolean | True | True uses the shared effect timing. Set False to use MotionDurationMs. The demonstration pages explicitly use False and 750 ms. |
MotionDurationMsInteger | 450 | Duration override in milliseconds, used only when UseDefaultMotionDuration is False. The stored input default is 450; the 1.2 playground starts at 750 ms. |
MotionEasingText | "standard" | Motion easing name. Use standard, ease-in, ease-out or ease-in-out from the shared motion foundation. Unsupported values are validated by the adapter. |
ExtendedClassText | "" | Additional CSS classes applied to this Block. |
IsActiveBoolean | False | Optional setting for this effect. |
Call these from your screen’s action flow. Use the owning container’s DOM Id, and a target inside it when required. Check ErrorMessage before continuing.
Motion_Cancel| Property | Default | What it does |
|---|---|---|
OwnerIdText · Required | "" | The DOM Id of the motion container that owns the target. |
TargetIdText · Required | "" | The DOM Id of the target inside the owning motion container. |
| Output | Default | What it does |
|---|---|---|
ErrorMessageText | "" | Check for a reported error before continuing your action flow. |
Motion_Play| Property | Default | What it does |
|---|---|---|
OwnerIdText · Required | "" | The DOM Id of the motion container that owns the target. |
TargetIdText · Required | "" | The DOM Id of the target inside the owning motion container. |
EffectText | "fade" | The effect name, such as fade or slide-up. |
PhaseText | "enter" | Choose the enter or exit phase of an effect. |
| Output | Default | What it does |
|---|---|---|
OutcomeText | "" | The result reported by the play action. |
ErrorMessageText | "" | Check for a reported error before continuing your action flow. |
Motion_SetPreference| Property | Default | What it does |
|---|---|---|
OwnerIdText · Required | "" | The DOM Id of the motion container that owns the target. |
PreferenceText | "System" | System, Reduced or Off. System follows the device preference. |
| Output | Default | What it does |
|---|---|---|
ErrorMessageText | "" | Check for a reported error before continuing your action flow. |
Animation supports the interface. Labels, data, focus and action results remain available regardless of the motion setting.