Mercurial > hg > isophonics-drupal-site
view core/modules/contextual/js/toolbar/views/VisualView.es6.js @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 129ea1e6d783 |
children |
line wrap: on
line source
/** * @file * A Backbone View that provides the visual view of the edit mode toggle. */ (function(Drupal, Backbone) { Drupal.contextualToolbar.VisualView = Backbone.View.extend( /** @lends Drupal.contextualToolbar.VisualView# */ { /** * Events for the Backbone view. * * @return {object} * A mapping of events to be used in the view. */ events() { // Prevents delay and simulated mouse events. const touchEndToClick = function(event) { event.preventDefault(); event.target.click(); }; return { click() { this.model.set('isViewing', !this.model.get('isViewing')); }, touchend: touchEndToClick, }; }, /** * Renders the visual view of the edit mode toggle. * * Listens to mouse & touch and handles edit mode toggle interactions. * * @constructs * * @augments Backbone.View */ initialize() { this.listenTo(this.model, 'change', this.render); this.listenTo(this.model, 'change:isViewing', this.persist); }, /** * @inheritdoc * * @return {Drupal.contextualToolbar.VisualView} * The current contextual toolbar visual view. */ render() { // Render the visibility. this.$el.toggleClass('hidden', !this.model.get('isVisible')); // Render the state. this.$el .find('button') .toggleClass('is-active', !this.model.get('isViewing')); return this; }, /** * Model change handler; persists the isViewing value to localStorage. * * `isViewing === true` is the default, so only stores in localStorage when * it's not the default value (i.e. false). * * @param {Drupal.contextualToolbar.StateModel} model * A {@link Drupal.contextualToolbar.StateModel} model. * @param {bool} isViewing * The value of the isViewing attribute in the model. */ persist(model, isViewing) { if (!isViewing) { localStorage.setItem('Drupal.contextualToolbar.isViewing', 'false'); } else { localStorage.removeItem('Drupal.contextualToolbar.isViewing'); } }, }, ); })(Drupal, Backbone);