slick-table 1.1.79 → 1.1.81

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 +65 -32
  3. package/dist/index.es.js +222 -168
  4. package/dist/types/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.d.ts +5 -4
  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 -4
  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 +76 -33
  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 +28 -23
  23. package/src/shared/model/types/IHtmlDocElements.ts +7 -0
  24. package/src/shared/model/types/IPrinter.ts +6 -4
  25. package/src/shared/model/types/index.ts +1 -0
@@ -1,20 +1,21 @@
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
- columnNames(table: ISlickTable): HTMLTableRowElement;
8
+ getHtmlTemplate(args: IHtmlDocElements): string;
9
+ columnNames(table: ISlickTable): HTMLTableSectionElement;
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
17
  createTr(columns: IColumn[], rowIndex: number, grid: SlickGrid): HTMLTableRowElement;
18
18
  print(table: ISlickTable, clientId: number, clientName: string): void;
19
+ createFooter(): HTMLTableSectionElement;
19
20
  }
20
21
  //# 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,uBAAuB;IAyBxD,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB;IAezD,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,gBAAgB;IAQxD,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,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 th,\n\t\ttable td {\n\t\t\tpadding: 0 4px;\n\t\t\tfont-weight: normal;\n\t\t}\n\t\t.main-table > thead {\n\t\t\tborder-bottom: 1px solid gray;\n\t\t}\n\t\t.client-name {\n\t\t\tfont-size: 16px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 6px 4px;\n\t\t\ttext-align: left;\n\t\t}\n\t\t.empty-row {\n\t\t\theight: 15px\n\t\t}\n\t\t.font-bold {\n\t\t\tfont-weight: bold;\n\t\t}\n\t\t.row-column-names {\n\t\t\tborder-bottom: 1px solid gray;\n\t\t\tborder-top: 1px solid gray;\n\t\t\tline-height: 2.5;\n\t\t}\n\t\t.slick-table {\n\t\t\tborder-bottom: double gray;\n\t\t}\n\t\t.text-center {\n\t\t\ttext-align: center;\n\t\t}\n\t\t.text-left {\n\t\t\ttext-align: left;\n\t\t}\n\t\t.text-right {\n\t\t\ttext-align: right;\n\t\t}\n\t\t.w-full {\n\t\t\twidth: 100%;\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,6+BAkDpB,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,21 @@
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;
9
- columnNames(table: ISlickTable): HTMLTableRowElement;
10
- tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
11
- createStyleElement(): HTMLStyleElement;
10
+ getHtmlTemplate(args: IHtmlDocElements): string;
11
+ columnNames(table: ISlickTable): HTMLTableSectionElement;
12
+ createHeader(table: ISlickTable): HTMLTableSectionElement;
13
+ createFooter(table: ISlickTable): HTMLTableSectionElement;
12
14
  createTableElement(table: ISlickTable): HTMLTableElement;
13
15
  createTbody(table: ISlickTable): HTMLTableSectionElement;
14
- createThead(table: ISlickTable): HTMLTableSectionElement;
15
16
  createTr(columns: IColumn[], rowIndex: number, grid: SlickGrid): HTMLTableRowElement;
16
17
  print(table: ISlickTable, clientId: number, clientName: string): void;
18
+ tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
17
19
  totals(table: ISlickTable): HTMLTableRowElement[];
18
20
  }
19
21
  //# 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,uBAAuB,CAAC;IACzD,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.81",
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,58 +18,96 @@ 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("client-name");
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
  }
26
- columnNames(table: ISlickTable): HTMLTableRowElement {
27
- const result = document.createElement("tr");
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 class="main-table w-full">
52
+ ${header}
53
+ <tbody>
54
+ <tr>
55
+ <td colspan="100%">
56
+ ${body}
57
+ </td>
58
+ </tr>
59
+ </tbody>
60
+ ${footer}
61
+ </table>
62
+ </body>
63
+ </html>
64
+ `;
65
+ }
66
+ columnNames(table: ISlickTable): HTMLTableSectionElement {
67
+ const result = document.createElement("thead");
68
+ const tr1 = document.createElement("tr");
69
+ tr1.classList.add("empty-row");
70
+ const tr2 = document.createElement("tr");
71
+ tr2.classList.add("row-column-names");
28
72
 
29
73
  const grid = table.grid;
30
74
  const columns: IColumn[] = grid?.getColumns() || [];
31
75
  const columnsFiltered = columns.filter((el) => el.forPrint);
32
-
33
76
  columnsFiltered.forEach(({ name }) => {
34
77
  const th = document.createElement("th");
35
- th.classList.add("column_name");
78
+ th.classList.add("text-left");
36
79
  if (typeof name === "string") {
37
80
  th.innerText = name;
38
81
  } else {
39
82
  th.innerText = " ";
40
83
  }
41
- result.append(th);
84
+ tr2.append(th);
42
85
  });
86
+
87
+ result.append(tr1);
88
+ result.append(tr2);
43
89
  return result;
44
90
  }
45
91
  tableNameAndTime(table: ISlickTable): HTMLTableRowElement {
46
92
  const result = document.createElement("tr");
47
- result.classList.add("heading");
48
93
 
49
94
  const tableName = document.createElement("th");
50
- tableName.setAttribute("colspan", "2");
51
- tableName.classList.add("table_name");
95
+ tableName.classList.add("text-left");
52
96
  tableName.innerText = table.name || table.id;
53
97
  result.append(tableName);
54
98
 
55
99
  const dateStamp = document.createElement("th");
56
- dateStamp.setAttribute("colspan", "100%");
57
- dateStamp.classList.add("date_stamp");
100
+ dateStamp.classList.add("text-right");
58
101
  dateStamp.innerText = moment().format("MM/DD/YYYY h:mm A");
59
102
  result.append(dateStamp);
60
103
 
61
104
  return result;
62
105
  }
63
- createStyleElement(): HTMLStyleElement {
64
- const result = document.createElement("style");
65
- result.innerHTML = this.cssStyles;
66
- return result;
67
- }
68
106
  createTableElement(table: ISlickTable): HTMLTableElement {
69
107
  const result = document.createElement("table");
70
- result.append(this.createThead(table));
108
+ result.classList.add("slick-table");
109
+ result.style.width = "100%";
110
+ result.append(this.columnNames(table));
71
111
  result.append(this.createTbody(table));
72
112
  return result;
73
113
  }
@@ -98,7 +138,7 @@ export class DefaultPrinter implements IPrinter {
98
138
  const tr = document.createElement("tr");
99
139
  const th = document.createElement("th");
100
140
  th.setAttribute("colspan", "100%");
101
- th.classList.add("align_left");
141
+ th.classList.add("text-left");
102
142
  th.innerText = "Applied filters";
103
143
  tr.append(th);
104
144
  result.push(tr);
@@ -113,12 +153,11 @@ export class DefaultPrinter implements IPrinter {
113
153
  totals(_table: ISlickTable): HTMLTableRowElement[] {
114
154
  return [];
115
155
  }
116
- createThead(table: ISlickTable): HTMLTableSectionElement {
156
+ createHeader(table: ISlickTable): HTMLTableSectionElement {
117
157
  const result = document.createElement("thead");
118
158
  result.append(this.getClientName());
119
159
  result.append(this.tableNameAndTime(table));
120
160
  result.append(...this.filters(table));
121
- result.append(this.columnNames(table));
122
161
  return result;
123
162
  }
124
163
  createTr(
@@ -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 {
@@ -8,39 +8,44 @@ export const cssStyles = `
8
8
  border-collapse: collapse;
9
9
  font-size: 12px;
10
10
  }
11
- table thead {
12
- border-bottom: 2px solid gray;
13
- }
14
11
  table th,
15
12
  table td {
16
- padding: 0 10px;
13
+ padding: 0 4px;
17
14
  font-weight: normal;
18
15
  }
19
- table td.text-center {
20
- text-align: center;
21
- }
22
- table td.text-right {
23
- text-align: right;
16
+ .main-table > thead {
17
+ border-bottom: 1px solid gray;
24
18
  }
25
- .heading {
26
- height: 30px;
27
- }
28
- .heading .table_name {
19
+ .client-name {
20
+ font-size: 16px;
21
+ font-weight: bold;
22
+ padding: 6px 4px;
29
23
  text-align: left;
30
- padding-bottom: 20px;
31
24
  }
32
- .heading .date_stamp {
33
- text-align: right;
34
- padding-bottom: 20px;
25
+ .empty-row {
26
+ height: 15px
35
27
  }
36
- .column_name {
37
- padding-top: 1em;
28
+ .font-bold {
38
29
  font-weight: bold;
39
30
  }
40
- .align_right {
41
- text-align: right;
31
+ .row-column-names {
32
+ border-bottom: 1px solid gray;
33
+ border-top: 1px solid gray;
34
+ line-height: 2.5;
35
+ }
36
+ .slick-table {
37
+ border-bottom: double gray;
38
+ }
39
+ .text-center {
40
+ text-align: center;
42
41
  }
43
- .align_left {
42
+ .text-left {
44
43
  text-align: left;
45
44
  }
45
+ .text-right {
46
+ text-align: right;
47
+ }
48
+ .w-full {
49
+ width: 100%;
50
+ }
46
51
  `;
@@ -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,18 @@ export interface IPrinter {
8
9
  clientName: string;
9
10
  cssStyles: string;
10
11
  getClientName(): HTMLTableRowElement;
11
- columnNames(table: ISlickTable): HTMLTableRowElement;
12
- tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
13
- createStyleElement(): HTMLStyleElement;
12
+ getHtmlTemplate(args: IHtmlDocElements): string;
13
+ columnNames(table: ISlickTable): HTMLTableSectionElement;
14
+ createHeader(table: ISlickTable): HTMLTableSectionElement;
15
+ createFooter(table: ISlickTable): HTMLTableSectionElement;
14
16
  createTableElement(table: ISlickTable): HTMLTableElement;
15
17
  createTbody(table: ISlickTable): HTMLTableSectionElement;
16
- createThead(table: ISlickTable): HTMLTableSectionElement;
17
18
  createTr(
18
19
  columns: IColumn[],
19
20
  rowIndex: number,
20
21
  grid: SlickGrid,
21
22
  ): HTMLTableRowElement;
22
23
  print(table: ISlickTable, clientId: number, clientName: string): void;
24
+ tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
23
25
  totals(table: ISlickTable): HTMLTableRowElement[];
24
26
  }
@@ -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";