X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fcontextual%2Fjs%2Fviews%2FRegionView.es6.js;fp=web%2Fcore%2Fmodules%2Fcontextual%2Fjs%2Fviews%2FRegionView.es6.js;h=c1d3e8fe379c50bf74e30af9d86335c058dfa0ce;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hp=0000000000000000000000000000000000000000;hpb=aea91e65e895364e460983b890e295aa5d5540a5;p=yaffs-website diff --git a/web/core/modules/contextual/js/views/RegionView.es6.js b/web/core/modules/contextual/js/views/RegionView.es6.js new file mode 100644 index 000000000..c1d3e8fe3 --- /dev/null +++ b/web/core/modules/contextual/js/views/RegionView.es6.js @@ -0,0 +1,55 @@ +/** + * @file + * A Backbone View that renders the visual view of a contextual region element. + */ + +(function (Drupal, Backbone, Modernizr) { + Drupal.contextual.RegionView = Backbone.View.extend(/** @lends Drupal.contextual.RegionView# */{ + + /** + * Events for the Backbone view. + * + * @return {object} + * A mapping of events to be used in the view. + */ + events() { + let mapping = { + mouseenter() { + this.model.set('regionIsHovered', true); + }, + mouseleave() { + this.model.close().blur().set('regionIsHovered', false); + }, + }; + // We don't want mouse hover events on touch. + if (Modernizr.touchevents) { + mapping = {}; + } + return mapping; + }, + + /** + * Renders the visual view of a contextual region element. + * + * @constructs + * + * @augments Backbone.View + */ + initialize() { + this.listenTo(this.model, 'change:hasFocus', this.render); + }, + + /** + * @inheritdoc + * + * @return {Drupal.contextual.RegionView} + * The current contextual region view. + */ + render() { + this.$el.toggleClass('focus', this.model.get('hasFocus')); + + return this; + }, + + }); +}(Drupal, Backbone, Modernizr));