@design.estate/dees-document 1.0.91

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 (78) hide show
  1. package/dist_bundle/bundle.js +865 -0
  2. package/dist_bundle/bundle.js.map +7 -0
  3. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  4. package/dist_ts/00_commitinfo_data.js +9 -0
  5. package/dist_ts/classes.pdfservice.d.ts +23 -0
  6. package/dist_ts/classes.pdfservice.js +39 -0
  7. package/dist_ts/helpers.d.ts +1 -0
  8. package/dist_ts/helpers.js +6 -0
  9. package/dist_ts/index.d.ts +2 -0
  10. package/dist_ts/index.js +3 -0
  11. package/dist_ts/paths.d.ts +4 -0
  12. package/dist_ts/paths.js +7 -0
  13. package/dist_ts/plugins.d.ts +9 -0
  14. package/dist_ts/plugins.js +13 -0
  15. package/dist_ts_web/00_commitinfo_data.d.ts +8 -0
  16. package/dist_ts_web/00_commitinfo_data.js +9 -0
  17. package/dist_ts_web/elements/contentinvoice.d.ts +34 -0
  18. package/dist_ts_web/elements/contentinvoice.js +335 -0
  19. package/dist_ts_web/elements/document.d.ts +20 -0
  20. package/dist_ts_web/elements/document.js +157 -0
  21. package/dist_ts_web/elements/index.d.ts +8 -0
  22. package/dist_ts_web/elements/index.js +9 -0
  23. package/dist_ts_web/elements/letterheader.d.ts +16 -0
  24. package/dist_ts_web/elements/letterheader.js +123 -0
  25. package/dist_ts_web/elements/page.d.ts +19 -0
  26. package/dist_ts_web/elements/page.js +144 -0
  27. package/dist_ts_web/elements/pagecontainer.d.ts +14 -0
  28. package/dist_ts_web/elements/pagecontainer.js +66 -0
  29. package/dist_ts_web/elements/pagecontent.d.ts +18 -0
  30. package/dist_ts_web/elements/pagecontent.js +144 -0
  31. package/dist_ts_web/elements/pagefooter.d.ts +16 -0
  32. package/dist_ts_web/elements/pagefooter.js +130 -0
  33. package/dist_ts_web/elements/pageheader.d.ts +16 -0
  34. package/dist_ts_web/elements/pageheader.js +95 -0
  35. package/dist_ts_web/elements/shared/demoletter.d.ts +2 -0
  36. package/dist_ts_web/elements/shared/demoletter.js +117 -0
  37. package/dist_ts_web/elements/shared/index.d.ts +5 -0
  38. package/dist_ts_web/elements/shared/index.js +6 -0
  39. package/dist_ts_web/index.d.ts +1 -0
  40. package/dist_ts_web/index.js +2 -0
  41. package/dist_ts_web/pages/index.d.ts +2 -0
  42. package/dist_ts_web/pages/index.js +3 -0
  43. package/dist_ts_web/pages/page1.d.ts +1 -0
  44. package/dist_ts_web/pages/page1.js +18 -0
  45. package/dist_ts_web/pages/page2.d.ts +1 -0
  46. package/dist_ts_web/pages/page2.js +5 -0
  47. package/dist_ts_web/plugins.d.ts +7 -0
  48. package/dist_ts_web/plugins.js +11 -0
  49. package/dist_watch/bundle.js +21871 -0
  50. package/dist_watch/bundle.js.map +7 -0
  51. package/dist_watch/index.html +28 -0
  52. package/license +19 -0
  53. package/npmextra.json +20 -0
  54. package/package.json +65 -0
  55. package/readme.md +7 -0
  56. package/ts/00_commitinfo_data.ts +8 -0
  57. package/ts/classes.pdfservice.ts +51 -0
  58. package/ts/helpers.ts +6 -0
  59. package/ts/index.ts +2 -0
  60. package/ts/paths.ts +9 -0
  61. package/ts/plugins.ts +26 -0
  62. package/ts_web/00_commitinfo_data.ts +8 -0
  63. package/ts_web/elements/contentinvoice.ts +385 -0
  64. package/ts_web/elements/document.ts +168 -0
  65. package/ts_web/elements/index.ts +8 -0
  66. package/ts_web/elements/letterheader.ts +125 -0
  67. package/ts_web/elements/page.ts +142 -0
  68. package/ts_web/elements/pagecontainer.ts +69 -0
  69. package/ts_web/elements/pagecontent.ts +147 -0
  70. package/ts_web/elements/pagefooter.ts +132 -0
  71. package/ts_web/elements/pageheader.ts +96 -0
  72. package/ts_web/elements/shared/demoletter.ts +121 -0
  73. package/ts_web/elements/shared/index.ts +6 -0
  74. package/ts_web/index.ts +1 -0
  75. package/ts_web/pages/index.ts +2 -0
  76. package/ts_web/pages/page1.ts +18 -0
  77. package/ts_web/pages/page2.ts +5 -0
  78. package/ts_web/plugins.ts +15 -0
@@ -0,0 +1,132 @@
1
+ import {
2
+ DeesElement,
3
+ property,
4
+ html,
5
+ customElement,
6
+ type TemplateResult,
7
+ css,
8
+ cssManager,
9
+ unsafeCSS,
10
+ } from '@design.estate/dees-element';
11
+ import * as domtools from '@design.estate/dees-domtools';
12
+
13
+ import * as shared from './shared/index.js';
14
+ import * as tsclass from '@tsclass/tsclass';
15
+
16
+ declare global {
17
+ interface HTMLElementTagNameMap {
18
+ 'dedocument-pagefooter': DePageFooter;
19
+ }
20
+ }
21
+
22
+ @customElement('dedocument-pagefooter')
23
+ export class DePageFooter extends DeesElement {
24
+ public static demo = () => html`
25
+ <dedocument-pagefooter .format="${'a4'}"></dedocument-pagefooter>
26
+ `;
27
+
28
+ @property({
29
+ type: Object,
30
+ })
31
+ letterData: tsclass.business.ILetter;
32
+
33
+ @property({
34
+ type: Number
35
+ })
36
+ public pageNumber: number = 1;
37
+
38
+ @property({
39
+ type: Number
40
+ })
41
+ public pageTotalNumber: number = 1;
42
+
43
+ constructor() {
44
+ super();
45
+ domtools.DomTools.setupDomTools();
46
+ }
47
+
48
+ public static styles = [
49
+ domtools.elementBasic.staticStyles,
50
+ css`
51
+ :host {
52
+ color: #333;
53
+ }
54
+ .bottomstripe {
55
+ position: absolute;
56
+ display: grid;
57
+ font-size: 11px;
58
+ overflow: visible;
59
+ bottom: 0px;
60
+ left: 0px;
61
+ right: 0px;
62
+ height: 130px;
63
+ content: '';
64
+ padding: 30px ${unsafeCSS(shared.rightMargin + 'px')} 10px ${unsafeCSS(shared.leftMargin + 'px')};
65
+ grid-template-columns: calc(100% / 4) calc(100% / 4) calc(100% / 4) calc(100% / 4);
66
+ grid-gap: 5px;
67
+ border-top: 2px solid #e4002b;
68
+ }
69
+
70
+ .bottomstripe .pageNumber {
71
+ position: absolute;
72
+ top: 0px;
73
+ right: ${unsafeCSS(shared.rightMargin + 'px')};
74
+ background: #e4002b;
75
+ padding: 3px;
76
+ font-size: 9px;
77
+ color: #fff;
78
+ border-bottom-left-radius: 3px;
79
+ border-bottom-right-radius: 3px;
80
+ }
81
+ .bottomstripe .documentTitle {
82
+ position: absolute;
83
+ top: -18px;
84
+ right: ${unsafeCSS(shared.rightMargin + 'px')};
85
+ background: #dddddd;
86
+ padding: 3px;
87
+ font-size: 9px;
88
+ color: #333;
89
+ border-top-left-radius: 3px;
90
+ border-top-right-radius: 3px;
91
+ }
92
+ `,
93
+ ];
94
+
95
+ public render(): TemplateResult {
96
+ return html`
97
+ <div class="bottomstripe">
98
+ <div>
99
+ <strong>Address:</strong><br />
100
+ ${this.letterData.from.name}<br />
101
+ ${this.letterData.from.address.streetName} ${this.letterData.from.address.houseNumber}<br />
102
+ ${this.letterData.from.address.postalCode} ${this.letterData.from.address.city}<br />
103
+ ${this.letterData.from.address.country}
104
+ </div>
105
+ <div>
106
+ <strong>Registration Info:</strong><br />
107
+ Amtsgericht Bremen<br />
108
+ <i>reg-#:</i> HRB 35230 HB<br />
109
+ <i>vat-id:</i> ${this.letterData.from.vatId}
110
+ </div>
111
+ <div>
112
+ <strong>Contact Info:</strong><br />
113
+ <i>email:</i> ${this.letterData.from.email}<br />
114
+ <i>phone:</i> ${this.letterData.from.phone}<br />
115
+ <i>fax:</i> ${this.letterData.from.fax}
116
+ </div>
117
+ <div>
118
+ <strong>Bank Connection:</strong><br />
119
+ <i>beneficiary:</i> ${this.letterData?.from?.name}<br />
120
+ <i>institution:</i> ${this.letterData?.from?.sepaConnection?.institution}<br />
121
+ <i>iban:</i> ${this.letterData?.from?.sepaConnection?.iban}<br />
122
+ <i>bic:</i> ${this.letterData?.from?.sepaConnection?.bic}<br />
123
+ </div>
124
+ <div class="documentTitle">Subject: <b>${this.letterData?.subject}</b>${(() => {
125
+ const uidString = html`/ Document-UID: <b>${html`<a href="https://uid.signature.digital/">https://uid.signature.digital/</a>`}</b>`;
126
+ return ``;
127
+ })()}</div>
128
+ <div class="pageNumber">page ${this.pageNumber} of ${this.pageTotalNumber}</div>
129
+ </div>
130
+ `;
131
+ }
132
+ }
@@ -0,0 +1,96 @@
1
+ import {
2
+ DeesElement,
3
+ property,
4
+ html,
5
+ customElement,
6
+ type TemplateResult,
7
+ css,
8
+ cssManager,
9
+ unsafeCSS,
10
+ } from '@design.estate/dees-element';
11
+ import * as domtools from '@design.estate/dees-domtools';
12
+
13
+ import * as shared from './shared/index.js';
14
+ import * as tsclass from '@tsclass/tsclass';
15
+
16
+ declare global {
17
+ interface HTMLElementTagNameMap {
18
+ 'dedocument-pageheader': DePageHeader;
19
+ }
20
+ }
21
+
22
+ @customElement('dedocument-pageheader')
23
+ export class DePageHeader extends DeesElement {
24
+ public static demo = () => html`
25
+ <dedocument-pageheader .format="${'a4'}"></dedocument-pageheader>
26
+ `;
27
+
28
+ @property({
29
+ type: Object,
30
+ })
31
+ public letterData: tsclass.business.ILetter = null;
32
+
33
+ @property({
34
+ type: Number,
35
+ })
36
+ public pageNumber: number = 1;
37
+
38
+ @property({
39
+ type: Number,
40
+ })
41
+ public pageTotalNumber: number = 1;
42
+
43
+ constructor() {
44
+ super();
45
+ domtools.DomTools.setupDomTools();
46
+ }
47
+
48
+ public static styles = [
49
+ domtools.elementBasic.staticStyles,
50
+ css`
51
+ :host {
52
+ color: #333;
53
+ }
54
+
55
+ .topstripe {
56
+ position: absolute;
57
+ overflow: hidden;
58
+ top: 0px;
59
+ left: 0px;
60
+ right: 0px;
61
+ height: 130px;
62
+ color: #333;
63
+ text-align: center;
64
+ border-bottom: 2px solid #00000020;
65
+ }
66
+ .topstripe2 {
67
+ position: absolute;
68
+ overflow: hidden;
69
+ top: 130px;
70
+ left: auto;
71
+ right: ${unsafeCSS(shared.rightMargin + 'px')};
72
+ height: 20px;
73
+ line-height: 20px;
74
+ color: #333;
75
+ font-size: 10px;
76
+ }
77
+ .topstripe img {
78
+ filter: invert(1);
79
+ position: absolute;
80
+ bottom: 10px;
81
+ height: 25px;
82
+ left: auto;
83
+ right: ${unsafeCSS(shared.rightMargin + 'px')};
84
+ }
85
+ `,
86
+ ];
87
+
88
+ public render(): TemplateResult {
89
+ return html`
90
+ <div class="topstripe">
91
+ <img src="https://assetbroker.lossless.one/brandfiles/lossless/svg-minimal-bright.svg" />
92
+ </div>
93
+ <div class="topstripe2">${this.letterData?.from?.description || '[no letterData.from.description set]'}</div>
94
+ `;
95
+ }
96
+ }
@@ -0,0 +1,121 @@
1
+ import * as tsclass from '@tsclass/tsclass';
2
+ const fromContact: tsclass.business.IContact = {
3
+ name: 'Awesome From Company',
4
+ type: 'company',
5
+ description: 'a company that does stuff',
6
+ address: {
7
+ streetName: 'Awesome Street',
8
+ houseNumber: '5',
9
+ city: 'Bremen',
10
+ country: 'Germany',
11
+ postalCode: '28359',
12
+ },
13
+ vatId: 'DE12345678',
14
+ sepaConnection: {
15
+ bic: 'BPOTBEB1',
16
+ iban: 'BE01234567891616'
17
+ },
18
+ email: 'hello@awesome.company',
19
+ phone: '+49 421 1234567',
20
+ fax: '+49 421 1234568',
21
+
22
+ };
23
+
24
+ const toContact: tsclass.business.IContact = {
25
+ name: 'Awesome To GmbH',
26
+ type: 'company',
27
+ customerNumber: 'LL-CLIENT-123',
28
+ description: 'a company that does stuff',
29
+ address: {
30
+ streetName: 'Awesome Street',
31
+ houseNumber: '5',
32
+ city: 'Bremen',
33
+ country: 'Germany',
34
+ postalCode: '28359'
35
+ },
36
+ vatId: 'BE12345678',
37
+ }
38
+
39
+ export const demoLetter: tsclass.business.ILetter = {
40
+ versionInfo: {
41
+ type: 'draft',
42
+ version: '1.0.0',
43
+ },
44
+ accentColor: null,
45
+ content: {
46
+ textData: null,
47
+ timesheetData: null,
48
+ contractData: {
49
+ contractDate: Date.now(),
50
+ id: 'someid'
51
+ },
52
+ invoiceData: {
53
+ id: 'LL-INV-48765',
54
+ reverseCharge: true,
55
+ dueInDays: 30,
56
+ billedBy: fromContact,
57
+ billedTo: toContact,
58
+ status: null,
59
+ deliveryDate: new Date().getTime(),
60
+ periodOfPerformance: null,
61
+ printResult: null,
62
+
63
+ items: [
64
+ {
65
+ name: 'Item with 19% VAT',
66
+ unitQuantity: 1,
67
+ unitNetPrice: 100,
68
+ unitType: 'hours',
69
+ vatPercentage: 19,
70
+ currency: 'EUR',
71
+ },
72
+ {
73
+ name: 'Item with 7% VAT',
74
+ unitQuantity: 1,
75
+ unitNetPrice: 100,
76
+ unitType: 'hours',
77
+ vatPercentage: 7,
78
+ currency: 'EUR',
79
+ },
80
+ {
81
+ name: 'Item with 7% VAT',
82
+ unitQuantity: 1,
83
+ unitNetPrice: 230,
84
+ unitType: 'hours',
85
+ vatPercentage: 7,
86
+ currency: 'EUR',
87
+ },
88
+ {
89
+ name: 'Item with 21% VAT',
90
+ unitQuantity: 1,
91
+ unitNetPrice: 230,
92
+ unitType: 'hours',
93
+ vatPercentage: 21,
94
+ currency: 'EUR',
95
+ },
96
+ {
97
+ name: 'Item with 0% VAT',
98
+ unitQuantity: 1,
99
+ unitNetPrice: 230,
100
+ unitType: 'hours',
101
+ vatPercentage: 0,
102
+ currency: 'EUR',
103
+ },
104
+ ],
105
+ }
106
+ },
107
+
108
+ date: Date.now(),
109
+ type: 'invoice',
110
+ needsCoverSheet: false,
111
+ objectActions: [],
112
+ pdf: null,
113
+ from: fromContact,
114
+ to: toContact,
115
+ incidenceId: null,
116
+ language: null,
117
+ legalContact: null,
118
+ logoUrl: null,
119
+ pdfAttachments: null,
120
+ subject: 'Invoice: LL-INV-48765',
121
+ }
@@ -0,0 +1,6 @@
1
+ export const a4Height = 1122;
2
+ export const a4Width = 794;
3
+ export const rightMargin = 70;
4
+ export const leftMargin = 90;
5
+
6
+ export * from './demoletter.js';
@@ -0,0 +1 @@
1
+ export * from './elements/index.js';
@@ -0,0 +1,2 @@
1
+ export * from './page1.js';
2
+ export * from './page2.js';
@@ -0,0 +1,18 @@
1
+ import { html } from '@design.estate/dees-element';
2
+ import { demoLetter } from '../elements/shared/index.js';
3
+ import * as plugins from '../plugins.js';
4
+
5
+ export const page1 = () => html`
6
+ <style>
7
+ dedocument-dedocument {
8
+ margin: 40px;
9
+ }
10
+ </style>
11
+ <dedocument-dedocument .printMode=${false} letterData=${plugins.smartjson.stringifyBase64({
12
+ ...demoLetter,
13
+ from: {
14
+ ...demoLetter.from,
15
+ description: 'a string set via stringified JSON'
16
+ }
17
+ } as plugins.tsclass.business.ILetter)}> </dedocument-dedocument>
18
+ `;
@@ -0,0 +1,5 @@
1
+ import { html } from "@design.estate/dees-element";
2
+
3
+ export const page2 = () => html`
4
+ <first-element></first-element>
5
+ `;
@@ -0,0 +1,15 @@
1
+ // tsclass scope
2
+ import * as tsclass from '@tsclass/tsclass';
3
+
4
+ export { tsclass };
5
+
6
+ // @pushrocks scope
7
+ import * as smartjson from '@push.rocks/smartjson';
8
+ import * as smarttime from '@push.rocks/smarttime';
9
+
10
+ export { smartjson, smarttime };
11
+
12
+ // third party
13
+ import * as qrcode from 'qrcode';
14
+
15
+ export { qrcode };