annotate core/modules/quickedit/js/views/ContextualLinkView.es6.js @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children a9cd425dd02b
rev   line source
Chris@0 1 /**
Chris@0 2 * @file
Chris@0 3 * A Backbone View that provides a dynamic contextual link.
Chris@0 4 */
Chris@0 5
Chris@0 6 (function ($, Backbone, Drupal) {
Chris@0 7 Drupal.quickedit.ContextualLinkView = Backbone.View.extend(/** @lends Drupal.quickedit.ContextualLinkView# */{
Chris@0 8
Chris@0 9 /**
Chris@0 10 * Define all events to listen to.
Chris@0 11 *
Chris@0 12 * @return {object}
Chris@0 13 * A map of events.
Chris@0 14 */
Chris@0 15 events() {
Chris@0 16 // Prevents delay and simulated mouse events.
Chris@0 17 function touchEndToClick(event) {
Chris@0 18 event.preventDefault();
Chris@0 19 event.target.click();
Chris@0 20 }
Chris@0 21
Chris@0 22 return {
Chris@0 23 'click a': function (event) {
Chris@0 24 event.preventDefault();
Chris@0 25 this.model.set('state', 'launching');
Chris@0 26 },
Chris@0 27 'touchEnd a': touchEndToClick,
Chris@0 28 };
Chris@0 29 },
Chris@0 30
Chris@0 31 /**
Chris@0 32 * Create a new contextual link view.
Chris@0 33 *
Chris@0 34 * @constructs
Chris@0 35 *
Chris@0 36 * @augments Backbone.View
Chris@0 37 *
Chris@0 38 * @param {object} options
Chris@0 39 * An object with the following keys:
Chris@0 40 * @param {Drupal.quickedit.EntityModel} options.model
Chris@0 41 * The associated entity's model.
Chris@0 42 * @param {Drupal.quickedit.AppModel} options.appModel
Chris@0 43 * The application state model.
Chris@0 44 * @param {object} options.strings
Chris@0 45 * The strings for the "Quick edit" link.
Chris@0 46 */
Chris@0 47 initialize(options) {
Chris@0 48 // Insert the text of the quick edit toggle.
Chris@0 49 this.$el.find('a').text(options.strings.quickEdit);
Chris@0 50 // Initial render.
Chris@0 51 this.render();
Chris@0 52 // Re-render whenever this entity's isActive attribute changes.
Chris@0 53 this.listenTo(this.model, 'change:isActive', this.render);
Chris@0 54 },
Chris@0 55
Chris@0 56 /**
Chris@0 57 * Render function for the contextual link view.
Chris@0 58 *
Chris@0 59 * @param {Drupal.quickedit.EntityModel} entityModel
Chris@0 60 * The associated `EntityModel`.
Chris@0 61 * @param {bool} isActive
Chris@0 62 * Whether the in-place editor is active or not.
Chris@0 63 *
Chris@0 64 * @return {Drupal.quickedit.ContextualLinkView}
Chris@0 65 * The `ContextualLinkView` in question.
Chris@0 66 */
Chris@0 67 render(entityModel, isActive) {
Chris@0 68 this.$el.find('a').attr('aria-pressed', isActive);
Chris@0 69
Chris@0 70 // Hides the contextual links if an in-place editor is active.
Chris@0 71 this.$el.closest('.contextual').toggle(!isActive);
Chris@0 72
Chris@0 73 return this;
Chris@0 74 },
Chris@0 75
Chris@0 76 });
Chris@0 77 }(jQuery, Backbone, Drupal));