@progress/kendo-vue-pdf 3.5.0 → 3.5.1-dev.202208100944
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/js/kendo-vue-pdf.js +1 -1
- package/dist/es/KendoDrawingAdapter.js +1 -1
- package/dist/es/PDFExportProps.js +1 -0
- package/dist/es/PageTemplateProps.js +1 -0
- package/dist/es/grid/export-element.js +1 -1
- package/dist/es/grid/grid-query.js +3 -3
- package/dist/es/package-metadata.js +1 -1
- package/dist/esm/KendoDrawingAdapter.d.ts +20 -0
- package/dist/esm/KendoDrawingAdapter.js +110 -0
- package/dist/esm/PDFExport.d.ts +15 -0
- package/dist/esm/PDFExport.js +73 -0
- package/dist/esm/PDFExportProps.d.ts +146 -0
- package/dist/esm/PDFExportProps.js +1 -0
- package/dist/esm/PageTemplateProps.d.ts +14 -0
- package/dist/esm/PageTemplateProps.js +1 -0
- package/dist/esm/additionalTypes.ts +21 -0
- package/dist/esm/grid/GridPDFExport.d.ts +37 -0
- package/dist/esm/grid/GridPDFExport.js +78 -0
- package/dist/esm/grid/dom-queries.d.ts +44 -0
- package/dist/esm/grid/dom-queries.js +123 -0
- package/dist/esm/grid/export-element.d.ts +4 -0
- package/dist/esm/grid/export-element.js +78 -0
- package/dist/esm/grid/grid-query.d.ts +22 -0
- package/dist/esm/grid/grid-query.js +37 -0
- package/dist/esm/grid/provideSaveGridPDF.d.ts +5 -0
- package/dist/esm/grid/provideSaveGridPDF.js +134 -0
- package/dist/esm/main.d.ts +6 -0
- package/dist/esm/main.js +11 -0
- package/dist/esm/package-metadata.d.ts +5 -0
- package/dist/esm/package-metadata.js +11 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/savePDF.d.ts +9 -0
- package/dist/esm/savePDF.js +14 -0
- package/dist/npm/KendoDrawingAdapter.js +1 -1
- package/dist/npm/PDFExport.js +2 -2
- package/dist/npm/grid/GridPDFExport.js +3 -3
- package/dist/npm/grid/dom-queries.js +29 -18
- package/dist/npm/grid/export-element.js +3 -2
- package/dist/npm/grid/grid-query.js +8 -8
- package/dist/npm/grid/provideSaveGridPDF.js +1 -1
- package/dist/npm/package-metadata.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import * as Vue from 'vue';
|
|
3
|
+
var allVue = Vue;
|
|
4
|
+
var gh = allVue.h;
|
|
5
|
+
var isV3 = allVue.version && allVue.version[0] === '3';
|
|
6
|
+
import { savePDF } from '../savePDF.js';
|
|
7
|
+
import { provideSaveGridPDF } from './provideSaveGridPDF.js';
|
|
8
|
+
import { getDefaultSlots } from '@progress/kendo-vue-common';
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
var GridPdfExportVue2 = {
|
|
14
|
+
name: 'grid-pdf-export',
|
|
15
|
+
props: {
|
|
16
|
+
author: String,
|
|
17
|
+
avoidLinks: [Boolean, String],
|
|
18
|
+
forcePageBreak: String,
|
|
19
|
+
keepTogether: String,
|
|
20
|
+
creator: String,
|
|
21
|
+
date: Date,
|
|
22
|
+
imageResolution: Number,
|
|
23
|
+
fileName: String,
|
|
24
|
+
forceProxy: Boolean,
|
|
25
|
+
keywords: String,
|
|
26
|
+
landscape: Boolean,
|
|
27
|
+
margin: [String, Object],
|
|
28
|
+
pageTemplate: [Object, Function],
|
|
29
|
+
paperSize: [String, Object],
|
|
30
|
+
repeatHeaders: Boolean,
|
|
31
|
+
scale: Number,
|
|
32
|
+
proxyData: Object,
|
|
33
|
+
proxyURL: String,
|
|
34
|
+
proxyTarget: String,
|
|
35
|
+
producer: String,
|
|
36
|
+
subject: String,
|
|
37
|
+
title: String
|
|
38
|
+
},
|
|
39
|
+
created: function created() {
|
|
40
|
+
this.saveGridPDF = provideSaveGridPDF(this.getSavePDF());
|
|
41
|
+
},
|
|
42
|
+
methods: {
|
|
43
|
+
save: function save(data, callback) {
|
|
44
|
+
var defaultSlot = getDefaultSlots(this); // @ts-ignore
|
|
45
|
+
|
|
46
|
+
var gridSlot = defaultSlot.filter(function (child) {
|
|
47
|
+
return child && child.tag && child.tag.toLowerCase().indexOf('grid') !== -1 || child.componentOptions && child.componentOptions.tag && child.componentOptions.tag.toLowerCase().indexOf('grid') !== -1 || child.type && child.type.name && child.type.name.toLowerCase().indexOf('grid') !== -1;
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
if (gridSlot.length) {
|
|
51
|
+
this.gridComponent = this.v3 ? gridSlot[0] : gridSlot[0].componentInstance;
|
|
52
|
+
this.saveGridPDF(this.gridComponent, this.$props, callback, data, this.v3);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
getSavePDF: function getSavePDF() {
|
|
56
|
+
return savePDF;
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
setup: !isV3 ? undefined : function () {
|
|
61
|
+
var v3 = !!isV3;
|
|
62
|
+
return {
|
|
63
|
+
v3: v3
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
render: function render(createElement) {
|
|
68
|
+
var h = gh || createElement;
|
|
69
|
+
var defaultSlot = getDefaultSlots(this);
|
|
70
|
+
return h("div", [defaultSlot]);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* @hidden
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
var GridPdfExport = GridPdfExportVue2;
|
|
78
|
+
export { GridPdfExport, GridPdfExportVue2 };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export declare const hasClasses: (element: HTMLElement, classNames: string) => boolean;
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export declare const matchesClasses: (classNames: string) => (element: HTMLElement) => boolean;
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export declare const matchesNodeName: (nodeName: string) => any;
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export declare const closest: (node: any, predicate: any) => any;
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
export declare const closestInScope: (node: any, predicate: any, scope: any) => any;
|
|
21
|
+
/**
|
|
22
|
+
* @hidden
|
|
23
|
+
*/
|
|
24
|
+
export declare const contains: (parent: any, node: any, matchSelf?: boolean) => boolean;
|
|
25
|
+
/**
|
|
26
|
+
* @hidden
|
|
27
|
+
*/
|
|
28
|
+
export declare const isVisible: (element: any) => boolean;
|
|
29
|
+
/**
|
|
30
|
+
* @hidden
|
|
31
|
+
*/
|
|
32
|
+
export declare const isFocusable: (element: any, checkVisibility?: boolean) => boolean;
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
export declare const findElement: (node: any, predicate: (element: any) => boolean, matchSelf?: boolean) => any;
|
|
37
|
+
/**
|
|
38
|
+
* @hidden
|
|
39
|
+
*/
|
|
40
|
+
export declare const findFocusable: (element: any, checkVisibility?: boolean) => any;
|
|
41
|
+
/**
|
|
42
|
+
* @hidden
|
|
43
|
+
*/
|
|
44
|
+
export declare const findFocusableChild: (element: any, checkVisibility?: boolean) => any;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
var focusableRegex = /^(?:a|input|select|option|textarea|button|object)$/i;
|
|
2
|
+
var NODE_NAME_PREDICATES = {};
|
|
3
|
+
var toClassList = function (classNames) { return String(classNames).trim().split(' '); };
|
|
4
|
+
/**
|
|
5
|
+
* @hidden
|
|
6
|
+
*/
|
|
7
|
+
export var hasClasses = function (element, classNames) {
|
|
8
|
+
var namesList = toClassList(classNames);
|
|
9
|
+
return Boolean(toClassList(element.className).find(function (className) { return namesList.indexOf(className) >= 0; }));
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
export var matchesClasses = function (classNames) {
|
|
15
|
+
return function (element) { return hasClasses(element, classNames); };
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
export var matchesNodeName = function (nodeName) {
|
|
21
|
+
if (!NODE_NAME_PREDICATES[nodeName]) {
|
|
22
|
+
NODE_NAME_PREDICATES[nodeName] = function (element) {
|
|
23
|
+
return String(element.nodeName).toLowerCase() === nodeName.toLowerCase();
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return NODE_NAME_PREDICATES[nodeName];
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* @hidden
|
|
30
|
+
*/
|
|
31
|
+
export var closest = function (node, predicate) {
|
|
32
|
+
while (node && !predicate(node)) {
|
|
33
|
+
node = node.parentNode;
|
|
34
|
+
}
|
|
35
|
+
return node;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @hidden
|
|
39
|
+
*/
|
|
40
|
+
export var closestInScope = function (node, predicate, scope) {
|
|
41
|
+
while (node && node !== scope && !predicate(node)) {
|
|
42
|
+
node = node.parentNode;
|
|
43
|
+
}
|
|
44
|
+
if (node !== scope) {
|
|
45
|
+
return node;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* @hidden
|
|
50
|
+
*/
|
|
51
|
+
export var contains = function (parent, node, matchSelf) {
|
|
52
|
+
if (matchSelf === void 0) { matchSelf = false; }
|
|
53
|
+
var outside = !closest(node, function (child) { return child === parent; });
|
|
54
|
+
if (outside) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
var el = closest(node, function (child) { return child === node; });
|
|
58
|
+
return el && (matchSelf || el !== parent);
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* @hidden
|
|
62
|
+
*/
|
|
63
|
+
export var isVisible = function (element) {
|
|
64
|
+
var rect = element.getBoundingClientRect();
|
|
65
|
+
var hasSize = rect.width > 0 && rect.height > 0;
|
|
66
|
+
var hasPosition = rect.x !== 0 && rect.y !== 0;
|
|
67
|
+
// Elements can have zero size due to styling, but they should still count as visible.
|
|
68
|
+
// For example, the selection checkbox has no size, but is made visible through styling.
|
|
69
|
+
return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* @hidden
|
|
73
|
+
*/
|
|
74
|
+
export var isFocusable = function (element, checkVisibility) {
|
|
75
|
+
if (checkVisibility === void 0) { checkVisibility = true; }
|
|
76
|
+
if (element.tagName) {
|
|
77
|
+
var tagName = element.tagName.toLowerCase();
|
|
78
|
+
var tabIndex = element.getAttribute('tabIndex');
|
|
79
|
+
var skipTab = tabIndex === '-1';
|
|
80
|
+
var focusable = tabIndex !== null && !skipTab;
|
|
81
|
+
if (focusableRegex.test(tagName)) {
|
|
82
|
+
focusable = !element.disabled && !skipTab;
|
|
83
|
+
}
|
|
84
|
+
return focusable && (!checkVisibility || isVisible(element));
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* @hidden
|
|
90
|
+
*/
|
|
91
|
+
export var findElement = function (node, predicate, matchSelf) {
|
|
92
|
+
if (matchSelf === void 0) { matchSelf = true; }
|
|
93
|
+
if (!node) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (matchSelf && predicate(node)) {
|
|
97
|
+
return node;
|
|
98
|
+
}
|
|
99
|
+
node = node.firstChild;
|
|
100
|
+
while (node) {
|
|
101
|
+
if (node.nodeType === 1) {
|
|
102
|
+
var element = findElement(node, predicate);
|
|
103
|
+
if (element) {
|
|
104
|
+
return element;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
node = node.nextSibling;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* @hidden
|
|
112
|
+
*/
|
|
113
|
+
export var findFocusable = function (element, checkVisibility) {
|
|
114
|
+
if (checkVisibility === void 0) { checkVisibility = true; }
|
|
115
|
+
return findElement(element, function (node) { return isFocusable(node, checkVisibility); });
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* @hidden
|
|
119
|
+
*/
|
|
120
|
+
export var findFocusableChild = function (element, checkVisibility) {
|
|
121
|
+
if (checkVisibility === void 0) { checkVisibility = true; }
|
|
122
|
+
return findElement(element, function (node) { return isFocusable(node, checkVisibility); }, false);
|
|
123
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { GridQuery, HEADER_CLASS, FOOTER_CLASS } from './grid-query.js';
|
|
2
|
+
var FIRST_CLASS = 'k-first';
|
|
3
|
+
var appendNodes = function (element, nodes) {
|
|
4
|
+
var length = nodes.length;
|
|
5
|
+
for (var idx = 0; idx < length; idx++) {
|
|
6
|
+
element.appendChild(nodes[idx].cloneNode(true));
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
var wrapTable = function (table) {
|
|
10
|
+
var wrapper = document.createElement('div');
|
|
11
|
+
wrapper.className = 'k-widget k-grid';
|
|
12
|
+
wrapper.appendChild(table);
|
|
13
|
+
return wrapper;
|
|
14
|
+
};
|
|
15
|
+
var createTableElement = function (sources) {
|
|
16
|
+
var sourceCount = sources.length;
|
|
17
|
+
var element = sources[0].cloneNode(true);
|
|
18
|
+
var rowsCount = element.rows.length;
|
|
19
|
+
if (sourceCount > 1) {
|
|
20
|
+
for (var rowIdx = 0; rowIdx < rowsCount; rowIdx++) {
|
|
21
|
+
for (var sourceIdx = 1; sourceIdx < sourceCount; sourceIdx++) {
|
|
22
|
+
appendNodes(element.rows[rowIdx], sources[sourceIdx].rows[rowIdx].cells);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return element;
|
|
27
|
+
};
|
|
28
|
+
var setFirstCellClass = function (header, headers) {
|
|
29
|
+
if (headers.length > 1 && header.rows.length > 1) {
|
|
30
|
+
for (var idx = 1; idx < header.rows.length; idx++) {
|
|
31
|
+
var firstCellIndex = headers[0].rows[idx].cells.length;
|
|
32
|
+
var cell = header.rows[idx].cells[firstCellIndex];
|
|
33
|
+
if (String(cell.className).indexOf(FIRST_CLASS) === -1) {
|
|
34
|
+
cell.className += " ".concat(FIRST_CLASS);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
var createTable = function (colGroups, headers, bodies, footers) {
|
|
40
|
+
var table = document.createElement('table');
|
|
41
|
+
var colGroup = colGroups[0].cloneNode(true);
|
|
42
|
+
for (var idx = 1; idx < colGroups.length; idx++) {
|
|
43
|
+
appendNodes(colGroup, colGroups[idx].querySelectorAll('col'));
|
|
44
|
+
}
|
|
45
|
+
var header = createTableElement(headers);
|
|
46
|
+
var body = createTableElement(bodies);
|
|
47
|
+
header.className = HEADER_CLASS;
|
|
48
|
+
setFirstCellClass(header, headers);
|
|
49
|
+
table.appendChild(colGroup);
|
|
50
|
+
table.appendChild(header);
|
|
51
|
+
table.appendChild(body);
|
|
52
|
+
if (footers.length) {
|
|
53
|
+
var footer = createTableElement(footers);
|
|
54
|
+
footer.className = FOOTER_CLASS;
|
|
55
|
+
table.appendChild(footer);
|
|
56
|
+
}
|
|
57
|
+
return wrapTable(table);
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* @hidden
|
|
61
|
+
*/
|
|
62
|
+
export var exportElement = function (wrapper) {
|
|
63
|
+
var query = new GridQuery(wrapper);
|
|
64
|
+
var content = query.content();
|
|
65
|
+
var result;
|
|
66
|
+
if (content) {
|
|
67
|
+
var colGroups = [content.querySelector('colgroup')];
|
|
68
|
+
var headers = [query.header().querySelector('thead')];
|
|
69
|
+
var bodies = [content.querySelector('tbody')];
|
|
70
|
+
var footer = query.footer();
|
|
71
|
+
var footers = footer ? [footer.querySelector('tfoot')] : [];
|
|
72
|
+
result = createTable(colGroups, headers, bodies, footers);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
result = wrapTable(query.table().cloneNode(true));
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export declare const HEADER_CLASS: string;
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export declare const FOOTER_CLASS: string;
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export declare class GridQuery {
|
|
13
|
+
private element;
|
|
14
|
+
private headerWrap;
|
|
15
|
+
private list;
|
|
16
|
+
private footerWrap;
|
|
17
|
+
constructor(element: HTMLElement);
|
|
18
|
+
content(locked?: boolean): Element;
|
|
19
|
+
header(locked?: boolean): Element;
|
|
20
|
+
footer(locked?: boolean): Element;
|
|
21
|
+
table(): Node;
|
|
22
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { matchesClasses, matchesNodeName, findElement } from './dom-queries.js';
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
*/
|
|
5
|
+
export var HEADER_CLASS = 'k-grid-header';
|
|
6
|
+
/**
|
|
7
|
+
* @hidden
|
|
8
|
+
*/
|
|
9
|
+
export var FOOTER_CLASS = 'k-grid-footer';
|
|
10
|
+
var TABLE = 'TABLE';
|
|
11
|
+
var matchesTable = matchesNodeName(TABLE);
|
|
12
|
+
var suffix = function (locked) { return locked ? 'locked' : 'wrap'; };
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
var GridQuery = /** @class */ (function () {
|
|
17
|
+
function GridQuery(element) {
|
|
18
|
+
this.element = element;
|
|
19
|
+
this.list = findElement(element, matchesClasses("k-grid-container"));
|
|
20
|
+
}
|
|
21
|
+
GridQuery.prototype.content = function (locked) {
|
|
22
|
+
return findElement(this.list, matchesClasses("k-grid-content".concat(locked ? '-locked' : '')));
|
|
23
|
+
};
|
|
24
|
+
GridQuery.prototype.header = function (locked) {
|
|
25
|
+
this.headerWrap = this.headerWrap || findElement(this.element, matchesClasses(HEADER_CLASS));
|
|
26
|
+
return findElement(this.headerWrap, matchesClasses("".concat(HEADER_CLASS, "-").concat(suffix(locked))));
|
|
27
|
+
};
|
|
28
|
+
GridQuery.prototype.footer = function (locked) {
|
|
29
|
+
this.footerWrap = this.footerWrap || findElement(this.element, matchesClasses(FOOTER_CLASS));
|
|
30
|
+
return findElement(this.footerWrap, matchesClasses("".concat(FOOTER_CLASS, "-").concat(suffix(locked))));
|
|
31
|
+
};
|
|
32
|
+
GridQuery.prototype.table = function () {
|
|
33
|
+
return findElement(this.element, matchesTable);
|
|
34
|
+
};
|
|
35
|
+
return GridQuery;
|
|
36
|
+
}());
|
|
37
|
+
export { GridQuery };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PDFExportProps } from '../PDFExportProps';
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
*/
|
|
5
|
+
export declare function provideSaveGridPDF(savePDF: (domElement: HTMLElement, options?: PDFExportProps, callback?: () => void) => void): (grid: any, pdfExportOptions?: PDFExportProps, callback?: () => void, data?: any, columns?: any) => void;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
var __assign = this && this.__assign || function () {
|
|
2
|
+
__assign = Object.assign || function (t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
|
|
6
|
+
for (var p in s) {
|
|
7
|
+
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
return __assign.apply(this, arguments);
|
|
15
|
+
}; // @ts-ignore
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
import * as Vue from 'vue';
|
|
19
|
+
import { canUseDOM } from '@progress/kendo-vue-common';
|
|
20
|
+
var allVue = Vue;
|
|
21
|
+
var h = allVue.h;
|
|
22
|
+
var createApp = allVue.createApp;
|
|
23
|
+
import { exportElement } from './export-element.js';
|
|
24
|
+
/**
|
|
25
|
+
* @hidden
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
export function provideSaveGridPDF(savePDF) {
|
|
29
|
+
return function (grid, pdfExportOptions, callback, data, columns) {
|
|
30
|
+
if (pdfExportOptions === void 0) {
|
|
31
|
+
pdfExportOptions = {};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return saveGridPDF(savePDF, grid, pdfExportOptions, callback, data, columns);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function saveGridPDF(savePDF, grid, pdfExportOptions, callback, data, v3) {
|
|
39
|
+
if (pdfExportOptions === void 0) {
|
|
40
|
+
pdfExportOptions = {};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
renderGrid();
|
|
44
|
+
var gridOuterWrapper;
|
|
45
|
+
var gridInnerWrapper;
|
|
46
|
+
var finalContainer;
|
|
47
|
+
var gridInstance;
|
|
48
|
+
|
|
49
|
+
function renderGrid() {
|
|
50
|
+
if (!canUseDOM) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
gridOuterWrapper = document.createElement('div');
|
|
55
|
+
gridOuterWrapper.setAttribute('style', 'position:absolute; left: -5000px; top: 0px;');
|
|
56
|
+
gridInnerWrapper = document.createElement('div');
|
|
57
|
+
gridOuterWrapper.appendChild(gridInnerWrapper);
|
|
58
|
+
document.body.appendChild(gridOuterWrapper);
|
|
59
|
+
var customDataProps = data && {
|
|
60
|
+
dataItems: data,
|
|
61
|
+
total: data.length,
|
|
62
|
+
pageSize: data.length,
|
|
63
|
+
skip: 0
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
if (v3) {
|
|
67
|
+
var gridForPdf = {
|
|
68
|
+
render: function render() {
|
|
69
|
+
return h(grid.type, __assign(__assign({}, grid.props), customDataProps), grid.children);
|
|
70
|
+
},
|
|
71
|
+
store: grid.$store,
|
|
72
|
+
mounted: function mounted() {
|
|
73
|
+
// @ts-ignore
|
|
74
|
+
if (this.$el.style) {
|
|
75
|
+
// @ts-ignore
|
|
76
|
+
this.$el.style.width = '1000px';
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
onGridRendered.call(this);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
gridInstance = createApp(gridForPdf);
|
|
83
|
+
gridInstance.mount(gridInnerWrapper);
|
|
84
|
+
} else {
|
|
85
|
+
var gridConstructor = Object.getPrototypeOf(grid).constructor;
|
|
86
|
+
gridInstance = new gridConstructor({
|
|
87
|
+
propsData: Object.assign({}, grid.$props, customDataProps),
|
|
88
|
+
store: grid.$store,
|
|
89
|
+
mounted: function mounted() {
|
|
90
|
+
if (gridInstance.$el.style) {
|
|
91
|
+
gridInstance.$el.style.width = '1000px';
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
onGridRendered.call(gridInstance);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
gridInstance.$slots = grid.$slots;
|
|
98
|
+
gridInstance.$scopedSlots = grid.$scopedSlots;
|
|
99
|
+
gridInstance.$mount(gridInnerWrapper);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function onGridRendered() {
|
|
104
|
+
savePDF(prepareFinalElementForExport.call(this), pdfExportOptions, cleanUpAndInvokeCallback);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function cleanUpAndInvokeCallback() {
|
|
108
|
+
if (gridInstance.unmount) {
|
|
109
|
+
gridInstance.unmount();
|
|
110
|
+
} else {
|
|
111
|
+
gridInstance.$destroy();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
document.body.removeChild(gridOuterWrapper);
|
|
115
|
+
document.body.removeChild(finalContainer);
|
|
116
|
+
gridOuterWrapper = finalContainer = undefined;
|
|
117
|
+
|
|
118
|
+
if (callback) {
|
|
119
|
+
callback();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function prepareFinalElementForExport() {
|
|
124
|
+
/* Ultimatelly, there is no need for double DOM-copying of the grid.
|
|
125
|
+
The one in this method is a copied Angular implementation
|
|
126
|
+
that has been plugged almost seemlessly. */
|
|
127
|
+
finalContainer = document.createElement('div');
|
|
128
|
+
finalContainer.className = 'k-grid-pdf-export-element';
|
|
129
|
+
var result = exportElement(this.$el);
|
|
130
|
+
finalContainer.appendChild(result);
|
|
131
|
+
document.body.appendChild(finalContainer);
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PDFExport, PDFExportVue2 } from './PDFExport';
|
|
2
|
+
import { PDFExportProps } from './PDFExportProps';
|
|
3
|
+
import { PageTemplateProps } from './PageTemplateProps';
|
|
4
|
+
import { savePDF } from './savePDF';
|
|
5
|
+
import { GridPdfExport, GridPdfExportVue2, GridPDFExportProps } from './grid/GridPDFExport';
|
|
6
|
+
export { PDFExport, PDFExportVue2, PDFExportProps, PageTemplateProps, savePDF, GridPdfExport, GridPdfExportVue2, GridPDFExportProps };
|
package/dist/esm/main.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PDFExport, PDFExportVue2 } from './PDFExport.js';
|
|
2
|
+
// import { PDFMargin, PDFMarginProps } from './PDFMargin.js';
|
|
3
|
+
import { savePDF } from './savePDF.js';
|
|
4
|
+
import { GridPdfExport, GridPdfExportVue2 } from './grid/GridPDFExport.js';
|
|
5
|
+
export { PDFExport, PDFExportVue2, savePDF, GridPdfExport, GridPdfExportVue2 };
|
|
6
|
+
// Automatic installation if Vue has been added to the global scope.
|
|
7
|
+
var vue = 'Vue';
|
|
8
|
+
if (typeof window !== 'undefined' && window[vue] && window[vue].component) {
|
|
9
|
+
window[vue].component('kendo-pdf-export', PDFExport);
|
|
10
|
+
window[vue].component('kendo-grid-pdf-export', GridPdfExport);
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export var packageMetadata = {
|
|
5
|
+
name: '@progress/kendo-vue-pdf',
|
|
6
|
+
productName: 'Kendo UI for Vue',
|
|
7
|
+
productCodes: ['KENDOUIVUE', 'KENDOUICOMPLETE'],
|
|
8
|
+
publishDate: 1660123974,
|
|
9
|
+
version: '',
|
|
10
|
+
licensingDocsUrl: 'https://www.telerik.com/kendo-vue-ui/my-license/?utm_medium=product&utm_source=kendovue&utm_campaign=kendo-ui-vue-purchase-license-keys-warning'
|
|
11
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PDFExportProps } from './PDFExportProps';
|
|
2
|
+
/**
|
|
3
|
+
* Saves the content of a DOM element to a PDF file.
|
|
4
|
+
*
|
|
5
|
+
* @param domElement - The root DOM element to save to a PDF file.
|
|
6
|
+
* @param options - The export options.
|
|
7
|
+
* @param callback - The callback to be executed after the PDF is saved.
|
|
8
|
+
*/
|
|
9
|
+
export declare function savePDF(domElement: HTMLElement, options?: PDFExportProps, callback?: () => void): void;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { drawDOM, exportPDF } from '@progress/kendo-drawing';
|
|
2
|
+
import { saveAs } from '@progress/kendo-file-saver';
|
|
3
|
+
import KendoDrawingAdapter from './KendoDrawingAdapter.js';
|
|
4
|
+
/**
|
|
5
|
+
* Saves the content of a DOM element to a PDF file.
|
|
6
|
+
*
|
|
7
|
+
* @param domElement - The root DOM element to save to a PDF file.
|
|
8
|
+
* @param options - The export options.
|
|
9
|
+
* @param callback - The callback to be executed after the PDF is saved.
|
|
10
|
+
*/
|
|
11
|
+
export function savePDF(domElement, options, callback) {
|
|
12
|
+
if (options === void 0) { options = {}; }
|
|
13
|
+
new KendoDrawingAdapter(drawDOM, exportPDF, saveAs, domElement, options).savePDF(callback);
|
|
14
|
+
}
|
|
@@ -13,8 +13,8 @@ var defaultCreator = 'Kendo UI PDF Generator';
|
|
|
13
13
|
*/
|
|
14
14
|
var KendoDrawingAdapter = /** @class */ (function () {
|
|
15
15
|
function KendoDrawingAdapter(drawDOM, exportPDF, saveAs, domElement, options) {
|
|
16
|
-
var _this = this;
|
|
17
16
|
if (options === void 0) { options = {}; }
|
|
17
|
+
var _this = this;
|
|
18
18
|
this.drawDOM = drawDOM;
|
|
19
19
|
this.exportPDF = exportPDF;
|
|
20
20
|
this.saveAs = saveAs;
|
package/dist/npm/PDFExport.js
CHANGED
|
@@ -65,12 +65,12 @@ var PDFExportVue2 = {
|
|
|
65
65
|
};
|
|
66
66
|
},
|
|
67
67
|
created: function created() {
|
|
68
|
-
kendo_vue_common_1.validatePackage(package_metadata_1.packageMetadata);
|
|
68
|
+
(0, kendo_vue_common_1.validatePackage)(package_metadata_1.packageMetadata);
|
|
69
69
|
},
|
|
70
70
|
// @ts-ignore
|
|
71
71
|
render: function render(createElement) {
|
|
72
72
|
var h = gh || createElement;
|
|
73
|
-
var defaultSlot = kendo_vue_common_1.getDefaultSlots(this);
|
|
73
|
+
var defaultSlot = (0, kendo_vue_common_1.getDefaultSlots)(this);
|
|
74
74
|
return h("div", [defaultSlot]);
|
|
75
75
|
} // To do: we should consider whether we need a margin-top, margin-left, etc. props
|
|
76
76
|
// private getOptions() {
|
|
@@ -48,11 +48,11 @@ var GridPdfExportVue2 = {
|
|
|
48
48
|
title: String
|
|
49
49
|
},
|
|
50
50
|
created: function created() {
|
|
51
|
-
this.saveGridPDF = provideSaveGridPDF_1.provideSaveGridPDF(this.getSavePDF());
|
|
51
|
+
this.saveGridPDF = (0, provideSaveGridPDF_1.provideSaveGridPDF)(this.getSavePDF());
|
|
52
52
|
},
|
|
53
53
|
methods: {
|
|
54
54
|
save: function save(data, callback) {
|
|
55
|
-
var defaultSlot = kendo_vue_common_1.getDefaultSlots(this); // @ts-ignore
|
|
55
|
+
var defaultSlot = (0, kendo_vue_common_1.getDefaultSlots)(this); // @ts-ignore
|
|
56
56
|
|
|
57
57
|
var gridSlot = defaultSlot.filter(function (child) {
|
|
58
58
|
return child && child.tag && child.tag.toLowerCase().indexOf('grid') !== -1 || child.componentOptions && child.componentOptions.tag && child.componentOptions.tag.toLowerCase().indexOf('grid') !== -1 || child.type && child.type.name && child.type.name.toLowerCase().indexOf('grid') !== -1;
|
|
@@ -77,7 +77,7 @@ var GridPdfExportVue2 = {
|
|
|
77
77
|
// @ts-ignore
|
|
78
78
|
render: function render(createElement) {
|
|
79
79
|
var h = gh || createElement;
|
|
80
|
-
var defaultSlot = kendo_vue_common_1.getDefaultSlots(this);
|
|
80
|
+
var defaultSlot = (0, kendo_vue_common_1.getDefaultSlots)(this);
|
|
81
81
|
return h("div", [defaultSlot]);
|
|
82
82
|
}
|
|
83
83
|
};
|