slick-table 1.1.79 → 1.1.80

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.
Files changed (25) hide show
  1. package/README.md +5 -3
  2. package/dist/index.cjs.js +44 -18
  3. package/dist/index.es.js +198 -147
  4. package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.d.ts +5 -3
  5. package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.d.ts.map +1 -1
  6. package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/lib/applyHtmlToDocument.d.ts +3 -0
  7. package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/lib/applyHtmlToDocument.d.ts.map +1 -0
  8. package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/lib/index.d.ts +2 -0
  9. package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/lib/index.d.ts.map +1 -0
  10. package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.d.ts +1 -1
  11. package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.d.ts.map +1 -1
  12. package/dist/types/shared/model/types/IHtmlDocElements.d.ts +8 -0
  13. package/dist/types/shared/model/types/IHtmlDocElements.d.ts.map +1 -0
  14. package/dist/types/shared/model/types/IPrinter.d.ts +6 -3
  15. package/dist/types/shared/model/types/IPrinter.d.ts.map +1 -1
  16. package/dist/types/shared/model/types/index.d.ts +1 -0
  17. package/dist/types/shared/model/types/index.d.ts.map +1 -1
  18. package/package.json +1 -1
  19. package/src/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.ts +68 -25
  20. package/src/shared/lib/slickgrid/model/SlickTable/printer/lib/applyHtmlToDocument.ts +7 -0
  21. package/src/shared/lib/slickgrid/model/SlickTable/printer/lib/index.ts +1 -0
  22. package/src/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.ts +7 -9
  23. package/src/shared/model/types/IHtmlDocElements.ts +7 -0
  24. package/src/shared/model/types/IPrinter.ts +6 -3
  25. package/src/shared/model/types/index.ts +1 -0
@@ -1,20 +1,22 @@
1
1
  import { SlickGrid } from 'slickgrid';
2
- import { IColumn, IPrinter, ISlickTable } from '../../../../../model/types';
2
+ import { IColumn, IPrinter, ISlickTable, IHtmlDocElements } from '../../../../../model/types';
3
3
  export declare class DefaultPrinter implements IPrinter {
4
4
  clientId: number;
5
5
  clientName: string;
6
6
  cssStyles: string;
7
7
  getClientName(): HTMLTableRowElement;
8
+ getHtmlTemplate(args: IHtmlDocElements): string;
8
9
  columnNames(table: ISlickTable): HTMLTableRowElement;
9
10
  tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
10
- createStyleElement(): HTMLStyleElement;
11
11
  createTableElement(table: ISlickTable): HTMLTableElement;
12
12
  createTbody(table: ISlickTable): HTMLTableSectionElement;
13
13
  filters(table: ISlickTable): HTMLTableRowElement[];
14
14
  /** for tables with total calculations */
15
15
  totals(_table: ISlickTable): HTMLTableRowElement[];
16
- createThead(table: ISlickTable): HTMLTableSectionElement;
16
+ createHeader(table: ISlickTable): HTMLTableSectionElement;
17
+ createColumnNames(table: ISlickTable): HTMLTableSectionElement;
17
18
  createTr(columns: IColumn[], rowIndex: number, grid: SlickGrid): HTMLTableRowElement;
18
19
  print(table: ISlickTable, clientId: number, clientName: string): void;
20
+ createFooter(): HTMLTableSectionElement;
19
21
  }
20
22
  //# sourceMappingURL=DefaultPrinter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultPrinter.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAa,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAK/E,qBAAa,cAAe,YAAW,QAAQ;IAC9C,QAAQ,SAAK;IACb,UAAU,SAAM;IAChB,SAAS,SAAa;IAEtB,aAAa,IAAI,mBAAmB;IAWpC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB;IAmBpD,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB;IAkBzD,kBAAkB,IAAI,gBAAgB;IAKtC,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB;IAMxD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB;IAmBxD,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,EAAE;IAmBlD,yCAAyC;IACzC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,EAAE;IAGlD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB;IAQxD,QAAQ,CACP,OAAO,EAAE,OAAO,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,SAAS,GACb,mBAAmB;IAkCtB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;CAiBrE"}
1
+ {"version":3,"file":"DefaultPrinter.d.ts","sourceRoot":"","sources":["../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,SAAS,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAa,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,qBAAa,cAAe,YAAW,QAAQ;IAC9C,QAAQ,SAAK;IACb,UAAU,SAAM;IAChB,SAAS,SAAa;IAEtB,aAAa,IAAI,mBAAmB;IAWpC,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM;IAsC/C,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB;IAmBpD,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB;IAkBzD,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB;IAMxD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB;IAmBxD,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,EAAE;IAmBlD,yCAAyC;IACzC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,mBAAmB,EAAE;IAGlD,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB;IAOzD,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB;IAK9D,QAAQ,CACP,OAAO,EAAE,OAAO,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,SAAS,GACb,mBAAmB;IAkCtB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAiBrE,YAAY,IAAI,uBAAuB;CAIvC"}
@@ -0,0 +1,3 @@
1
+ /** Replaces the target document with parsed HTML (alternative to document.write). */
2
+ export declare function applyHtmlToDocument(document: Document, html: string): void;
3
+ //# sourceMappingURL=applyHtmlToDocument.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyHtmlToDocument.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/lib/applyHtmlToDocument.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAK1E"}
@@ -0,0 +1,2 @@
1
+ export { applyHtmlToDocument } from './applyHtmlToDocument';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const cssStyles = "\n\t\thtml body {\n\t\t\tfont-family: \"Courier\", \"sans-serif\";\n\t\t\tfont-size: 12px;\n\t\t}\n\t\tbody table {\n\t\t\tmargin: 0 auto;\n\t\t\tborder-collapse: collapse;\n\t\t\tfont-size: 12px;\n\t\t}\n\t\ttable thead {\n\t\t\tborder-bottom: 2px solid gray;\n\t\t}\n\t\ttable th,\n\t\ttable td {\n\t\t\tpadding: 0 10px;\n\t\t\tfont-weight: normal;\n\t\t}\n\t\ttable td.text-center {\n\t\t\ttext-align: center;\n\t\t}\n\t\ttable td.text-right {\n\t\t\ttext-align: right;\n\t\t}\n\t\t.heading {\n\t\t\theight: 30px;\n\t\t}\n\t\t.heading .table_name {\n\t\t\ttext-align: left;\n\t\t\tpadding-bottom: 20px;\n\t\t}\n\t\t.heading .date_stamp {\n\t\t\ttext-align: right;\n\t\t\tpadding-bottom: 20px;\n\t\t}\n\t\t.column_name {\n\t\t\tpadding-top: 1em;\n\t\t\tfont-weight: bold;\n\t\t}\n\t\t.align_right {\n\t\t\ttext-align: right;\n\t\t}\n\t\t.align_left {\n\t\t\ttext-align: left;\n\t\t}\n\t";
1
+ export declare const cssStyles = "\n\t\thtml body {\n\t\t\tfont-family: Carlito, Calibri, Arial, Helvetica, sans-serif;\n\t\t\tfont-size: 12px;\n\t\t}\n\t\tbody table {\n\t\t\tmargin: 0 auto;\n\t\t\tborder-collapse: collapse;\n\t\t\tfont-size: 12px;\n\t\t}\n\t\ttable thead {\n\t\t\tborder-bottom: 1px solid gray;\n\t\t}\n\t\ttable th,\n\t\ttable td {\n\t\t\tpadding: 0 10px;\n\t\t\tfont-weight: normal;\n\t\t}\n\t\ttable td.text-center {\n\t\t\ttext-align: center;\n\t\t}\n\t\ttable td.text-right {\n\t\t\ttext-align: right;\n\t\t}\n\t\t.heading {\n\t\t\theight: 30px;\n\t\t}\n\t\t.heading .table-name {\n\t\t\ttext-align: left;\n\t\t}\n\t\t.heading .date-stamp {\n\t\t\ttext-align: right;\n\t\t}\n\t\t.column-name {\n\t\t\tpadding-top: 1em;\n\t\t\tfont-weight: bold;\n\t\t}\n\t\t.align-right {\n\t\t\ttext-align: right;\n\t\t}\n\t\t.align-left {\n\t\t\ttext-align: left;\n\t\t}\n\t";
2
2
  //# sourceMappingURL=cssStyles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cssStyles.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,63BA6CpB,CAAC"}
1
+ {"version":3,"file":"cssStyles.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,s1BA2CpB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface IHtmlDocElements {
2
+ body?: string;
3
+ footer?: string;
4
+ header?: string;
5
+ styles?: string;
6
+ title?: string;
7
+ }
8
+ //# sourceMappingURL=IHtmlDocElements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IHtmlDocElements.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/IHtmlDocElements.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -1,19 +1,22 @@
1
1
  import { SlickGrid } from 'slickgrid';
2
2
  import { IColumn } from './IColumn';
3
+ import { IHtmlDocElements } from './IHtmlDocElements';
3
4
  import { ISlickTable } from './ISlickTable';
4
5
  export interface IPrinter {
5
6
  clientId: number;
6
7
  clientName: string;
7
8
  cssStyles: string;
8
9
  getClientName(): HTMLTableRowElement;
10
+ getHtmlTemplate(args: IHtmlDocElements): string;
9
11
  columnNames(table: ISlickTable): HTMLTableRowElement;
10
- tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
11
- createStyleElement(): HTMLStyleElement;
12
+ createColumnNames(table: ISlickTable): HTMLTableSectionElement;
13
+ createHeader(table: ISlickTable): HTMLTableSectionElement;
14
+ createFooter(table: ISlickTable): HTMLTableSectionElement;
12
15
  createTableElement(table: ISlickTable): HTMLTableElement;
13
16
  createTbody(table: ISlickTable): HTMLTableSectionElement;
14
- createThead(table: ISlickTable): HTMLTableSectionElement;
15
17
  createTr(columns: IColumn[], rowIndex: number, grid: SlickGrid): HTMLTableRowElement;
16
18
  print(table: ISlickTable, clientId: number, clientName: string): void;
19
+ tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
17
20
  totals(table: ISlickTable): HTMLTableRowElement[];
18
21
  }
19
22
  //# sourceMappingURL=IPrinter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IPrinter.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/IPrinter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,IAAI,mBAAmB,CAAC;IACrC,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;IACrD,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;IAC1D,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACzD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IACzD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IACzD,QAAQ,CACP,OAAO,EAAE,OAAO,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,SAAS,GACb,mBAAmB,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACtE,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,EAAE,CAAC;CAClD"}
1
+ {"version":3,"file":"IPrinter.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/IPrinter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,IAAI,mBAAmB,CAAC;IACrC,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAChD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;IACrD,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IAC/D,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IAC1D,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IAC1D,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB,CAAC;IACzD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,uBAAuB,CAAC;IACzD,QAAQ,CACP,OAAO,EAAE,OAAO,EAAE,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,SAAS,GACb,mBAAmB,CAAC;IACvB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACtE,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,EAAE,CAAC;CAClD"}
@@ -9,6 +9,7 @@ export type { IFilter } from './IFilter';
9
9
  export type { IFormatterNumberOptions } from './IFormatterNumberOptions';
10
10
  export type { IGrouping } from './IGrouping';
11
11
  export type { IHotKeysBehavior } from './IHotKeysBehavior';
12
+ export type { IHtmlDocElements } from './IHtmlDocElements';
12
13
  export type { IObserver } from './IObserver';
13
14
  export type { IPrinter } from './IPrinter';
14
15
  export type { ISlickTable } from './ISlickTable';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/model/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slick-table",
3
- "version": "1.1.79",
3
+ "version": "1.1.80",
4
4
  "description": "Enhanced version of SlickGrid library",
5
5
  "private": false,
6
6
  "type": "module",
@@ -3,8 +3,10 @@ import { SlickDataView, SlickGrid } from "slickgrid";
3
3
 
4
4
  import { removeHtml } from "shared/lib/strings";
5
5
  import { IColumn, IPrinter, ISlickRow, ISlickTable } from "shared/model/types";
6
+ import { IHtmlDocElements } from "shared/model/types";
6
7
 
7
8
  import { getDisplayedRows } from "../../../lib";
9
+ import { applyHtmlToDocument } from "./lib";
8
10
  import { cssStyles } from "./model";
9
11
 
10
12
  export class DefaultPrinter implements IPrinter {
@@ -16,13 +18,51 @@ export class DefaultPrinter implements IPrinter {
16
18
  const result = document.createElement("tr");
17
19
 
18
20
  const name = document.createElement("th");
19
- name.classList.add("align_left");
21
+ name.classList.add("align-left");
20
22
  name.setAttribute("colspan", "100%");
21
23
  name.innerText = `${this.clientName} [${this.clientId}]`;
22
24
  result.append(name);
23
25
 
24
26
  return result;
25
27
  }
28
+ getHtmlTemplate(args: IHtmlDocElements): string {
29
+ const {
30
+ body = "",
31
+ footer = "",
32
+ header = "",
33
+ styles = "",
34
+ title = "",
35
+ } = args;
36
+ return `
37
+ <!doctype html>
38
+ <html lang="en">
39
+ <head>
40
+ <meta charset="UTF-8">
41
+ <meta name="viewport"
42
+ content="width=device-width, initial-scale=1.0">
43
+ <link rel="preconnect" href="https://fonts.googleapis.com">
44
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
45
+ <link href="https://fonts.googleapis.com/css2?family=Carlito:ital,wght@0,400;0,700;1,400;1,700&display=swap"
46
+ rel="stylesheet">
47
+ <title>${title}</title>
48
+ <style>${styles}</style>
49
+ </head>
50
+ <body>
51
+ <table>
52
+ ${header}
53
+ <tbody>
54
+ <tr>
55
+ <td>
56
+ ${body}
57
+ </td>
58
+ </tr>
59
+ </tbody>
60
+ ${footer}
61
+ </table>
62
+ </body>
63
+ </html>
64
+ `;
65
+ }
26
66
  columnNames(table: ISlickTable): HTMLTableRowElement {
27
67
  const result = document.createElement("tr");
28
68
 
@@ -32,7 +72,7 @@ export class DefaultPrinter implements IPrinter {
32
72
 
33
73
  columnsFiltered.forEach(({ name }) => {
34
74
  const th = document.createElement("th");
35
- th.classList.add("column_name");
75
+ th.classList.add("column-name");
36
76
  if (typeof name === "string") {
37
77
  th.innerText = name;
38
78
  } else {
@@ -48,26 +88,21 @@ export class DefaultPrinter implements IPrinter {
48
88
 
49
89
  const tableName = document.createElement("th");
50
90
  tableName.setAttribute("colspan", "2");
51
- tableName.classList.add("table_name");
91
+ tableName.classList.add("table-name");
52
92
  tableName.innerText = table.name || table.id;
53
93
  result.append(tableName);
54
94
 
55
95
  const dateStamp = document.createElement("th");
56
96
  dateStamp.setAttribute("colspan", "100%");
57
- dateStamp.classList.add("date_stamp");
97
+ dateStamp.classList.add("date-stamp");
58
98
  dateStamp.innerText = moment().format("MM/DD/YYYY h:mm A");
59
99
  result.append(dateStamp);
60
100
 
61
101
  return result;
62
102
  }
63
- createStyleElement(): HTMLStyleElement {
64
- const result = document.createElement("style");
65
- result.innerHTML = this.cssStyles;
66
- return result;
67
- }
68
103
  createTableElement(table: ISlickTable): HTMLTableElement {
69
104
  const result = document.createElement("table");
70
- result.append(this.createThead(table));
105
+ result.append(this.createColumnNames(table));
71
106
  result.append(this.createTbody(table));
72
107
  return result;
73
108
  }
@@ -98,7 +133,7 @@ export class DefaultPrinter implements IPrinter {
98
133
  const tr = document.createElement("tr");
99
134
  const th = document.createElement("th");
100
135
  th.setAttribute("colspan", "100%");
101
- th.classList.add("align_left");
136
+ th.classList.add("align-left");
102
137
  th.innerText = "Applied filters";
103
138
  tr.append(th);
104
139
  result.push(tr);
@@ -113,11 +148,15 @@ export class DefaultPrinter implements IPrinter {
113
148
  totals(_table: ISlickTable): HTMLTableRowElement[] {
114
149
  return [];
115
150
  }
116
- createThead(table: ISlickTable): HTMLTableSectionElement {
151
+ createHeader(table: ISlickTable): HTMLTableSectionElement {
117
152
  const result = document.createElement("thead");
118
153
  result.append(this.getClientName());
119
154
  result.append(this.tableNameAndTime(table));
120
155
  result.append(...this.filters(table));
156
+ return result;
157
+ }
158
+ createColumnNames(table: ISlickTable): HTMLTableSectionElement {
159
+ const result = document.createElement("thead");
121
160
  result.append(this.columnNames(table));
122
161
  return result;
123
162
  }
@@ -139,7 +178,7 @@ export class DefaultPrinter implements IPrinter {
139
178
  } else {
140
179
  columns.forEach((column) => {
141
180
  const td = document.createElement("td");
142
- column.cssClass && td.classList.add(column.cssClass);
181
+ if (column.cssClass) td.classList.add(column.cssClass);
143
182
  const field = column.field;
144
183
  const metaData = dataView.getItemMetadata(rowIndex);
145
184
  const formatterSpecific = metaData?.columns?.[field]?.formatter;
@@ -160,20 +199,24 @@ export class DefaultPrinter implements IPrinter {
160
199
  return result;
161
200
  }
162
201
  print(table: ISlickTable, clientId: number, clientName: string): void {
202
+ const newTab = window.open();
203
+ if (!newTab) return;
163
204
  this.clientId = clientId;
164
205
  this.clientName = clientName;
165
- const newTab = window.open() as Window;
166
-
167
- const title = document.createElement("title");
168
- title.innerText = table.name || table.id;
169
-
170
- const head = newTab.document.querySelector("head") as HTMLHeadElement;
171
- head.append(title);
172
- head.append(this.createStyleElement());
173
-
174
- const body = newTab.document.querySelector("body") as HTMLBodyElement;
175
-
176
- body.append(this.createTableElement(table));
206
+ applyHtmlToDocument(
207
+ newTab.document,
208
+ this.getHtmlTemplate({
209
+ title: table.name || table.id,
210
+ styles: this.cssStyles,
211
+ header: this.createHeader(table).outerHTML,
212
+ body: this.createTableElement(table).outerHTML,
213
+ footer: this.createFooter().outerHTML,
214
+ }),
215
+ );
177
216
  newTab.print();
178
217
  }
218
+ createFooter(): HTMLTableSectionElement {
219
+ const result = document.createElement("tfoot");
220
+ return result;
221
+ }
179
222
  }
@@ -0,0 +1,7 @@
1
+ /** Replaces the target document with parsed HTML (alternative to document.write). */
2
+ export function applyHtmlToDocument(document: Document, html: string): void {
3
+ const parsed = new DOMParser().parseFromString(html, "text/html");
4
+ document.documentElement.replaceWith(
5
+ document.importNode(parsed.documentElement, true),
6
+ );
7
+ }
@@ -0,0 +1 @@
1
+ export { applyHtmlToDocument } from "./applyHtmlToDocument";
@@ -1,6 +1,6 @@
1
1
  export const cssStyles = `
2
2
  html body {
3
- font-family: "Courier", "sans-serif";
3
+ font-family: Carlito, Calibri, Arial, Helvetica, sans-serif;
4
4
  font-size: 12px;
5
5
  }
6
6
  body table {
@@ -9,7 +9,7 @@ export const cssStyles = `
9
9
  font-size: 12px;
10
10
  }
11
11
  table thead {
12
- border-bottom: 2px solid gray;
12
+ border-bottom: 1px solid gray;
13
13
  }
14
14
  table th,
15
15
  table td {
@@ -25,22 +25,20 @@ export const cssStyles = `
25
25
  .heading {
26
26
  height: 30px;
27
27
  }
28
- .heading .table_name {
28
+ .heading .table-name {
29
29
  text-align: left;
30
- padding-bottom: 20px;
31
30
  }
32
- .heading .date_stamp {
31
+ .heading .date-stamp {
33
32
  text-align: right;
34
- padding-bottom: 20px;
35
33
  }
36
- .column_name {
34
+ .column-name {
37
35
  padding-top: 1em;
38
36
  font-weight: bold;
39
37
  }
40
- .align_right {
38
+ .align-right {
41
39
  text-align: right;
42
40
  }
43
- .align_left {
41
+ .align-left {
44
42
  text-align: left;
45
43
  }
46
44
  `;
@@ -0,0 +1,7 @@
1
+ export interface IHtmlDocElements {
2
+ body?: string;
3
+ footer?: string;
4
+ header?: string;
5
+ styles?: string;
6
+ title?: string;
7
+ }
@@ -1,6 +1,7 @@
1
1
  import { SlickGrid } from "slickgrid";
2
2
 
3
3
  import { IColumn } from "./IColumn";
4
+ import { IHtmlDocElements } from "./IHtmlDocElements";
4
5
  import { ISlickTable } from "./ISlickTable";
5
6
 
6
7
  export interface IPrinter {
@@ -8,17 +9,19 @@ export interface IPrinter {
8
9
  clientName: string;
9
10
  cssStyles: string;
10
11
  getClientName(): HTMLTableRowElement;
12
+ getHtmlTemplate(args: IHtmlDocElements): string;
11
13
  columnNames(table: ISlickTable): HTMLTableRowElement;
12
- tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
13
- createStyleElement(): HTMLStyleElement;
14
+ createColumnNames(table: ISlickTable): HTMLTableSectionElement;
15
+ createHeader(table: ISlickTable): HTMLTableSectionElement;
16
+ createFooter(table: ISlickTable): HTMLTableSectionElement;
14
17
  createTableElement(table: ISlickTable): HTMLTableElement;
15
18
  createTbody(table: ISlickTable): HTMLTableSectionElement;
16
- createThead(table: ISlickTable): HTMLTableSectionElement;
17
19
  createTr(
18
20
  columns: IColumn[],
19
21
  rowIndex: number,
20
22
  grid: SlickGrid,
21
23
  ): HTMLTableRowElement;
22
24
  print(table: ISlickTable, clientId: number, clientName: string): void;
25
+ tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
23
26
  totals(table: ISlickTable): HTMLTableRowElement[];
24
27
  }
@@ -9,6 +9,7 @@ export type { IFilter } from "./IFilter";
9
9
  export type { IFormatterNumberOptions } from "./IFormatterNumberOptions";
10
10
  export type { IGrouping } from "./IGrouping";
11
11
  export type { IHotKeysBehavior } from "./IHotKeysBehavior";
12
+ export type { IHtmlDocElements } from "./IHtmlDocElements";
12
13
  export type { IObserver } from "./IObserver";
13
14
  export type { IPrinter } from "./IPrinter";
14
15
  export type { ISlickTable } from "./ISlickTable";