diff options
Diffstat (limited to 'vendor/oojs/oojs-ui/src/Theme.js')
-rw-r--r-- | vendor/oojs/oojs-ui/src/Theme.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/vendor/oojs/oojs-ui/src/Theme.js b/vendor/oojs/oojs-ui/src/Theme.js new file mode 100644 index 00000000..92de72ed --- /dev/null +++ b/vendor/oojs/oojs-ui/src/Theme.js @@ -0,0 +1,48 @@ +/** + * Theme logic. + * + * @abstract + * @class + * + * @constructor + * @param {Object} [config] Configuration options + */ +OO.ui.Theme = function OoUiTheme( config ) { + // Configuration initialization + config = config || {}; +}; + +/* Setup */ + +OO.initClass( OO.ui.Theme ); + +/* Methods */ + +/** + * Get a list of classes to be applied to a widget. + * + * The 'on' and 'off' lists combined MUST contain keys for all classes the theme adds or removes, + * otherwise state transitions will not work properly. + * + * @param {OO.ui.Element} element Element for which to get classes + * @return {Object.<string,string[]>} Categorized class names with `on` and `off` lists + */ +OO.ui.Theme.prototype.getElementClasses = function ( /* element */ ) { + return { on: [], off: [] }; +}; + +/** + * Update CSS classes provided by the theme. + * + * For elements with theme logic hooks, this should be called any time there's a state change. + * + * @param {OO.ui.Element} element Element for which to update classes + * @return {Object.<string,string[]>} Categorized class names with `on` and `off` lists + */ +OO.ui.Theme.prototype.updateElementClasses = function ( element ) { + var classes = this.getElementClasses( element ); + + element.$element + .removeClass( classes.off.join( ' ' ) ) + .addClass( classes.on.join( ' ' ) ); +}; |