92 lines
2.4 KiB
JavaScript
92 lines
2.4 KiB
JavaScript
/**
|
|
* @file js/classes/features/CollapsibleGridFeature.js
|
|
*
|
|
* Copyright (c) 2016-2021 Simon Fraser University
|
|
* Copyright (c) 2000-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class CollapsibleGridFeature
|
|
* @ingroup js_classes_features
|
|
*
|
|
* @brief Adds collapse/expand functionality to grids.
|
|
*/
|
|
(function($) {
|
|
|
|
|
|
/**
|
|
* @constructor
|
|
* @inheritDoc
|
|
* @extends $.pkp.classes.features.Feature
|
|
*/
|
|
$.pkp.classes.features.CollapsibleGridFeature =
|
|
function(gridHandler, options) {
|
|
this.parent(gridHandler, options);
|
|
};
|
|
$.pkp.classes.Helper.inherits(
|
|
$.pkp.classes.features.CollapsibleGridFeature,
|
|
$.pkp.classes.features.Feature);
|
|
|
|
|
|
//
|
|
// Getter and setters.
|
|
//
|
|
/**
|
|
* Get the collapse/expand control link selector.
|
|
* @return {string}
|
|
*/
|
|
$.pkp.classes.features.CollapsibleGridFeature.prototype.getControlSelector =
|
|
function() {
|
|
return "a[id^='collapsibleGridControl-expandGridControlLink-button-']";
|
|
};
|
|
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
$.pkp.classes.features.CollapsibleGridFeature.prototype.init =
|
|
function() {
|
|
$(this.getControlSelector(), this.getGridHtmlElement()).
|
|
click(this.callbackWrapper(this.toggleGridClickHandler_, this));
|
|
};
|
|
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
$.pkp.classes.features.CollapsibleGridFeature.prototype.
|
|
addFeatureHtml = function($gridElement, options) {
|
|
var castOptions = /** @type {{collapsibleLink: string?}} */ (options);
|
|
$gridElement.find('div.grid_header_bar').prepend(castOptions.collapsibleLink);
|
|
};
|
|
|
|
|
|
//
|
|
// Private helper methods.
|
|
//
|
|
/**
|
|
* Collapse/expand grid.
|
|
* @private
|
|
* @param {Object} callingContext The calling element or object.
|
|
* @param {Event=} opt_event The triggering event.
|
|
* @return {boolean} Should return false to stop event processing.
|
|
*/
|
|
$.pkp.classes.features.CollapsibleGridFeature.prototype.
|
|
toggleGridClickHandler_ = function(callingContext, opt_event) {
|
|
var $control = this.getGridHtmlElement().find(this.getControlSelector());
|
|
|
|
this.getGridHtmlElement().find('div.grid_header').siblings().toggle();
|
|
$control.toggleClass('expand_all').toggleClass('collapse_all');
|
|
|
|
// Hide the search controls, if they are visible.
|
|
this.getGridHtmlElement().
|
|
find('div.grid_header_bar .search_extras_collapse').click();
|
|
|
|
// Toggle all grid actions.
|
|
this.getGridHtmlElement().find('div.grid_header span.options').toggle();
|
|
|
|
return false;
|
|
};
|
|
|
|
|
|
}(jQuery));
|