UNPKG

@openui5/sap.ui.core

Version:

OpenUI5 Core Library sap.ui.core

162 lines (148 loc) 4.83 kB
/*! * OpenUI5 * (c) Copyright 2026 SAP SE or an SAP affiliate company. * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. */ // Provides module sap/ui/core/ControlBehavior sap.ui.define([ "sap/base/config", "sap/base/Eventing", "sap/ui/core/AnimationMode" ], ( BaseConfig, Eventing, AnimationMode ) => { "use strict"; const oWritableConfig = BaseConfig.getWritableInstance(); const oEventing = new Eventing(); /** * Provides control behavior relevant configuration options * * @namespace * @alias module:sap/ui/core/ControlBehavior * @public * @since 1.120 */ const ControlBehavior = { /** * The <code>change</code> event is fired, when the configuration options are changed. * * @name module:sap/ui/core/ControlBehavior.change * @event * @type {module:sap/ui/core/ControlBehavior$ChangeEvent} * @private * @ui5-restricted sap.ui.core * @since 1.116.0 */ /** * The theme scoping change Event. * * @typedef {object} module:sap/ui/core/ControlBehavior$ChangeEvent * @property {string} animationMode Whether the animation mode should be active or not. * @private * @ui5-restricted sap.ui.core.theming.ThemeManager * @since 1.116.0 */ /** * Attaches the <code>fnFunction</code> event handler to the {@link #event:change change} event * of <code>sap/ui/core/ControlBehavior</code>. * * When called, the context of the event handler (its <code>this</code>) will be bound to * <code>oListener</code> if specified, otherwise it will be bound to this * <code>sap/ui/core/ControlBehavior</code> itself. * * @param {function(module:sap/ui/core/ControlBehavior$ChangeEvent)} fnFunction * The function to be called when the event occurs * @private * @ui5-restricted sap.ui.core * @since 1.116.0 */ attachChange: (fnFunction) => { oEventing.attachEvent("change", fnFunction); }, /** * Detaches event handler <code>fnFunction</code> from the {@link #event:change change} event of * this <code>sap/ui/core/ControlBehavior</code>. * * @param {function(module:sap/ui/core/ControlBehavior$ChangeEvent)} fnFunction Function to be called when the event occurs * @private * @ui5-restricted sap.ui.core * @since 1.116.0 */ detachChange: (fnFunction) => { oEventing.detachEvent("change", fnFunction); }, /** * Returns whether the accessibility mode is enabled or not. * @return {boolean} whether the accessibility mode is enabled or not * @public * @since 1.120 */ isAccessibilityEnabled: () => { return oWritableConfig.get({ name: "sapUiAccessibility", type: BaseConfig.Type.Boolean, defaultValue: true, external: true }); }, /** * Returns the current animation mode. * * @return {module:sap/ui/core/AnimationMode} The current animationMode * @public * @since 1.120 */ getAnimationMode: () => { /** * "animation" option is deprecated as of 1.50 * @ui5-transform-hint replace-local undefined */ const sOldAnimationMode = oWritableConfig.get({ name: "sapUiAnimation", type: BaseConfig.Type.Boolean, defaultValue: undefined, external: true }) === false ? AnimationMode.minimal : undefined; return oWritableConfig.get({ name: "sapUiAnimationMode", type: AnimationMode, defaultValue: sOldAnimationMode ?? AnimationMode.full, external: true }); }, /** * Sets the current animation mode. * * Expects an animation mode as string and validates it. If a wrong animation mode was set, an error is * thrown. If the mode is valid it is set, then the attributes <code>data-sap-ui-animation</code> and * <code>data-sap-ui-animation-mode</code> of the HTML document root element are also updated. * If the <code>animationMode</code> is <code>AnimationMode.none</code> the old * <code>animation</code> property is set to <code>false</code>, otherwise it is set to <code>true</code>. * * @param {module:sap/ui/core/AnimationMode} sAnimationMode A valid animation mode * @throws {Error} If the provided <code>sAnimationMode</code> does not exist, an error is thrown * @public * @since 1.120 */ setAnimationMode: (sAnimationMode) => { BaseConfig._.checkEnum(AnimationMode, sAnimationMode, "animationMode"); const sOldAnimationMode = oWritableConfig.get({ name: "sapUiAnimationMode", type: AnimationMode, defaultValue: undefined, external: true }); // Set the animation mode and update html attributes. oWritableConfig.set("sapUiAnimationMode", sAnimationMode); if (sOldAnimationMode != sAnimationMode) { fireChange({animationMode: sAnimationMode}); } } }; function fireChange(mChanges) { oEventing.fireEvent("change", mChanges); } return ControlBehavior; });