@progress/kendo-vue-pdf 8.0.3-develop.2 → 8.0.3-develop.3

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.
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { DrawOptions, Group, pdf } from '@progress/kendo-drawing';
9
+ import { SaveOptions } from '@progress/kendo-file-saver';
10
+ import { PDFExportProps } from './PDFExportProps';
11
+ /**
12
+ * @hidden
13
+ */
14
+ export default class KendoDrawingAdapter {
15
+ private drawDOM;
16
+ private exportPDF;
17
+ private saveAs;
18
+ private domElement;
19
+ private options;
20
+ constructor(drawDOM: (element: HTMLElement, options: DrawOptions) => Promise<Group>, exportPDF: (group: Group, options: pdf.PDFOptions) => Promise<string>, saveAs: (dataUri: string, fileName: string, options: SaveOptions) => void, domElement: HTMLElement, options?: PDFExportProps);
21
+ savePDF(callback?: () => void): void;
22
+ private getDrawOptions;
23
+ private getPDFOptions;
24
+ private getSaveOptions;
25
+ private convertPageTemplateToHtml;
26
+ }
package/PDFExport.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { PropType } from 'vue';
9
+ /**
10
+ * @hidden
11
+ */
12
+ declare const PDFExport: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
13
+ author: PropType<string>;
14
+ avoidLinks: PropType<string | boolean>;
15
+ forcePageBreak: PropType<string>;
16
+ keepTogether: PropType<string>;
17
+ creator: PropType<string>;
18
+ date: PropType<Date>;
19
+ imageResolution: PropType<number>;
20
+ fileName: PropType<string>;
21
+ forceProxy: PropType<boolean>;
22
+ keywords: PropType<string>;
23
+ landscape: PropType<boolean>;
24
+ margin: PropType<string | number | import('@progress/kendo-drawing/pdf').PageMargin>;
25
+ pageTemplate: PropType<any>;
26
+ paperSize: PropType<import('@progress/kendo-drawing/pdf').PaperSize>;
27
+ repeatHeaders: PropType<boolean>;
28
+ scale: PropType<number>;
29
+ proxyData: PropType<{
30
+ [key: string]: string;
31
+ }>;
32
+ proxyURL: PropType<string>;
33
+ proxyTarget: PropType<string>;
34
+ producer: PropType<string>;
35
+ subject: PropType<string>;
36
+ title: PropType<string>;
37
+ }>, {}, {}, {}, {
38
+ save(callback?: () => void): void;
39
+ }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
40
+ author: PropType<string>;
41
+ avoidLinks: PropType<string | boolean>;
42
+ forcePageBreak: PropType<string>;
43
+ keepTogether: PropType<string>;
44
+ creator: PropType<string>;
45
+ date: PropType<Date>;
46
+ imageResolution: PropType<number>;
47
+ fileName: PropType<string>;
48
+ forceProxy: PropType<boolean>;
49
+ keywords: PropType<string>;
50
+ landscape: PropType<boolean>;
51
+ margin: PropType<string | number | import('@progress/kendo-drawing/pdf').PageMargin>;
52
+ pageTemplate: PropType<any>;
53
+ paperSize: PropType<import('@progress/kendo-drawing/pdf').PaperSize>;
54
+ repeatHeaders: PropType<boolean>;
55
+ scale: PropType<number>;
56
+ proxyData: PropType<{
57
+ [key: string]: string;
58
+ }>;
59
+ proxyURL: PropType<string>;
60
+ proxyTarget: PropType<string>;
61
+ producer: PropType<string>;
62
+ subject: PropType<string>;
63
+ title: PropType<string>;
64
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
65
+ export { PDFExport };
@@ -0,0 +1,156 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { PaperSize, PageMargin } from '@progress/kendo-drawing/pdf';
9
+ /**
10
+ * Represents the props of the KendoVue PDFExport component.
11
+ */
12
+ export interface PDFExportProps {
13
+ /**
14
+ * The author (metadata) of the PDF document.
15
+ */
16
+ author?: string;
17
+ /**
18
+ * A flag that indicates whether to produce actual hyperlinks in the exported PDF file.
19
+ * It is also possible to set a CSS selector. All matching links will be ignored.
20
+ */
21
+ avoidLinks?: boolean | string;
22
+ /**
23
+ * An optional CSS selector that specifies the elements which cause the page breaks.
24
+ */
25
+ forcePageBreak?: string;
26
+ /**
27
+ * An optional CSS selector that specifies the elements which should not be split across the pages.
28
+ */
29
+ keepTogether?: string;
30
+ /**
31
+ * The creator of the PDF document.
32
+ *
33
+ * @default "Kendo UI PDF Generator"
34
+ */
35
+ creator?: string;
36
+ /**
37
+ * The date when the PDF document is created. Defaults to `new Date()`.
38
+ */
39
+ date?: Date;
40
+ /**
41
+ * The forced resolution of the images in the exported PDF document.
42
+ * By default, the images are exported at their full resolution.
43
+ */
44
+ imageResolution?: number;
45
+ /**
46
+ * Specifies the name of the exported PDF file.
47
+ *
48
+ * @default "export.pdf"
49
+ */
50
+ fileName?: string;
51
+ /**
52
+ * If set to `true`, the content is forwarded to `proxyURL` even if the
53
+ * browser supports local saving of files.
54
+ */
55
+ forceProxy?: boolean;
56
+ /**
57
+ * The keywords (metadata) of the PDF document.
58
+ */
59
+ keywords?: string;
60
+ /**
61
+ * A flag that indicates if the page will be in a landscape orientation.
62
+ * By default, the page is in a portrait orientation.
63
+ *
64
+ * @default false
65
+ */
66
+ landscape?: boolean;
67
+ /**
68
+ * Specifies the margins of the page.
69
+ *
70
+ * The supported units are:
71
+ * * `"mm"`
72
+ * * `"cm"`
73
+ * * `"in"`
74
+ * * `"pt"` (default).
75
+ *
76
+ * > Numbers are considered to be points (`"pt"`).
77
+ */
78
+ margin?: string | number | PageMargin;
79
+ /**
80
+ * A Vue functional or class component which is used as a template that is inserted
81
+ * into each page of the PDF document. The number of the current page (`pageNum`)
82
+ * and the total number of pages (`totalPages`) are passed to the component as properties.
83
+ */
84
+ pageTemplate?: any;
85
+ /**
86
+ * Specifies the paper size of the PDF document. Defaults to `"auto"` which means that the paper size
87
+ * is determined by the content.
88
+ * The size of the content in pixels matches the size of the output in points (1 pixel = 1/72 inch).
89
+ *
90
+ * If set, the content will be split across multiple pages.
91
+ * This enables the `repeatHeaders` and `scale` options, and allows you to specify a template.
92
+ *
93
+ * The supported values are:
94
+ * * A predefined size. The supported paper sizes are: `A0-A10`, `B0-B10`, `C0-C10`,
95
+ * `Executive`, `Folio`, `Legal`, `Letter`, `Tabloid`.
96
+ * * An array of two numbers which specify the width and height in points (1pt = 1/72in).
97
+ * * An array of two strings which specify the width and height in units.
98
+ * The supported units are `"mm"`, `"cm"`, `"in"`, and `"pt"`.
99
+ */
100
+ paperSize?: PaperSize;
101
+ /**
102
+ * Specifies if the `<thead>` elements of the tables will be repeated on each page.
103
+ */
104
+ repeatHeaders?: boolean;
105
+ /**
106
+ * A scale factor.
107
+ * The text size on the screen might be too big for printing.
108
+ * To scale down the output in PDF, use this option.
109
+ *
110
+ * @default 1
111
+ */
112
+ scale?: number;
113
+ /**
114
+ * A key/value dictionary of form values which will be sent to the proxy.
115
+ * Can be used to submit Anti-Forgery tokens and other metadata.
116
+ */
117
+ proxyData?: {
118
+ [key: string]: string;
119
+ };
120
+ /**
121
+ * The URL of the server-side proxy which streams the file to the end user.
122
+ * You need to use a proxy if the browser is not capable of saving files locally&mdash;
123
+ * for example, Internet Explorer 9 and Safari.
124
+ * It is your responsibility to implement the server-side proxy.
125
+ *
126
+ * In the request body, the proxy receives a POST request with the following parameters:
127
+ *
128
+ * - `"contentType"`&mdash;The MIME type of the file.
129
+ * - `"base64"`&mdash;The base-64 encoded file content.
130
+ * - `"fileName"`&mdash;The file name, as requested by the caller.
131
+ *
132
+ * The proxy returns the decoded file with the `"Content-Disposition"` header set to `attachment;
133
+ * filename="<fileName.pdf>"`.
134
+ */
135
+ proxyURL?: string;
136
+ /**
137
+ * A name or keyword which indicates where to display the document that is returned from the proxy.
138
+ * To display the document in a new window or iframe,
139
+ * the proxy has to have the `"Content-Disposition"` header set to `inline; filename="<fileName.pdf>"`.
140
+ *
141
+ * @default "_self"
142
+ */
143
+ proxyTarget?: string;
144
+ /**
145
+ * The producer (metadata) of the PDF document.
146
+ */
147
+ producer?: string;
148
+ /**
149
+ * The subject (metadata) of the PDF document.
150
+ */
151
+ subject?: string;
152
+ /**
153
+ * The title (metadata) of the PDF document.
154
+ */
155
+ title?: string;
156
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * Represents the props of a page template component that
10
+ * can be added to the PDFExport component.
11
+ */
12
+ export interface PageTemplateProps {
13
+ /**
14
+ * The number of the current page.
15
+ */
16
+ pageNum: number;
17
+ /**
18
+ * The total number of pages.
19
+ */
20
+ totalPages: number;
21
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * @hidden
10
+ */
11
+ export declare const hasClasses: (element: HTMLElement, classNames: string) => boolean;
12
+ /**
13
+ * @hidden
14
+ */
15
+ export declare const matchesClasses: (classNames: string) => (element: HTMLElement) => boolean;
16
+ /**
17
+ * @hidden
18
+ */
19
+ export declare const matchesNodeName: (nodeName: string) => any;
20
+ /**
21
+ * @hidden
22
+ */
23
+ export declare const closest: (node: any, predicate: any) => any;
24
+ /**
25
+ * @hidden
26
+ */
27
+ export declare const closestInScope: (node: any, predicate: any, scope: any) => any;
28
+ /**
29
+ * @hidden
30
+ */
31
+ export declare const contains: (parent: any, node: any, matchSelf?: boolean) => boolean;
32
+ /**
33
+ * @hidden
34
+ */
35
+ export declare const isVisible: (element: any) => boolean;
36
+ /**
37
+ * @hidden
38
+ */
39
+ export declare const isFocusable: (element: any, checkVisibility?: boolean) => boolean;
40
+ /**
41
+ * @hidden
42
+ */
43
+ export declare const findElement: (node: any, predicate: (element: any) => boolean, matchSelf?: boolean) => any;
44
+ /**
45
+ * @hidden
46
+ */
47
+ export declare const findFocusable: (element: any, checkVisibility?: boolean) => any;
48
+ /**
49
+ * @hidden
50
+ */
51
+ export declare const findFocusableChild: (element: any, checkVisibility?: boolean) => any;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * @hidden
10
+ */
11
+ export declare const HEADER_CLASS: string;
12
+ /**
13
+ * @hidden
14
+ */
15
+ export declare const FOOTER_CLASS: string;
16
+ /**
17
+ * @hidden
18
+ */
19
+ export declare class GridQuery {
20
+ private element;
21
+ private headerWrap;
22
+ private list;
23
+ private footerWrap;
24
+ constructor(element: HTMLElement);
25
+ content(): Element;
26
+ header(): Element;
27
+ footer(): Element;
28
+ table(): Node;
29
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * @hidden
10
+ */
11
+ export declare const appendNodes: (element: any, nodes: any[]) => void;
12
+ /**
13
+ * @hidden
14
+ */
15
+ export declare const wrapTable: (table: any) => any;
16
+ /**
17
+ * @hidden
18
+ */
19
+ export declare const createTableElement: (sources: any) => any;
20
+ /**
21
+ * @hidden
22
+ */
23
+ export declare const setFirstCellClass: (header: any, headers: any) => void;
24
+ /**
25
+ * @hidden
26
+ */
27
+ export declare const createTable: (colGroups: any[], headers: any[], bodies: any[], footers: any[]) => any;
@@ -12,4 +12,4 @@
12
12
  * Licensed under commercial license. See LICENSE.md in the package root for more information
13
13
  *-------------------------------------------------------------------------------------------
14
14
  */
15
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue"),require("@progress/kendo-drawing"),require("@progress/kendo-file-saver"),require("@progress/kendo-vue-common")):"function"==typeof define&&define.amd?define(["exports","vue","@progress/kendo-drawing","@progress/kendo-file-saver","@progress/kendo-vue-common"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoVuePdf={},e.Vue,e.KendoDrawing,e.KendoFileSaver,e.KendoVueCommon)}(this,(function(e,t,o,n,r){"use strict";function i(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(o){if("default"!==o){var n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}})),t.default=e,Object.freeze(t)}const s=i(t),a=s.h,l=s.createApp;let d=class{constructor(e,t,o,n,i={}){this.drawDOM=e,this.exportPDF=t,this.saveAs=o,this.domElement=n,this.options=i,this.convertPageTemplateToHtml=e=>{if(a&&l&&r.canUseDOM){const t=this,o=document.createElement("div");o.setAttribute("style","position:absolute; left: -5000px; top: 0px;");const n=document.createElement("div");let r;return o.appendChild(n),document.body.appendChild(o),r=l({render:function(){return a(t.options.pageTemplate,{pageNum:e.pageNum,totalPages:e.totalPages})},mounted:function(){this.$nextTick((function(){document.body.removeChild(o),r.unmount()}))}}),r.mount(n),n.outerHTML}{const t=s.extend?s:s.default,o=new(t.extend.call(t,this.options.pageTemplate))({propsData:{pageNum:e.pageNum,totalPages:e.totalPages}});return o.$mount(),o.$nextTick((function(){o.$destroy()})),o.$el.outerHTML}}}savePDF(e){const t=this.drawDOM(this.domElement,this.getDrawOptions()).then((e=>this.exportPDF(e,this.getPDFOptions()))).then((e=>this.saveAs(e,this.options.fileName||"export.pdf",this.getSaveOptions())));e&&t.then(e,e)}getDrawOptions(){return{avoidLinks:this.options.avoidLinks,forcePageBreak:this.options.forcePageBreak,keepTogether:this.options.keepTogether,margin:this.options.margin,paperSize:this.options.paperSize,landscape:this.options.landscape,repeatHeaders:this.options.repeatHeaders,scale:this.options.scale,template:this.options.pageTemplate&&this.convertPageTemplateToHtml}}getPDFOptions(){return{author:this.options.author,creator:this.options.creator||"Kendo UI PDF Generator",date:this.options.date,imgDPI:this.options.imageResolution,keywords:this.options.keywords,landscape:this.options.landscape,margin:this.options.margin,multiPage:!0,paperSize:this.options.paperSize,producer:this.options.producer,subject:this.options.subject,title:this.options.title}}getSaveOptions(){return{forceProxy:this.options.forceProxy,proxyData:this.options.proxyData,proxyTarget:this.options.proxyTarget,proxyURL:this.options.proxyURL}}};const p={name:"@progress/kendo-vue-pdf",productName:"Kendo UI for Vue",productCode:"KENDOUIVUE",productCodes:["KENDOUIVUE"],publishDate:1620290455,version:"8.0.3-develop.2",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"},c=t.defineComponent({name:"pdf-export",props:{author:String,avoidLinks:[Boolean,String],forcePageBreak:String,keepTogether:String,creator:String,date:Date,imageResolution:Number,fileName:String,forceProxy:Boolean,keywords:String,landscape:Boolean,margin:[String,Object],pageTemplate:[Object,Function],paperSize:[String,Object],repeatHeaders:Boolean,scale:Number,proxyData:Object,proxyURL:String,proxyTarget:String,producer:String,subject:String,title:String},methods:{save(e){new d(o.drawDOM,o.exportPDF,n.saveAs,this.$el,this.$props).savePDF(e)}},created:function(){r.validatePackage(p)},render(){const e=r.getDefaultSlots(this);return t.createVNode("div",null,[e])}});function u(e,t={},r){new d(o.drawDOM,o.exportPDF,n.saveAs,e,t).savePDF(r)}const h={},g=e=>String(e).trim().split(" "),m=e=>t=>((e,t)=>{const o=g(t);return!!g(e.className).find((e=>o.indexOf(e)>=0))})(t,e),f=e=>(h[e]||(h[e]=t=>String(t.nodeName).toLowerCase()===e.toLowerCase()),h[e]),S=(e,t,o=!0)=>{if(e){if(o&&t(e))return e;for(e=e.firstChild;e;){if(1===e.nodeType){const o=S(e,t);if(o)return o}e=e.nextSibling}}},y="k-grid-header",v="k-grid-footer",b=f("TABLE"),x=e=>e?"locked":"wrap";class k{constructor(e){this.element=e,this.list=S(e,m("k-grid-container"))}content(e){return S(this.list,m("k-grid-content"+(e?"-locked":"")))}header(e){return this.headerWrap=this.headerWrap||S(this.element,m(y)),S(this.headerWrap,m(`${y}-${x(e)}`))}footer(e){return this.footerWrap=this.footerWrap||S(this.element,m(v)),S(this.footerWrap,m(`${v}-${x(e)}`))}table(){return S(this.element,b)}}const D="k-first",O=(e,t)=>{const o=t.length;for(let n=0;n<o;n++)e.appendChild(t[n].cloneNode(!0))},$=e=>{const t=document.createElement("div");return t.className="k-grid k-grid-md",t.appendChild(e),t},w=e=>{const t=e.length,o=e[0].cloneNode(!0),n=o.rows.length;if(t>1)for(let r=0;r<n;r++)for(let n=1;n<t;n++)O(o.rows[r],e[n].rows[r].cells);return o},P=(e,t,o,n)=>{const r=document.createElement("table"),i=e[0].cloneNode(!0);for(let t=1;t<e.length;t++)O(i,e[t].querySelectorAll("col"));const s=w(t),a=w(o);if(s.className="k-grid-header",((e,t)=>{if(t.length>1&&e.rows.length>1)for(let o=1;o<e.rows.length;o++){const n=t[0].rows[o].cells.length,r=e.rows[o].cells[n];-1===String(r.className).indexOf(D)&&(r.className+=` ${D}`)}})(s,t),r.appendChild(i),r.appendChild(s),r.appendChild(a),n.length){const e=w(n);e.className="k-grid-footer",r.appendChild(e)}return $(r)},C=e=>{const t=new k(e),o=t.content();let n;if(o){const e=[o.querySelector("colgroup")],r=[t.header().querySelector("thead")],i=[o.querySelector("tbody")],s=t.footer(),a=s?[s.querySelector("tfoot")]:[];n=P(e,r,i,a)}else n=$(t.table().cloneNode(!0));return n};function N(e){return(o,n={},i,s,a)=>function(e,o,n={},i,s,a){let l,d,p,c;function u(){if(!r.canUseDOM)return;l=document.createElement("div");const e={position:"absolute",left:"-5000px",top:"0px"};Object.assign(l.style,e),d=document.createElement("div"),l.appendChild(d),document.body.appendChild(l);const n=s&&{dataItems:s,total:s.length,pageSize:s.length,skip:0};if(a){const e={render:function(){return t.h(o.type,{...o.props,...n},o.children)},store:o.$store,mounted:function(){this.$el.style&&(this.$el.style.width="1000px"),h.call(this)}};c=t.createApp(e),c.mount(d)}else{const e=Object.getPrototypeOf(o).constructor;c=new e({propsData:Object.assign({},o.$props,n),store:o.$store,mounted:()=>{c.$el.style&&(c.$el.style.width="1000px"),h.call(c)}}),c.$slots=o.$slots,c.$scopedSlots=o.$scopedSlots,c.$mount(d)}}function h(){e(m.call(this),n,g)}function g(){c.unmount?c.unmount():c.$destroy(),document.body.removeChild(l),document.body.removeChild(p),l=p=void 0,i&&i()}function m(){p=document.createElement("div"),p.className="k-grid-pdf-export-element";const e=!this.$el||3!==this.$el.nodeType&&8!==this.$el.nodeType?this.$el:this.$el.nextElementSibling,t=C(e);return p.appendChild(t),document.body.appendChild(p),t}u()}(e,o,n,i,s,a)}const T=t.defineComponent({name:"grid-pdf-export",props:{author:String,avoidLinks:[Boolean,String],forcePageBreak:String,keepTogether:String,creator:String,date:Date,imageResolution:Number,fileName:String,forceProxy:Boolean,keywords:String,landscape:Boolean,margin:[String,Object],pageTemplate:[Object,Function],paperSize:[String,Object],repeatHeaders:Boolean,scale:Number,proxyData:Object,proxyURL:String,proxyTarget:String,producer:String,subject:String,title:String},created(){this.saveGridPDF=N(this.getSavePDF())},methods:{save(e,t){const o=r.getDefaultSlots(this).filter((e=>{var t,o,n;return e.tag&&-1!==e.tag.toLowerCase().indexOf("grid")||e.componentOptions&&-1!==(null==(t=e.componentOptions.tag)?void 0:t.toLowerCase().indexOf("grid"))||-1!==(null==(n=null==(o=e.type)?void 0:o.name)?void 0:n.toLowerCase().indexOf("grid"))}));o.length&&(this.gridComponent=o[0],this.saveGridPDF(this.gridComponent,this.$props,t,e,!0))},getSavePDF:()=>u},render(){const e=r.getDefaultSlots(this);return t.createVNode("div",null,[e])}}),j="k-grid-header",L="k-grid-footer",E=f("TABLE");class F{constructor(e){this.element=e,this.list=S(e,m("k-grid"))}content(){return S(this.list,m("k-grid"))}header(){return this.headerWrap=this.headerWrap||S(this.element,m(j)),S(this.headerWrap,m(`${j}`))}footer(){return this.footerWrap=this.footerWrap||S(this.element,m(L)),S(this.footerWrap,m(`${L}`))}table(){return S(this.element,E)}}const B=e=>{const t=new F(e),o=t.content();let n,r=t.header();if(r.children.length>1&&r.removeChild(r.children[1]),r.children[0].childNodes.forEach((function(e){if(e.style)return e.style.top=0})),o){const e=[o.querySelector("colgroup")],i=[r],s=[o.querySelector("tbody")],a=t.footer(),l=a?[a.querySelector("tfoot")]:[];n=P(e,i,s,l)}else n=$(t.table().cloneNode(!0));return n};function U(e){return(o,n={},i,s,a)=>function(e,o,n={},i,s,a){let l,d,p,c;function u(){if(!r.canUseDOM)return;l=document.createElement("div"),l.setAttribute("style","position:absolute; left: -5000px; top: 0px;"),d=document.createElement("div"),l.appendChild(d),document.body.appendChild(l);const e=s&&{dataItems:s,total:s.length,pageSize:s.length,skip:0};if(a){const n={render:function(){return t.h(o.type,{...o.props,...e},o.children)},store:o.$store,mounted:function(){this.$el.style&&(this.$el.style.width="1000px"),h.call(this)}};c=t.createApp(n),c.mount(d)}else{const t=Object.getPrototypeOf(o).constructor;c=new t({propsData:Object.assign({},o.$props,e),store:o.$store,mounted:()=>{c.$el.style&&(c.$el.style.width="1000px"),h.call(c)}}),c.$slots=o.$slots,c.$scopedSlots=o.$scopedSlots,c.$mount(d)}}function h(){e(m.call(this),n,g)}function g(){c.unmount?c.unmount():c.$destroy(),document.body.removeChild(l),document.body.removeChild(p),l=p=void 0,i&&i()}function m(){p=document.createElement("div"),p.className="k-treelist-pdf-export-element";const e=!this.$el||3!==this.$el.nodeType&&8!==this.$el.nodeType?this.$el:this.$el.nextElementSibling,t=B(e);return p.appendChild(t),document.body.appendChild(p),t}u()}(e,o,n,i,s,a)}const q=t.defineComponent({name:"treelist-pdf-export",props:{author:String,avoidLinks:[Boolean,String],forcePageBreak:String,keepTogether:String,creator:String,date:Date,imageResolution:Number,fileName:String,forceProxy:Boolean,keywords:String,landscape:Boolean,margin:[String,Object],pageTemplate:[Object,Function],paperSize:[String,Object],repeatHeaders:Boolean,scale:Number,proxyData:Object,proxyURL:String,proxyTarget:String,producer:String,subject:String,title:String},created(){this.saveTreeListPDF=U(this.getSavePDF())},methods:{save(e,t){const o=r.getDefaultSlots(this).filter((e=>{var t,o,n;return e.tag&&-1!==e.tag.toLowerCase().indexOf("treelist")||e.componentOptions&&-1!==(null==(t=e.componentOptions.tag)?void 0:t.toLowerCase().indexOf("treelist"))||-1!==(null==(n=null==(o=e.type)?void 0:o.name)?void 0:n.toLowerCase().indexOf("treelist"))}));o.length&&(this.treeListComponent=o[0],this.saveTreeListPDF(this.treeListComponent,this.$props,t,e,!0))},getSavePDF:()=>u},render(){const e=r.getDefaultSlots(this);return t.createVNode("div",null,[e])}});e.GridPdfExport=T,e.PDFExport=c,e.TreeListPDFExport=q,e.savePDF=u}));
15
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue"),require("@progress/kendo-drawing"),require("@progress/kendo-file-saver"),require("@progress/kendo-vue-common")):"function"==typeof define&&define.amd?define(["exports","vue","@progress/kendo-drawing","@progress/kendo-file-saver","@progress/kendo-vue-common"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoVuePdf={},e.Vue,e.KendoDrawing,e.KendoFileSaver,e.KendoVueCommon)}(this,function(e,t,o,n,r){"use strict";function i(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(o){if("default"!==o){var n=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(t,o,n.get?n:{enumerable:!0,get:function(){return e[o]}})}}),t.default=e,Object.freeze(t)}const s=i(t),a=s.h,l=s.createApp;let d=class{constructor(e,t,o,n,i={}){this.drawDOM=e,this.exportPDF=t,this.saveAs=o,this.domElement=n,this.options=i,this.convertPageTemplateToHtml=e=>{if(a&&l&&r.canUseDOM){const t=this,o=document.createElement("div");o.setAttribute("style","position:absolute; left: -5000px; top: 0px;");const n=document.createElement("div");let r;return o.appendChild(n),document.body.appendChild(o),r=l({render:function(){return a(t.options.pageTemplate,{pageNum:e.pageNum,totalPages:e.totalPages})},mounted:function(){this.$nextTick(function(){document.body.removeChild(o),r.unmount()})}}),r.mount(n),n.outerHTML}{const t=s.extend?s:s.default,o=new(t.extend.call(t,this.options.pageTemplate))({propsData:{pageNum:e.pageNum,totalPages:e.totalPages}});return o.$mount(),o.$nextTick(function(){o.$destroy()}),o.$el.outerHTML}}}savePDF(e){const t=this.drawDOM(this.domElement,this.getDrawOptions()).then(e=>this.exportPDF(e,this.getPDFOptions())).then(e=>this.saveAs(e,this.options.fileName||"export.pdf",this.getSaveOptions()));e&&t.then(e,e)}getDrawOptions(){return{avoidLinks:this.options.avoidLinks,forcePageBreak:this.options.forcePageBreak,keepTogether:this.options.keepTogether,margin:this.options.margin,paperSize:this.options.paperSize,landscape:this.options.landscape,repeatHeaders:this.options.repeatHeaders,scale:this.options.scale,template:this.options.pageTemplate&&this.convertPageTemplateToHtml}}getPDFOptions(){return{author:this.options.author,creator:this.options.creator||"Kendo UI PDF Generator",date:this.options.date,imgDPI:this.options.imageResolution,keywords:this.options.keywords,landscape:this.options.landscape,margin:this.options.margin,multiPage:!0,paperSize:this.options.paperSize,producer:this.options.producer,subject:this.options.subject,title:this.options.title}}getSaveOptions(){return{forceProxy:this.options.forceProxy,proxyData:this.options.proxyData,proxyTarget:this.options.proxyTarget,proxyURL:this.options.proxyURL}}};const p={name:"@progress/kendo-vue-pdf",productName:"Kendo UI for Vue",productCode:"KENDOUIVUE",productCodes:["KENDOUIVUE"],publishDate:1620290455,version:"8.0.3-develop.3",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"},c=t.defineComponent({name:"pdf-export",props:{author:String,avoidLinks:[Boolean,String],forcePageBreak:String,keepTogether:String,creator:String,date:Date,imageResolution:Number,fileName:String,forceProxy:Boolean,keywords:String,landscape:Boolean,margin:[String,Object],pageTemplate:[Object,Function],paperSize:[String,Object],repeatHeaders:Boolean,scale:Number,proxyData:Object,proxyURL:String,proxyTarget:String,producer:String,subject:String,title:String},methods:{save(e){new d(o.drawDOM,o.exportPDF,n.saveAs,this.$el,this.$props).savePDF(e)}},created:function(){r.validatePackage(p)},render(){const e=r.getDefaultSlots(this);return t.createVNode("div",null,[e])}});function u(e,t={},r){new d(o.drawDOM,o.exportPDF,n.saveAs,e,t).savePDF(r)}const h={},g=e=>String(e).trim().split(" "),m=e=>t=>((e,t)=>{const o=g(t);return!!g(e.className).find(e=>o.indexOf(e)>=0)})(t,e),f=e=>(h[e]||(h[e]=t=>String(t.nodeName).toLowerCase()===e.toLowerCase()),h[e]),S=(e,t,o=!0)=>{if(e){if(o&&t(e))return e;for(e=e.firstChild;e;){if(1===e.nodeType){const o=S(e,t);if(o)return o}e=e.nextSibling}}},y="k-grid-header",v="k-grid-footer",b=f("TABLE"),x=e=>e?"locked":"wrap";class k{constructor(e){this.element=e,this.list=S(e,m("k-grid-container"))}content(e){return S(this.list,m("k-grid-content"+(e?"-locked":"")))}header(e){return this.headerWrap=this.headerWrap||S(this.element,m(y)),S(this.headerWrap,m(`${y}-${x(e)}`))}footer(e){return this.footerWrap=this.footerWrap||S(this.element,m(v)),S(this.footerWrap,m(`${v}-${x(e)}`))}table(){return S(this.element,b)}}const D="k-first",O=(e,t)=>{const o=t.length;for(let n=0;n<o;n++)e.appendChild(t[n].cloneNode(!0))},$=e=>{const t=document.createElement("div");return t.className="k-grid k-grid-md",t.appendChild(e),t},w=e=>{const t=e.length,o=e[0].cloneNode(!0),n=o.rows.length;if(t>1)for(let r=0;r<n;r++)for(let n=1;n<t;n++)O(o.rows[r],e[n].rows[r].cells);return o},P=(e,t,o,n)=>{const r=document.createElement("table"),i=e[0].cloneNode(!0);for(let t=1;t<e.length;t++)O(i,e[t].querySelectorAll("col"));const s=w(t),a=w(o);if(s.className="k-grid-header",((e,t)=>{if(t.length>1&&e.rows.length>1)for(let o=1;o<e.rows.length;o++){const n=t[0].rows[o].cells.length,r=e.rows[o].cells[n];-1===String(r.className).indexOf(D)&&(r.className+=` ${D}`)}})(s,t),r.appendChild(i),r.appendChild(s),r.appendChild(a),n.length){const e=w(n);e.className="k-grid-footer",r.appendChild(e)}return $(r)},C=e=>{const t=new k(e),o=t.content();let n;if(o){const e=[o.querySelector("colgroup")],r=[t.header().querySelector("thead")],i=[o.querySelector("tbody")],s=t.footer(),a=s?[s.querySelector("tfoot")]:[];n=P(e,r,i,a)}else n=$(t.table().cloneNode(!0));return n};function N(e){return(o,n={},i,s,a)=>function(e,o,n={},i,s,a){let l,d,p,c;function u(){if(!r.canUseDOM)return;l=document.createElement("div");const e={position:"absolute",left:"-5000px",top:"0px"};Object.assign(l.style,e),d=document.createElement("div"),l.appendChild(d),document.body.appendChild(l);const n=s&&{dataItems:s,total:s.length,pageSize:s.length,skip:0};if(a){const e={render:function(){return t.h(o.type,{...o.props,...n},o.children)},store:o.$store,mounted:function(){this.$el.style&&(this.$el.style.width="1000px"),h.call(this)}};c=t.createApp(e),c.mount(d)}else{const e=Object.getPrototypeOf(o).constructor;c=new e({propsData:Object.assign({},o.$props,n),store:o.$store,mounted:()=>{c.$el.style&&(c.$el.style.width="1000px"),h.call(c)}}),c.$slots=o.$slots,c.$scopedSlots=o.$scopedSlots,c.$mount(d)}}function h(){e(m.call(this),n,g)}function g(){c.unmount?c.unmount():c.$destroy(),document.body.removeChild(l),document.body.removeChild(p),l=p=void 0,i&&i()}function m(){p=document.createElement("div"),p.className="k-grid-pdf-export-element";const e=!this.$el||3!==this.$el.nodeType&&8!==this.$el.nodeType?this.$el:this.$el.nextElementSibling,t=C(e);return p.appendChild(t),document.body.appendChild(p),t}u()}(e,o,n,i,s,a)}const T=t.defineComponent({name:"grid-pdf-export",props:{author:String,avoidLinks:[Boolean,String],forcePageBreak:String,keepTogether:String,creator:String,date:Date,imageResolution:Number,fileName:String,forceProxy:Boolean,keywords:String,landscape:Boolean,margin:[String,Object],pageTemplate:[Object,Function],paperSize:[String,Object],repeatHeaders:Boolean,scale:Number,proxyData:Object,proxyURL:String,proxyTarget:String,producer:String,subject:String,title:String},created(){this.saveGridPDF=N(this.getSavePDF())},methods:{save(e,t){const o=r.getDefaultSlots(this).filter(e=>{var t,o,n;return e.tag&&-1!==e.tag.toLowerCase().indexOf("grid")||e.componentOptions&&-1!==(null==(t=e.componentOptions.tag)?void 0:t.toLowerCase().indexOf("grid"))||-1!==(null==(n=null==(o=e.type)?void 0:o.name)?void 0:n.toLowerCase().indexOf("grid"))});o.length&&(this.gridComponent=o[0],this.saveGridPDF(this.gridComponent,this.$props,t,e,!0))},getSavePDF:()=>u},render(){const e=r.getDefaultSlots(this);return t.createVNode("div",null,[e])}}),j="k-grid-header",L="k-grid-footer",E=f("TABLE");class F{constructor(e){this.element=e,this.list=S(e,m("k-grid"))}content(){return S(this.list,m("k-grid"))}header(){return this.headerWrap=this.headerWrap||S(this.element,m(j)),S(this.headerWrap,m(`${j}`))}footer(){return this.footerWrap=this.footerWrap||S(this.element,m(L)),S(this.footerWrap,m(`${L}`))}table(){return S(this.element,E)}}const B=e=>{const t=new F(e),o=t.content();let n,r=t.header();if(r.children.length>1&&r.removeChild(r.children[1]),r.children[0].childNodes.forEach(function(e){if(e.style)return e.style.top=0}),o){const e=[o.querySelector("colgroup")],i=[r],s=[o.querySelector("tbody")],a=t.footer(),l=a?[a.querySelector("tfoot")]:[];n=P(e,i,s,l)}else n=$(t.table().cloneNode(!0));return n};function U(e){return(o,n={},i,s,a)=>function(e,o,n={},i,s,a){let l,d,p,c;function u(){if(!r.canUseDOM)return;l=document.createElement("div"),l.setAttribute("style","position:absolute; left: -5000px; top: 0px;"),d=document.createElement("div"),l.appendChild(d),document.body.appendChild(l);const e=s&&{dataItems:s,total:s.length,pageSize:s.length,skip:0};if(a){const n={render:function(){return t.h(o.type,{...o.props,...e},o.children)},store:o.$store,mounted:function(){this.$el.style&&(this.$el.style.width="1000px"),h.call(this)}};c=t.createApp(n),c.mount(d)}else{const t=Object.getPrototypeOf(o).constructor;c=new t({propsData:Object.assign({},o.$props,e),store:o.$store,mounted:()=>{c.$el.style&&(c.$el.style.width="1000px"),h.call(c)}}),c.$slots=o.$slots,c.$scopedSlots=o.$scopedSlots,c.$mount(d)}}function h(){e(m.call(this),n,g)}function g(){c.unmount?c.unmount():c.$destroy(),document.body.removeChild(l),document.body.removeChild(p),l=p=void 0,i&&i()}function m(){p=document.createElement("div"),p.className="k-treelist-pdf-export-element";const e=!this.$el||3!==this.$el.nodeType&&8!==this.$el.nodeType?this.$el:this.$el.nextElementSibling,t=B(e);return p.appendChild(t),document.body.appendChild(p),t}u()}(e,o,n,i,s,a)}const q=t.defineComponent({name:"treelist-pdf-export",props:{author:String,avoidLinks:[Boolean,String],forcePageBreak:String,keepTogether:String,creator:String,date:Date,imageResolution:Number,fileName:String,forceProxy:Boolean,keywords:String,landscape:Boolean,margin:[String,Object],pageTemplate:[Object,Function],paperSize:[String,Object],repeatHeaders:Boolean,scale:Number,proxyData:Object,proxyURL:String,proxyTarget:String,producer:String,subject:String,title:String},created(){this.saveTreeListPDF=U(this.getSavePDF())},methods:{save(e,t){const o=r.getDefaultSlots(this).filter(e=>{var t,o,n;return e.tag&&-1!==e.tag.toLowerCase().indexOf("treelist")||e.componentOptions&&-1!==(null==(t=e.componentOptions.tag)?void 0:t.toLowerCase().indexOf("treelist"))||-1!==(null==(n=null==(o=e.type)?void 0:o.name)?void 0:n.toLowerCase().indexOf("treelist"))});o.length&&(this.treeListComponent=o[0],this.saveTreeListPDF(this.treeListComponent,this.$props,t,e,!0))},getSavePDF:()=>u},render(){const e=r.getDefaultSlots(this);return t.createVNode("div",null,[e])}});e.GridPdfExport=T,e.PDFExport=c,e.TreeListPDFExport=q,e.savePDF=u});
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { savePDF } from '../savePDF';
9
+ import { PDFExportProps } from '../PDFExportProps';
10
+ import { PropType } from 'vue';
11
+ export interface GridPDFExportProps extends PDFExportProps {
12
+ }
13
+ /**
14
+ * @hidden
15
+ */
16
+ declare const GridPdfExport: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
17
+ author: PropType<string>;
18
+ avoidLinks: PropType<string | boolean>;
19
+ forcePageBreak: PropType<string>;
20
+ keepTogether: PropType<string>;
21
+ creator: PropType<string>;
22
+ date: PropType<Date>;
23
+ imageResolution: PropType<number>;
24
+ fileName: PropType<string>;
25
+ forceProxy: PropType<boolean>;
26
+ keywords: PropType<string>;
27
+ landscape: PropType<boolean>;
28
+ margin: PropType<string | number | import('@progress/kendo-drawing/pdf').PageMargin>;
29
+ pageTemplate: PropType<any>;
30
+ paperSize: PropType<import('@progress/kendo-drawing/pdf').PaperSize>;
31
+ repeatHeaders: PropType<boolean>;
32
+ scale: PropType<number>;
33
+ proxyData: PropType<{
34
+ [key: string]: string;
35
+ }>;
36
+ proxyURL: PropType<string>;
37
+ proxyTarget: PropType<string>;
38
+ producer: PropType<string>;
39
+ subject: PropType<string>;
40
+ title: PropType<string>;
41
+ }>, {}, {}, {}, {
42
+ save(data?: any[], callback?: () => void): void;
43
+ getSavePDF(): typeof savePDF;
44
+ }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
45
+ author: PropType<string>;
46
+ avoidLinks: PropType<string | boolean>;
47
+ forcePageBreak: PropType<string>;
48
+ keepTogether: PropType<string>;
49
+ creator: PropType<string>;
50
+ date: PropType<Date>;
51
+ imageResolution: PropType<number>;
52
+ fileName: PropType<string>;
53
+ forceProxy: PropType<boolean>;
54
+ keywords: PropType<string>;
55
+ landscape: PropType<boolean>;
56
+ margin: PropType<string | number | import('@progress/kendo-drawing/pdf').PageMargin>;
57
+ pageTemplate: PropType<any>;
58
+ paperSize: PropType<import('@progress/kendo-drawing/pdf').PaperSize>;
59
+ repeatHeaders: PropType<boolean>;
60
+ scale: PropType<number>;
61
+ proxyData: PropType<{
62
+ [key: string]: string;
63
+ }>;
64
+ proxyURL: PropType<string>;
65
+ proxyTarget: PropType<string>;
66
+ producer: PropType<string>;
67
+ subject: PropType<string>;
68
+ title: PropType<string>;
69
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
70
+ export { GridPdfExport };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * @hidden
10
+ */
11
+ export declare const exportElement: (wrapper: HTMLElement) => HTMLElement;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ /**
9
+ * @hidden
10
+ */
11
+ export declare const HEADER_CLASS: string;
12
+ /**
13
+ * @hidden
14
+ */
15
+ export declare const FOOTER_CLASS: string;
16
+ /**
17
+ * @hidden
18
+ */
19
+ export declare class GridQuery {
20
+ private element;
21
+ private headerWrap;
22
+ private list;
23
+ private footerWrap;
24
+ constructor(element: HTMLElement);
25
+ content(locked?: boolean): Element;
26
+ header(locked?: boolean): Element;
27
+ footer(locked?: boolean): Element;
28
+ table(): Node;
29
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2026 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ import { PDFExportProps } from '../PDFExportProps';
9
+ /**
10
+ * @hidden
11
+ */
12
+ export declare function provideSaveGridPDF(savePDF: (domElement: HTMLElement, options?: PDFExportProps, callback?: () => void) => void): (grid: any, pdfExportOptions?: PDFExportProps, callback?: () => void, data?: any, columns?: any) => void;