Move into nested docroot
This commit is contained in:
parent
83a0d3a149
commit
c8b70abde9
13405 changed files with 0 additions and 0 deletions
55
web/core/modules/contextual/js/views/AuralView.js
Normal file
55
web/core/modules/contextual/js/views/AuralView.js
Normal file
|
@ -0,0 +1,55 @@
|
|||
/**
|
||||
* @file
|
||||
* A Backbone View that provides the aural view of a contextual link.
|
||||
*/
|
||||
|
||||
(function (Drupal, Backbone) {
|
||||
|
||||
'use strict';
|
||||
|
||||
Drupal.contextual.AuralView = Backbone.View.extend(/** @lends Drupal.contextual.AuralView# */{
|
||||
|
||||
/**
|
||||
* Renders the aural view of a contextual link (i.e. screen reader support).
|
||||
*
|
||||
* @constructs
|
||||
*
|
||||
* @augments Backbone.View
|
||||
*
|
||||
* @param {object} options
|
||||
* Options for the view.
|
||||
*/
|
||||
initialize: function (options) {
|
||||
this.options = options;
|
||||
|
||||
this.listenTo(this.model, 'change', this.render);
|
||||
|
||||
// Use aria-role form so that the number of items in the list is spoken.
|
||||
this.$el.attr('role', 'form');
|
||||
|
||||
// Initial render.
|
||||
this.render();
|
||||
},
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
render: function () {
|
||||
var isOpen = this.model.get('isOpen');
|
||||
|
||||
// Set the hidden property of the links.
|
||||
this.$el.find('.contextual-links')
|
||||
.prop('hidden', !isOpen);
|
||||
|
||||
// Update the view of the trigger.
|
||||
this.$el.find('.trigger')
|
||||
.text(Drupal.t('@action @title configuration options', {
|
||||
'@action': (!isOpen) ? this.options.strings.open : this.options.strings.close,
|
||||
'@title': this.model.get('title')
|
||||
}))
|
||||
.attr('aria-pressed', isOpen);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(Drupal, Backbone);
|
61
web/core/modules/contextual/js/views/KeyboardView.js
Normal file
61
web/core/modules/contextual/js/views/KeyboardView.js
Normal file
|
@ -0,0 +1,61 @@
|
|||
/**
|
||||
* @file
|
||||
* A Backbone View that provides keyboard interaction for a contextual link.
|
||||
*/
|
||||
|
||||
(function (Drupal, Backbone) {
|
||||
|
||||
'use strict';
|
||||
|
||||
Drupal.contextual.KeyboardView = Backbone.View.extend(/** @lends Drupal.contextual.KeyboardView# */{
|
||||
|
||||
/**
|
||||
* @type {object}
|
||||
*/
|
||||
events: {
|
||||
'focus .trigger': 'focus',
|
||||
'focus .contextual-links a': 'focus',
|
||||
'blur .trigger': function () { this.model.blur(); },
|
||||
'blur .contextual-links a': function () {
|
||||
// Set up a timeout to allow a user to tab between the trigger and the
|
||||
// contextual links without the menu dismissing.
|
||||
var that = this;
|
||||
this.timer = window.setTimeout(function () {
|
||||
that.model.close().blur();
|
||||
}, 150);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Provides keyboard interaction for a contextual link.
|
||||
*
|
||||
* @constructs
|
||||
*
|
||||
* @augments Backbone.View
|
||||
*/
|
||||
initialize: function () {
|
||||
|
||||
/**
|
||||
* The timer is used to create a delay before dismissing the contextual
|
||||
* links on blur. This is only necessary when keyboard users tab into
|
||||
* contextual links without edit mode (i.e. without TabbingManager).
|
||||
* That means that if we decide to disable tabbing of contextual links
|
||||
* without edit mode, all this timer logic can go away.
|
||||
*
|
||||
* @type {NaN|number}
|
||||
*/
|
||||
this.timer = NaN;
|
||||
},
|
||||
|
||||
/**
|
||||
* Sets focus on the model; Clears the timer that dismisses the links.
|
||||
*/
|
||||
focus: function () {
|
||||
// Clear the timeout that might have been set by blurring a link.
|
||||
window.clearTimeout(this.timer);
|
||||
this.model.focus();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(Drupal, Backbone);
|
57
web/core/modules/contextual/js/views/RegionView.js
Normal file
57
web/core/modules/contextual/js/views/RegionView.js
Normal file
|
@ -0,0 +1,57 @@
|
|||
/**
|
||||
* @file
|
||||
* A Backbone View that renders the visual view of a contextual region element.
|
||||
*/
|
||||
|
||||
(function (Drupal, Backbone, Modernizr) {
|
||||
|
||||
'use strict';
|
||||
|
||||
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: function () {
|
||||
var mapping = {
|
||||
mouseenter: function () { this.model.set('regionIsHovered', true); },
|
||||
mouseleave: function () {
|
||||
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: function () {
|
||||
this.listenTo(this.model, 'change:hasFocus', this.render);
|
||||
},
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* @return {Drupal.contextual.RegionView}
|
||||
* The current contextual region view.
|
||||
*/
|
||||
render: function () {
|
||||
this.$el.toggleClass('focus', this.model.get('hasFocus'));
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(Drupal, Backbone, Modernizr);
|
80
web/core/modules/contextual/js/views/VisualView.js
Normal file
80
web/core/modules/contextual/js/views/VisualView.js
Normal file
|
@ -0,0 +1,80 @@
|
|||
/**
|
||||
* @file
|
||||
* A Backbone View that provides the visual view of a contextual link.
|
||||
*/
|
||||
|
||||
(function (Drupal, Backbone, Modernizr) {
|
||||
|
||||
'use strict';
|
||||
|
||||
Drupal.contextual.VisualView = Backbone.View.extend(/** @lends Drupal.contextual.VisualView# */{
|
||||
|
||||
/**
|
||||
* Events for the Backbone view.
|
||||
*
|
||||
* @return {object}
|
||||
* A mapping of events to be used in the view.
|
||||
*/
|
||||
events: function () {
|
||||
// Prevents delay and simulated mouse events.
|
||||
var touchEndToClick = function (event) {
|
||||
event.preventDefault();
|
||||
event.target.click();
|
||||
};
|
||||
var mapping = {
|
||||
'click .trigger': function () { this.model.toggleOpen(); },
|
||||
'touchend .trigger': touchEndToClick,
|
||||
'click .contextual-links a': function () { this.model.close().blur(); },
|
||||
'touchend .contextual-links a': touchEndToClick
|
||||
};
|
||||
// We only want mouse hover events on non-touch.
|
||||
if (!Modernizr.touchevents) {
|
||||
mapping.mouseenter = function () { this.model.focus(); };
|
||||
}
|
||||
return mapping;
|
||||
},
|
||||
|
||||
/**
|
||||
* Renders the visual view of a contextual link. Listens to mouse & touch.
|
||||
*
|
||||
* @constructs
|
||||
*
|
||||
* @augments Backbone.View
|
||||
*/
|
||||
initialize: function () {
|
||||
this.listenTo(this.model, 'change', this.render);
|
||||
},
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*
|
||||
* @return {Drupal.contextual.VisualView}
|
||||
* The current contextual visual view.
|
||||
*/
|
||||
render: function () {
|
||||
var isOpen = this.model.get('isOpen');
|
||||
// The trigger should be visible when:
|
||||
// - the mouse hovered over the region,
|
||||
// - the trigger is locked,
|
||||
// - and for as long as the contextual menu is open.
|
||||
var isVisible = this.model.get('isLocked') || this.model.get('regionIsHovered') || isOpen;
|
||||
|
||||
this.$el
|
||||
// The open state determines if the links are visible.
|
||||
.toggleClass('open', isOpen)
|
||||
// Update the visibility of the trigger.
|
||||
.find('.trigger').toggleClass('visually-hidden', !isVisible);
|
||||
|
||||
// Nested contextual region handling: hide any nested contextual triggers.
|
||||
if ('isOpen' in this.model.changed) {
|
||||
this.$el.closest('.contextual-region')
|
||||
.find('.contextual .trigger:not(:first)')
|
||||
.toggle(!isOpen);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
})(Drupal, Backbone, Modernizr);
|
Reference in a new issue