1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /**
- * @file
- * A Backbone View that provides a dynamic contextual link.
- */
- (function($, Backbone, Drupal) {
- Drupal.quickedit.ContextualLinkView = Backbone.View.extend(
- /** @lends Drupal.quickedit.ContextualLinkView# */ {
- /**
- * Define all events to listen to.
- *
- * @return {object}
- * A map of events.
- */
- events() {
- // Prevents delay and simulated mouse events.
- function touchEndToClick(event) {
- event.preventDefault();
- event.target.click();
- }
- return {
- 'click a': function(event) {
- event.preventDefault();
- this.model.set('state', 'launching');
- },
- 'touchEnd a': touchEndToClick,
- };
- },
- /**
- * Create a new contextual link view.
- *
- * @constructs
- *
- * @augments Backbone.View
- *
- * @param {object} options
- * An object with the following keys:
- * @param {Drupal.quickedit.EntityModel} options.model
- * The associated entity's model.
- * @param {Drupal.quickedit.AppModel} options.appModel
- * The application state model.
- * @param {object} options.strings
- * The strings for the "Quick edit" link.
- */
- initialize(options) {
- // Insert the text of the quick edit toggle.
- this.$el.find('a').text(options.strings.quickEdit);
- // Initial render.
- this.render();
- // Re-render whenever this entity's isActive attribute changes.
- this.listenTo(this.model, 'change:isActive', this.render);
- },
- /**
- * Render function for the contextual link view.
- *
- * @param {Drupal.quickedit.EntityModel} entityModel
- * The associated `EntityModel`.
- * @param {bool} isActive
- * Whether the in-place editor is active or not.
- *
- * @return {Drupal.quickedit.ContextualLinkView}
- * The `ContextualLinkView` in question.
- */
- render(entityModel, isActive) {
- this.$el.find('a').attr('aria-pressed', isActive);
- // Hides the contextual links if an in-place editor is active.
- this.$el.closest('.contextual').toggle(!isActive);
- return this;
- },
- },
- );
- })(jQuery, Backbone, Drupal);
|