@syncfusion/ej2-pdfviewer
Version:
Essential JS 2 PDF viewer Component
134 lines (133 loc) • 5.61 kB
JavaScript
import { isNullOrUndefined, Browser, createElement } from '@syncfusion/ej2-base';
import { ContextMenu } from '@syncfusion/ej2-navigations';
import { bindImportDocEvent } from './organize-importaction';
import { onToolbarCopyButtonClick } from './organizepages-editor';
/**
* @private
* @returns { void }
*/
export function createMobileContextMenu() {
this.mobileContextMenu = [
{ text: this.pdfViewer.localeObj.getConstant('Save'), iconCss: 'e-icons e-pv-save-icon e-pv-icon' },
{ text: this.pdfViewer.localeObj.getConstant('Save As'), iconCss: 'e-icons e-pv-save-as-icon e-pv-icon' },
{
separator: true
},
{ text: this.pdfViewer.localeObj.getConstant('Copy'), iconCss: 'e-pv-copy-icon e-pv-icon' },
{
separator: true
},
{ text: this.pdfViewer.localeObj.getConstant('Import Document'), id: this.pdfViewer.element.id + '_import_pages', iconCss: 'e-pv-import-icon e-pv-icon' }
];
var contextMenuElement = createElement('ul', { id: this.pdfViewer.element.id + '_organize_context_menu' });
this.pdfViewer.element.appendChild(contextMenuElement);
if (isNullOrUndefined(this.contextMenuObj)) {
this.contextMenuObj = new ContextMenu({
target: '#' + this.pdfViewer.element.id + '_organize_more_button', items: this.mobileContextMenu,
beforeOpen: contextMenuBeforeOpen.bind(this),
select: contextMenuItemSelect.bind(this)
});
if (this.pdfViewer.enableRtl) {
this.contextMenuObj.enableRtl = true;
}
this.contextMenuObj.appendTo(contextMenuElement);
}
if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {
this.contextMenuObj.animationSettings.effect = 'ZoomIn';
}
else {
this.contextMenuObj.animationSettings.effect = 'SlideDown';
}
}
/**
* @private
* @param { BeforeOpenCloseMenuEventArgs } args - It's describes about the before open close menu events.
* @returns { void }
*/
export function contextMenuBeforeOpen(args) {
this.contextMenuObj.enableItems(['Save', 'Save As'], true);
this.contextMenuObj.enableItems(['Copy'], false);
this.contextMenuObj.enableItems(['Import Document'], false);
var isCopyDisabled = false;
var isCopyRotateDisabled = false;
if ((this.selectAllCheckBox.checked || this.selectAllCheckBox.indeterminate) &&
this.pdfViewer.pageOrganizerSettings.canCopy && !getCopiedItems.call(this, isCopyDisabled) &&
!getImportedItems.call(this, isCopyRotateDisabled)) {
this.contextMenuObj.enableItems(['Copy'], true);
}
if (this.pdfViewer.pageOrganizerSettings.canImport) {
this.contextMenuObj.enableItems(['Import Document'], true);
}
}
/**
* @private
* @param { boolean } isCopyDisabled - It's describes about enable or disable copy action.
* @returns { boolean } - It's return copied item.
*/
export function getCopiedItems(isCopyDisabled) {
var _this = this;
var selectedNodes = this.tileAreaDiv.querySelectorAll('.e-pv-organize-node-selection-ring');
selectedNodes.forEach(function (selectedElements) {
var mainTileElement = selectedElements.closest('.e-pv-organize-anchor-node');
var pageOrder = parseInt(mainTileElement.getAttribute('data-page-order'), 10);
var currentPageDetails = _this.tempOrganizePagesCollection.
find(function (item) { return item.currentPageIndex === pageOrder; });
if (currentPageDetails.isInserted && !currentPageDetails.isDeleted) {
isCopyDisabled = true;
}
});
return isCopyDisabled;
}
/**
* @private
* @param { boolean } isCopyRotateDisabled - It's describes about enable or disable copy ans rotate action.
* @returns { boolean} - It's describe about enable or disable the copy delete icon.
*/
export function getImportedItems(isCopyRotateDisabled) {
var _this = this;
var selectedNodes = this.tileAreaDiv.querySelectorAll('.e-pv-organize-node-selection-ring');
selectedNodes.forEach(function (selectedElements) {
var mainTileElement = selectedElements.closest('.e-pv-organize-anchor-node');
var pageOrder = parseInt(mainTileElement.getAttribute('data-page-order'), 10);
var currentPageDetails = _this.tempOrganizePagesCollection.
find(function (item) { return item.currentPageIndex === pageOrder; });
if (currentPageDetails.isImportedDoc && !currentPageDetails.isDeleted) {
isCopyRotateDisabled = true;
}
});
return isCopyRotateDisabled;
}
/**
* @private
* @param { any } args - It's describes about context menu selected item.
* @returns { void }
*/
export function contextMenuItemSelect(args) {
switch (args.item.text) {
case 'Save':
this.onSaveClicked();
break;
case 'Save As':
this.onSaveasClicked();
break;
case 'Copy':
onToolbarCopyButtonClick.call(this);
break;
case 'Import Document':
bindImportDocEvent.call(this);
break;
default:
break;
}
}
/**
* @private
* @param { any } event - It's describes about openContextMenu.
* @returns { void }
*/
export function openContextMenu(event) {
var contextMenu = document.getElementById(this.pdfViewer.element.id + '_organize_context_menu');
if (!isNullOrUndefined(contextMenu) && contextMenu.style.display !== 'block') {
this.contextMenuObj.open(event.originalEvent.clientY, event.originalEvent.clientX, event.originalEvent.currentTarget);
}
}