@progress/kendo-vue-pdf 3.6.4 → 3.7.0-dev.202210250731
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/PDFExport.js +4 -5
- package/dist/es/{grid → common}/dom-queries.d.ts +0 -0
- package/dist/es/{grid → common}/dom-queries.js +1 -1
- package/dist/es/common/table-query.d.ts +22 -0
- package/dist/es/common/table-query.js +36 -0
- package/dist/es/common/utils.d.ts +20 -0
- package/dist/es/common/utils.js +74 -0
- package/dist/es/grid/GridPDFExport.js +2 -5
- package/dist/es/grid/export-element.js +2 -58
- package/dist/es/grid/grid-query.js +2 -2
- package/dist/es/grid/provideSaveGridPDF.js +2 -20
- package/dist/es/main.d.ts +2 -1
- package/dist/es/main.js +2 -1
- package/dist/es/package-metadata.js +1 -1
- package/dist/es/treelist/TreeListPDFExport.d.ts +37 -0
- package/dist/es/treelist/TreeListPDFExport.js +75 -0
- package/dist/es/treelist/export-element.d.ts +4 -0
- package/dist/es/treelist/export-element.js +31 -0
- package/dist/es/treelist/provideSaveTreeListPDF.d.ts +5 -0
- package/dist/es/treelist/provideSaveTreeListPDF.js +116 -0
- package/dist/esm/PDFExport.js +4 -5
- package/dist/esm/{grid → common}/dom-queries.d.ts +0 -0
- package/dist/esm/{grid → common}/dom-queries.js +1 -1
- package/dist/esm/common/table-query.d.ts +22 -0
- package/dist/esm/common/table-query.js +36 -0
- package/dist/esm/common/utils.d.ts +20 -0
- package/dist/esm/common/utils.js +74 -0
- package/dist/esm/grid/GridPDFExport.js +2 -5
- package/dist/esm/grid/export-element.js +2 -58
- package/dist/esm/grid/grid-query.js +2 -2
- package/dist/esm/grid/provideSaveGridPDF.js +2 -20
- package/dist/esm/main.d.ts +2 -1
- package/dist/esm/main.js +2 -1
- package/dist/esm/package-metadata.js +1 -1
- package/dist/esm/treelist/TreeListPDFExport.d.ts +37 -0
- package/dist/esm/treelist/TreeListPDFExport.js +75 -0
- package/dist/esm/treelist/export-element.d.ts +4 -0
- package/dist/esm/treelist/export-element.js +31 -0
- package/dist/esm/treelist/provideSaveTreeListPDF.d.ts +5 -0
- package/dist/esm/treelist/provideSaveTreeListPDF.js +116 -0
- package/dist/npm/PDFExport.js +7 -14
- package/dist/npm/{grid → common}/dom-queries.d.ts +0 -0
- package/dist/npm/{grid → common}/dom-queries.js +1 -1
- package/dist/npm/common/table-query.d.ts +22 -0
- package/dist/npm/common/table-query.js +39 -0
- package/dist/npm/common/utils.d.ts +20 -0
- package/dist/npm/common/utils.js +82 -0
- package/dist/npm/grid/GridPDFExport.js +4 -12
- package/dist/npm/grid/export-element.js +3 -59
- package/dist/npm/grid/grid-query.js +2 -2
- package/dist/npm/grid/provideSaveGridPDF.js +2 -25
- package/dist/npm/main.d.ts +2 -1
- package/dist/npm/main.js +4 -1
- package/dist/npm/package-metadata.js +1 -1
- package/dist/npm/treelist/TreeListPDFExport.d.ts +37 -0
- package/dist/npm/treelist/TreeListPDFExport.js +82 -0
- package/dist/npm/treelist/export-element.d.ts +4 -0
- package/dist/npm/treelist/export-element.js +35 -0
- package/dist/npm/treelist/provideSaveTreeListPDF.d.ts +5 -0
- package/dist/npm/treelist/provideSaveTreeListPDF.js +123 -0
- package/package.json +2 -2
|
@@ -5,7 +5,7 @@ export var packageMetadata = {
|
|
|
5
5
|
name: '@progress/kendo-vue-pdf',
|
|
6
6
|
productName: 'Kendo UI for Vue',
|
|
7
7
|
productCodes: ['KENDOUIVUE', 'KENDOUICOMPLETE'],
|
|
8
|
-
publishDate:
|
|
8
|
+
publishDate: 1666682411,
|
|
9
9
|
version: '',
|
|
10
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
11
|
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DefineComponent, RecordPropsDefinition, ComponentOptions, Vue2type } from '../additionalTypes';
|
|
2
|
+
declare type DefaultData<V> = object | ((this: V) => {});
|
|
3
|
+
declare type DefaultMethods<V> = {
|
|
4
|
+
[key: string]: (this: V, ...args: any[]) => any;
|
|
5
|
+
};
|
|
6
|
+
import { PDFExportProps } from '../PDFExportProps';
|
|
7
|
+
export interface TreeListPDFExportProps extends PDFExportProps {
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export interface TreeListPDFExportMethods extends Vue2type {
|
|
13
|
+
save: (data?: any[], callback?: () => void) => void;
|
|
14
|
+
getSavePDF: () => any;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @hidden
|
|
18
|
+
*/
|
|
19
|
+
export interface TreeListPDFExportState {
|
|
20
|
+
saveTreeListPDF: any;
|
|
21
|
+
treeListComponent: any;
|
|
22
|
+
v3: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @hidden
|
|
26
|
+
*/
|
|
27
|
+
export interface TreeListPDFExportAll extends TreeListPDFExportMethods, TreeListPDFExportState {
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @hidden
|
|
31
|
+
*/
|
|
32
|
+
declare let TreeListPDFExportVue2: ComponentOptions<Vue2type, DefaultData<{}>, DefaultMethods<TreeListPDFExportAll>, {}, RecordPropsDefinition<TreeListPDFExportProps>>;
|
|
33
|
+
/**
|
|
34
|
+
* @hidden
|
|
35
|
+
*/
|
|
36
|
+
declare const TreeListPDFExport: DefineComponent<TreeListPDFExportProps, any, {}, {}, TreeListPDFExportMethods, {}, {}, {}, string, TreeListPDFExportProps, TreeListPDFExportProps, {}>;
|
|
37
|
+
export { TreeListPDFExport, TreeListPDFExportVue2 };
|
|
@@ -0,0 +1,75 @@
|
|
|
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';
|
|
7
|
+
import { provideSaveTreeListPDF } from './provideSaveTreeListPDF';
|
|
8
|
+
import { getDefaultSlots } from '@progress/kendo-vue-common';
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
var TreeListPDFExportVue2 = {
|
|
13
|
+
name: 'treelist-pdf-export',
|
|
14
|
+
props: {
|
|
15
|
+
author: String,
|
|
16
|
+
avoidLinks: [Boolean, String],
|
|
17
|
+
forcePageBreak: String,
|
|
18
|
+
keepTogether: String,
|
|
19
|
+
creator: String,
|
|
20
|
+
date: Date,
|
|
21
|
+
imageResolution: Number,
|
|
22
|
+
fileName: String,
|
|
23
|
+
forceProxy: Boolean,
|
|
24
|
+
keywords: String,
|
|
25
|
+
landscape: Boolean,
|
|
26
|
+
margin: [String, Object],
|
|
27
|
+
pageTemplate: [Object, Function],
|
|
28
|
+
paperSize: [String, Object],
|
|
29
|
+
repeatHeaders: Boolean,
|
|
30
|
+
scale: Number,
|
|
31
|
+
proxyData: Object,
|
|
32
|
+
proxyURL: String,
|
|
33
|
+
proxyTarget: String,
|
|
34
|
+
producer: String,
|
|
35
|
+
subject: String,
|
|
36
|
+
title: String
|
|
37
|
+
},
|
|
38
|
+
created: function created() {
|
|
39
|
+
this.saveTreeListPDF = provideSaveTreeListPDF(this.getSavePDF());
|
|
40
|
+
},
|
|
41
|
+
methods: {
|
|
42
|
+
save: function save(data, callback) {
|
|
43
|
+
var defaultSlot = getDefaultSlots(this);
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
var treeListSlot = defaultSlot.filter(function (child) {
|
|
46
|
+
return child && child.tag && child.tag.toLowerCase().indexOf('treelist') !== -1 || child.componentOptions && child.componentOptions.tag && child.componentOptions.tag.toLowerCase().indexOf('treelist') !== -1 || child.type && child.type.name && child.type.name.toLowerCase().indexOf('treelist') !== -1;
|
|
47
|
+
});
|
|
48
|
+
if (treeListSlot.length) {
|
|
49
|
+
this.treeListComponent = this.v3 ? treeListSlot[0] : treeListSlot[0].componentInstance;
|
|
50
|
+
this.saveTreeListPDF(this.treeListComponent, this.$props, callback, data, this.v3);
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
getSavePDF: function getSavePDF() {
|
|
54
|
+
return savePDF;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
// @ts-ignore
|
|
58
|
+
setup: !isV3 ? undefined : function () {
|
|
59
|
+
var v3 = !!isV3;
|
|
60
|
+
return {
|
|
61
|
+
v3: v3
|
|
62
|
+
};
|
|
63
|
+
},
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
render: function render(createElement) {
|
|
66
|
+
var h = gh || createElement;
|
|
67
|
+
var defaultSlot = getDefaultSlots(this);
|
|
68
|
+
return h("div", [defaultSlot]);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* @hidden
|
|
73
|
+
*/
|
|
74
|
+
var TreeListPDFExport = TreeListPDFExportVue2;
|
|
75
|
+
export { TreeListPDFExport, TreeListPDFExportVue2 };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { GridQuery } from '../common/table-query';
|
|
2
|
+
import { wrapTable, createTable } from '../common/utils';
|
|
3
|
+
/**
|
|
4
|
+
* @hidden
|
|
5
|
+
*/
|
|
6
|
+
export var exportElement = function (wrapper) {
|
|
7
|
+
var query = new GridQuery(wrapper);
|
|
8
|
+
var content = query.content();
|
|
9
|
+
var result;
|
|
10
|
+
var headerWithoutFilter = query.header();
|
|
11
|
+
if (headerWithoutFilter.children.length > 1) {
|
|
12
|
+
headerWithoutFilter.removeChild(headerWithoutFilter.children[1]);
|
|
13
|
+
}
|
|
14
|
+
headerWithoutFilter.children[0].childNodes.forEach(function (headerCell) {
|
|
15
|
+
if (headerCell.style) {
|
|
16
|
+
return headerCell.style.top = 0;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
if (content) {
|
|
20
|
+
var colGroups = [content.querySelector('colgroup')];
|
|
21
|
+
var headers = [headerWithoutFilter];
|
|
22
|
+
var bodies = [content.querySelector('tbody')];
|
|
23
|
+
var footer = query.footer();
|
|
24
|
+
var footers = footer ? [footer.querySelector('tfoot')] : [];
|
|
25
|
+
result = createTable(colGroups, headers, bodies, footers);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
result = wrapTable(query.table().cloneNode(true));
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PDFExportProps } from '../PDFExportProps';
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
*/
|
|
5
|
+
export declare function provideSaveTreeListPDF(savePDF: (domElement: HTMLElement, options?: PDFExportProps, callback?: () => void) => void): (treeList: any, pdfExportOptions?: PDFExportProps, callback?: () => void, data?: any, columns?: any) => void;
|
|
@@ -0,0 +1,116 @@
|
|
|
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
|
+
for (var p in s) {
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
import * as Vue from 'vue';
|
|
15
|
+
import { canUseDOM } from '@progress/kendo-vue-common';
|
|
16
|
+
var allVue = Vue;
|
|
17
|
+
var h = allVue.h;
|
|
18
|
+
var createApp = allVue.createApp;
|
|
19
|
+
import { exportElement } from './export-element';
|
|
20
|
+
/**
|
|
21
|
+
* @hidden
|
|
22
|
+
*/
|
|
23
|
+
export function provideSaveTreeListPDF(savePDF) {
|
|
24
|
+
return function (treeList, pdfExportOptions, callback, data, columns) {
|
|
25
|
+
if (pdfExportOptions === void 0) {
|
|
26
|
+
pdfExportOptions = {};
|
|
27
|
+
}
|
|
28
|
+
return saveTreeListPDF(savePDF, treeList, pdfExportOptions, callback, data, columns);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function saveTreeListPDF(savePDF, treeList, pdfExportOptions, callback, data, v3) {
|
|
32
|
+
if (pdfExportOptions === void 0) {
|
|
33
|
+
pdfExportOptions = {};
|
|
34
|
+
}
|
|
35
|
+
renderTreeList();
|
|
36
|
+
var treeListOuterWrapper;
|
|
37
|
+
var treeListInnerWrapper;
|
|
38
|
+
var finalContainer;
|
|
39
|
+
var treeListInstance;
|
|
40
|
+
function renderTreeList() {
|
|
41
|
+
if (!canUseDOM) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
treeListOuterWrapper = document.createElement('div');
|
|
45
|
+
treeListOuterWrapper.setAttribute('style', 'position:absolute; left: -5000px; top: 0px;');
|
|
46
|
+
treeListInnerWrapper = document.createElement('div');
|
|
47
|
+
treeListOuterWrapper.appendChild(treeListInnerWrapper);
|
|
48
|
+
document.body.appendChild(treeListOuterWrapper);
|
|
49
|
+
var customDataProps = data && {
|
|
50
|
+
dataItems: data,
|
|
51
|
+
total: data.length,
|
|
52
|
+
pageSize: data.length,
|
|
53
|
+
skip: 0
|
|
54
|
+
};
|
|
55
|
+
if (v3) {
|
|
56
|
+
var treeListForPdf = {
|
|
57
|
+
render: function render() {
|
|
58
|
+
return h(treeList.type, __assign(__assign({}, treeList.props), customDataProps), treeList.children);
|
|
59
|
+
},
|
|
60
|
+
store: treeList.$store,
|
|
61
|
+
mounted: function mounted() {
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
if (this.$el.style) {
|
|
64
|
+
// @ts-ignore
|
|
65
|
+
this.$el.style.width = '1000px';
|
|
66
|
+
}
|
|
67
|
+
onTreeListRendered.call(this);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
treeListInstance = createApp(treeListForPdf);
|
|
71
|
+
treeListInstance.mount(treeListInnerWrapper);
|
|
72
|
+
} else {
|
|
73
|
+
var treeListConstructor = Object.getPrototypeOf(treeList).constructor;
|
|
74
|
+
treeListInstance = new treeListConstructor({
|
|
75
|
+
propsData: Object.assign({}, treeList.$props, customDataProps),
|
|
76
|
+
store: treeList.$store,
|
|
77
|
+
mounted: function mounted() {
|
|
78
|
+
if (treeListInstance.$el.style) {
|
|
79
|
+
treeListInstance.$el.style.width = '1000px';
|
|
80
|
+
}
|
|
81
|
+
onTreeListRendered.call(treeListInstance);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
treeListInstance.$slots = treeList.$slots;
|
|
85
|
+
treeListInstance.$scopedSlots = treeList.$scopedSlots;
|
|
86
|
+
treeListInstance.$mount(treeListInnerWrapper);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function onTreeListRendered() {
|
|
90
|
+
savePDF(prepareFinalElementForExport.call(this), pdfExportOptions, cleanUpAndInvokeCallback);
|
|
91
|
+
}
|
|
92
|
+
function cleanUpAndInvokeCallback() {
|
|
93
|
+
if (treeListInstance.unmount) {
|
|
94
|
+
treeListInstance.unmount();
|
|
95
|
+
} else {
|
|
96
|
+
treeListInstance.$destroy();
|
|
97
|
+
}
|
|
98
|
+
document.body.removeChild(treeListOuterWrapper);
|
|
99
|
+
document.body.removeChild(finalContainer);
|
|
100
|
+
treeListOuterWrapper = finalContainer = undefined;
|
|
101
|
+
if (callback) {
|
|
102
|
+
callback();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function prepareFinalElementForExport() {
|
|
106
|
+
/* Ultimatelly, there is no need for double DOM-copying of the treeList.
|
|
107
|
+
The one in this method is a copied Angular implementation
|
|
108
|
+
that has been plugged almost seemlessly. */
|
|
109
|
+
finalContainer = document.createElement('div');
|
|
110
|
+
finalContainer.className = 'k-treelist-pdf-export-element';
|
|
111
|
+
var result = exportElement(this.$el);
|
|
112
|
+
finalContainer.appendChild(result);
|
|
113
|
+
document.body.appendChild(finalContainer);
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
}
|
package/dist/esm/PDFExport.js
CHANGED
|
@@ -11,7 +11,6 @@ import { packageMetadata } from './package-metadata.js';
|
|
|
11
11
|
/**
|
|
12
12
|
* @hidden
|
|
13
13
|
*/
|
|
14
|
-
|
|
15
14
|
var PDFExportVue2 = {
|
|
16
15
|
name: 'pdf-export',
|
|
17
16
|
props: {
|
|
@@ -40,7 +39,8 @@ var PDFExportVue2 = {
|
|
|
40
39
|
},
|
|
41
40
|
methods: {
|
|
42
41
|
save: function save(callback) {
|
|
43
|
-
new KendoDrawingAdapter(drawDOM, exportPDF, saveAs, this.$el,
|
|
42
|
+
new KendoDrawingAdapter(drawDOM, exportPDF, saveAs, this.$el,
|
|
43
|
+
// To do: we should consider whether we need a margin-top, margin-left, etc. props
|
|
44
44
|
this.$props).savePDF(callback);
|
|
45
45
|
}
|
|
46
46
|
},
|
|
@@ -59,15 +59,14 @@ var PDFExportVue2 = {
|
|
|
59
59
|
var h = gh || createElement;
|
|
60
60
|
var defaultSlot = getDefaultSlots(this);
|
|
61
61
|
return h("div", [defaultSlot]);
|
|
62
|
-
}
|
|
62
|
+
}
|
|
63
|
+
// To do: we should consider whether we need a margin-top, margin-left, etc. props
|
|
63
64
|
// private getOptions() {
|
|
64
65
|
// return Object.assign({}, this.$props, { margin: getPageMrgin(this.$props) });
|
|
65
66
|
// }
|
|
66
|
-
|
|
67
67
|
};
|
|
68
68
|
/**
|
|
69
69
|
* @hidden
|
|
70
70
|
*/
|
|
71
|
-
|
|
72
71
|
var PDFExport = PDFExportVue2;
|
|
73
72
|
export { PDFExport, PDFExportVue2 };
|
|
File without changes
|
|
@@ -64,7 +64,7 @@ export var isVisible = function (element) {
|
|
|
64
64
|
var rect = element.getBoundingClientRect();
|
|
65
65
|
var hasSize = rect.width > 0 && rect.height > 0;
|
|
66
66
|
var hasPosition = rect.x !== 0 && rect.y !== 0;
|
|
67
|
-
// Elements can have zero size due to styling, but they
|
|
67
|
+
// Elements can have zero size due to styling, but they still count as visible.
|
|
68
68
|
// For example, the selection checkbox has no size, but is made visible through styling.
|
|
69
69
|
return (hasSize || hasPosition) && window.getComputedStyle(element).visibility !== 'hidden';
|
|
70
70
|
};
|
|
@@ -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(): Element;
|
|
19
|
+
header(): Element;
|
|
20
|
+
footer(): Element;
|
|
21
|
+
table(): Node;
|
|
22
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
/**
|
|
13
|
+
* @hidden
|
|
14
|
+
*/
|
|
15
|
+
var GridQuery = /** @class */ (function () {
|
|
16
|
+
function GridQuery(element) {
|
|
17
|
+
this.element = element;
|
|
18
|
+
this.list = findElement(element, matchesClasses('k-grid'));
|
|
19
|
+
}
|
|
20
|
+
GridQuery.prototype.content = function () {
|
|
21
|
+
return findElement(this.list, matchesClasses('k-grid'));
|
|
22
|
+
};
|
|
23
|
+
GridQuery.prototype.header = function () {
|
|
24
|
+
this.headerWrap = this.headerWrap || findElement(this.element, matchesClasses(HEADER_CLASS));
|
|
25
|
+
return findElement(this.headerWrap, matchesClasses("".concat(HEADER_CLASS)));
|
|
26
|
+
};
|
|
27
|
+
GridQuery.prototype.footer = function () {
|
|
28
|
+
this.footerWrap = this.footerWrap || findElement(this.element, matchesClasses(FOOTER_CLASS));
|
|
29
|
+
return findElement(this.footerWrap, matchesClasses("".concat(FOOTER_CLASS)));
|
|
30
|
+
};
|
|
31
|
+
GridQuery.prototype.table = function () {
|
|
32
|
+
return findElement(this.element, matchesTable);
|
|
33
|
+
};
|
|
34
|
+
return GridQuery;
|
|
35
|
+
}());
|
|
36
|
+
export { GridQuery };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hidden
|
|
3
|
+
*/
|
|
4
|
+
export declare const appendNodes: (element: any, nodes: any[]) => void;
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export declare const wrapTable: (table: any) => any;
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
export declare const createTableElement: (sources: any) => any;
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export declare const setFirstCellClass: (header: any, headers: any) => void;
|
|
17
|
+
/**
|
|
18
|
+
* @hidden
|
|
19
|
+
*/
|
|
20
|
+
export declare const createTable: (colGroups: any[], headers: any[], bodies: any[], footers: any[]) => any;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
var FIRST_CLASS = 'k-first';
|
|
2
|
+
var HEADER_CLASS = 'k-grid-header';
|
|
3
|
+
var FOOTER_CLASS = 'k-grid-footer';
|
|
4
|
+
/**
|
|
5
|
+
* @hidden
|
|
6
|
+
*/
|
|
7
|
+
export var appendNodes = function (element, nodes) {
|
|
8
|
+
var length = nodes.length;
|
|
9
|
+
for (var idx = 0; idx < length; idx++) {
|
|
10
|
+
element.appendChild(nodes[idx].cloneNode(true));
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
export var wrapTable = function (table) {
|
|
17
|
+
var wrapper = document.createElement('div');
|
|
18
|
+
wrapper.className = 'k-widget k-grid';
|
|
19
|
+
wrapper.appendChild(table);
|
|
20
|
+
return wrapper;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* @hidden
|
|
24
|
+
*/
|
|
25
|
+
export var createTableElement = function (sources) {
|
|
26
|
+
var sourceCount = sources.length;
|
|
27
|
+
var element = sources[0].cloneNode(true);
|
|
28
|
+
var rowsCount = element.rows.length;
|
|
29
|
+
if (sourceCount > 1) {
|
|
30
|
+
for (var rowIdx = 0; rowIdx < rowsCount; rowIdx++) {
|
|
31
|
+
for (var sourceIdx = 1; sourceIdx < sourceCount; sourceIdx++) {
|
|
32
|
+
appendNodes(element.rows[rowIdx], sources[sourceIdx].rows[rowIdx].cells);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return element;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* @hidden
|
|
40
|
+
*/
|
|
41
|
+
export var setFirstCellClass = function (header, headers) {
|
|
42
|
+
if (headers.length > 1 && header.rows.length > 1) {
|
|
43
|
+
for (var idx = 1; idx < header.rows.length; idx++) {
|
|
44
|
+
var firstCellIndex = headers[0].rows[idx].cells.length;
|
|
45
|
+
var cell = header.rows[idx].cells[firstCellIndex];
|
|
46
|
+
if (String(cell.className).indexOf(FIRST_CLASS) === -1) {
|
|
47
|
+
cell.className += " ".concat(FIRST_CLASS);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* @hidden
|
|
54
|
+
*/
|
|
55
|
+
export var createTable = function (colGroups, headers, bodies, footers) {
|
|
56
|
+
var table = document.createElement('table');
|
|
57
|
+
var colGroup = colGroups[0].cloneNode(true);
|
|
58
|
+
for (var idx = 1; idx < colGroups.length; idx++) {
|
|
59
|
+
appendNodes(colGroup, colGroups[idx].querySelectorAll('col'));
|
|
60
|
+
}
|
|
61
|
+
var header = createTableElement(headers);
|
|
62
|
+
var body = createTableElement(bodies);
|
|
63
|
+
header.className = HEADER_CLASS;
|
|
64
|
+
setFirstCellClass(header, headers);
|
|
65
|
+
table.appendChild(colGroup);
|
|
66
|
+
table.appendChild(header);
|
|
67
|
+
table.appendChild(body);
|
|
68
|
+
if (footers.length) {
|
|
69
|
+
var footer = createTableElement(footers);
|
|
70
|
+
footer.className = FOOTER_CLASS;
|
|
71
|
+
table.appendChild(footer);
|
|
72
|
+
}
|
|
73
|
+
return wrapTable(table);
|
|
74
|
+
};
|
|
@@ -9,7 +9,6 @@ import { getDefaultSlots } from '@progress/kendo-vue-common';
|
|
|
9
9
|
/**
|
|
10
10
|
* @hidden
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
12
|
var GridPdfExportVue2 = {
|
|
14
13
|
name: 'grid-pdf-export',
|
|
15
14
|
props: {
|
|
@@ -41,12 +40,11 @@ var GridPdfExportVue2 = {
|
|
|
41
40
|
},
|
|
42
41
|
methods: {
|
|
43
42
|
save: function save(data, callback) {
|
|
44
|
-
var defaultSlot = getDefaultSlots(this);
|
|
45
|
-
|
|
43
|
+
var defaultSlot = getDefaultSlots(this);
|
|
44
|
+
// @ts-ignore
|
|
46
45
|
var gridSlot = defaultSlot.filter(function (child) {
|
|
47
46
|
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
47
|
});
|
|
49
|
-
|
|
50
48
|
if (gridSlot.length) {
|
|
51
49
|
this.gridComponent = this.v3 ? gridSlot[0] : gridSlot[0].componentInstance;
|
|
52
50
|
this.saveGridPDF(this.gridComponent, this.$props, callback, data, this.v3);
|
|
@@ -73,6 +71,5 @@ var GridPdfExportVue2 = {
|
|
|
73
71
|
/**
|
|
74
72
|
* @hidden
|
|
75
73
|
*/
|
|
76
|
-
|
|
77
74
|
var GridPdfExport = GridPdfExportVue2;
|
|
78
75
|
export { GridPdfExport, GridPdfExportVue2 };
|
|
@@ -1,61 +1,5 @@
|
|
|
1
|
-
import { GridQuery
|
|
2
|
-
|
|
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
|
-
};
|
|
1
|
+
import { GridQuery } from './grid-query.js';
|
|
2
|
+
import { wrapTable, createTable } from '../common/utils.js';
|
|
59
3
|
/**
|
|
60
4
|
* @hidden
|
|
61
5
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { matchesClasses, matchesNodeName, findElement } from '
|
|
1
|
+
import { matchesClasses, matchesNodeName, findElement } from '../common/dom-queries.js';
|
|
2
2
|
/**
|
|
3
3
|
* @hidden
|
|
4
4
|
*/
|
|
@@ -16,7 +16,7 @@ var suffix = function (locked) { return locked ? 'locked' : 'wrap'; };
|
|
|
16
16
|
var GridQuery = /** @class */ (function () {
|
|
17
17
|
function GridQuery(element) {
|
|
18
18
|
this.element = element;
|
|
19
|
-
this.list = findElement(element, matchesClasses(
|
|
19
|
+
this.list = findElement(element, matchesClasses('k-grid-container'));
|
|
20
20
|
}
|
|
21
21
|
GridQuery.prototype.content = function (locked) {
|
|
22
22
|
return findElement(this.list, matchesClasses("k-grid-content".concat(locked ? '-locked' : '')));
|