@progress/telerik-jquery-report-viewer
Version:
Progress® Telerik® Report Viewer for jQuery
80 lines (75 loc) • 3.45 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var globalSettings = require('./globalSettings.js');
class Binder {
static bind($element, ...args) {
const commands = args[0].commands;
const viewerOptions = args[1];
Binder.attachCommands($element, commands, viewerOptions);
var plugins = $element.find('[data-role^="telerik_ReportViewer_"]');
Array.from(plugins).forEach((element) => {
var $element2 = $(element);
var fn = $.fn[$element2.attr("data-role")];
if (typeof fn === "function") {
fn.apply($element2, args);
}
});
}
static attachCommands($element, commands, viewerOptions) {
var elementSelector = '[data-command^="telerik_ReportViewer_"]';
var customElementSelector = "[data-target-report-viewer]" + elementSelector;
$element.on("click", elementSelector, commandHandler);
if (!globalSettings.GlobalSettings.CommandHandlerAttached) {
$(document.body).on("click", customElementSelector, customCommandHandler);
globalSettings.GlobalSettings.CommandHandlerAttached = true;
}
Object.entries(commands).forEach(([key, command]) => {
attachCommand(key, command, viewerOptions, $element);
});
function commandHandler(event) {
var prefixedDataCommand = $(this).attr("data-command");
if (prefixedDataCommand) {
var dataCommand = prefixedDataCommand.substring("telerik_ReportViewer_".length);
var cmd = commands[dataCommand];
if (cmd && cmd.enabled()) {
cmd.exec($(this).attr("data-command-parameter"));
}
event.preventDefault();
}
}
function customCommandHandler(event) {
var $this = $(this);
var prefixedDataCommand = $this.attr("data-command");
var reportViewerTarget = $this.attr("data-target-report-viewer");
if (prefixedDataCommand && reportViewerTarget) {
var dataCommand = prefixedDataCommand.substring("telerik_ReportViewer_".length);
var reportViewer = $(reportViewerTarget).data("telerik_ReportViewer");
var cmd = reportViewer.commands[dataCommand];
if (cmd.enabled()) {
cmd.exec($(this).attr("data-command-parameter"));
}
event.preventDefault();
}
}
}
}
function attachCommand(dataCommand, cmd, viewerOptions, $element) {
if (cmd) {
var elementSelector = '[data-command="telerik_ReportViewer_' + dataCommand + '"]';
var customElementSelector = '[data-target-report-viewer="' + viewerOptions.selector + '"]' + elementSelector;
var $defaultElement = $element.find(elementSelector);
var $customElement = $(customElementSelector);
$(cmd).on("enabledChanged", function(event) {
(cmd.enabled() ? $.fn.removeClass : $.fn.addClass).call($defaultElement.parent("li"), "k-disabled");
(cmd.enabled() ? $.fn.removeClass : $.fn.addClass).call($customElement, viewerOptions.disabledButtonClass);
}).on("checkedChanged", function(event) {
var defaultTarget = $defaultElement.parent("li");
(cmd.checked() ? $.fn.addClass : $.fn.removeClass).call(defaultTarget, getSelectedClassName(defaultTarget));
(cmd.checked() ? $.fn.addClass : $.fn.removeClass).call($customElement, viewerOptions.checkedButtonClass);
});
}
}
function getSelectedClassName($element) {
return $element.hasClass("trv-menu-toggleable") ? "k-selected !k-bg-primary" : "k-selected";
}
exports.Binder = Binder;
;