@quandis/qbo4.documents 4.0.1-CI-20240712-205511

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@quandis/qbo4.documents",
3
+ "author": "Quandis, Inc.",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "version": "4.0.1-CI-20240712-205511",
7
+ "workspaces": [
8
+ "code"
9
+ ],
10
+ "main": "src/Program.js",
11
+ "private": false,
12
+ "scripts": {
13
+ "build": "npm run sass && tsc && npm run packdev && npm run packprod && del *.tgz && npm pack && ren *.tgz qbo4.documents.tgz",
14
+ "packdev": "webpack --config webpack.dev.js --no-color",
15
+ "packprod": "webpack --config webpack.prod.js --no-color",
16
+ "sass": "sass scss/:wwwroot/css && node cssshake.js"
17
+ },
18
+ "keywords": [
19
+ "qbo"
20
+ ],
21
+ "files": [
22
+ "wwwroot/js/",
23
+ "src/"
24
+ ],
25
+ "dependencies": {
26
+ "@deltablot/dropzone": "^7.1.1",
27
+ "@quandis/qbo4.logging": "^4.0.1-CI-20240407-122601",
28
+ "@quandis/qbo4.ui": "^4.0.1-CI-20240430-215338",
29
+ "lit": "^3.1.3",
30
+ "reflect-metadata": "^0.2.2",
31
+ "tsyringe": "^4.8.0"
32
+ },
33
+ "devDependencies": {
34
+ "@esm-bundle/chai": "^4.3.4",
35
+ "@fullhuman/postcss-purgecss": "^5.0.0",
36
+ "autoprefixer": "^10.4.19",
37
+ "clean-css": "^5.3.3",
38
+ "glob": "^10.3.10",
39
+ "html-webpack-plugin": "^5.5.3",
40
+ "mini-css-extract-plugin": "^2.7.6",
41
+ "postcss": "^8.4.38",
42
+ "postcss-loader": "^8.1.1",
43
+ "sass": "^1.72.0",
44
+ "typescript": "^5.4.3",
45
+ "webpack": "^5.88.2",
46
+ "webpack-cli": "^5.1.4",
47
+ "webpack-merge": "^5.10.0"
48
+ }
49
+ }
@@ -0,0 +1,5 @@
1
+ import 'reflect-metadata';
2
+ export { services } from '@quandis/qbo4.configuration';
3
+ export * from './qbo-file.js';
4
+ export * from './qbo-document-upload.js';
5
+ export * from './qbo-icon.js';
package/src/Program.js ADDED
@@ -0,0 +1,5 @@
1
+ import 'reflect-metadata';
2
+ export { services } from '@quandis/qbo4.configuration';
3
+ export * from './qbo-file.js';
4
+ export * from './qbo-document-upload.js';
5
+ export * from './qbo-icon.js';
package/src/Program.ts ADDED
@@ -0,0 +1,6 @@
1
+ import 'reflect-metadata';
2
+
3
+ export { services } from '@quandis/qbo4.configuration';
4
+ export * from './qbo-file.js';
5
+ export * from './qbo-document-upload.js';
6
+ export * from './qbo-icon.js';
@@ -0,0 +1,15 @@
1
+ import { LitElement } from "lit";
2
+ export declare class QboDocumentUpload extends LitElement {
3
+ static styles: import("lit").CSSResult[];
4
+ url: string;
5
+ chunking: boolean;
6
+ forceChunking: boolean;
7
+ chunkSize: number;
8
+ target: string;
9
+ acceptedFiles: string;
10
+ disablePreviews: boolean;
11
+ connectedCallback(): void;
12
+ firstUpdated(changedProperties: any): void;
13
+ disconnectedCallback(): void;
14
+ render(): import("lit-html").TemplateResult<1>;
15
+ }
@@ -0,0 +1,113 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { LitElement, css, html } from "lit";
11
+ import { customElement, property } from "lit/decorators.js";
12
+ import { dropzoneCss } from "./styles.js";
13
+ import { Dropzone } from "@deltablot/dropzone";
14
+ let QboDocumentUpload = class QboDocumentUpload extends LitElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.url = 'document/upload';
18
+ this.chunking = true;
19
+ this.forceChunking = true;
20
+ this.chunkSize = 500000;
21
+ this.target = '.dropzone';
22
+ this.acceptedFiles = '';
23
+ this.disablePreviews = false;
24
+ }
25
+ static { this.styles = [
26
+ dropzoneCss,
27
+ css `/* Add any custom styles here */`
28
+ ]; }
29
+ connectedCallback() {
30
+ super.connectedCallback();
31
+ Dropzone.autoDiscover = false;
32
+ }
33
+ firstUpdated(changedProperties) {
34
+ super.firstUpdated(changedProperties);
35
+ const targetElement = (this.target)
36
+ ? this.shadowRoot.querySelector(this.target) ?? this.shadowRoot?.firstElementChild
37
+ // : this;
38
+ : this.shadowRoot?.firstElementChild;
39
+ targetElement?.classList.add('dropzone');
40
+ const options = {
41
+ url: this.url,
42
+ chunking: this.chunking,
43
+ forceChunking: this.forceChunking,
44
+ chunkSize: this.chunkSize
45
+ };
46
+ //if (this.innerHTML != '') {
47
+ // options.previewTemplate = this.innerHTML;
48
+ //}
49
+ const template = this.querySelector('*[slot=preview]');
50
+ if (template instanceof HTMLElement) {
51
+ options.previewTemplate = template.outerHTML;
52
+ }
53
+ // Enable override of Dropzone's automatically added div.dz-message
54
+ const message = this.querySelector('*[slot=message]');
55
+ message?.classList.add('dz-message');
56
+ message?.addEventListener('click', (event) => {
57
+ let t = event.target;
58
+ if (t.matches('input[type=file]'))
59
+ event.preventDefault();
60
+ dz.hiddenFileInput.click();
61
+ });
62
+ //if (message?.querySelector('input[type=file]')) {
63
+ // options.clickable = false;
64
+ //}
65
+ const dz = new Dropzone(targetElement, options);
66
+ const component = this;
67
+ dz.on('success', function (file) {
68
+ var json = JSON.parse(file.xhr.responseText);
69
+ var event = new CustomEvent("qbo4-document-upload", { "detail": json, bubbles: true, cancelable: true });
70
+ component.dispatchEvent(event);
71
+ });
72
+ }
73
+ disconnectedCallback() {
74
+ super.disconnectedCallback();
75
+ }
76
+ render() {
77
+ return html `<div class="dropzone">
78
+ <slot name="message"><div class="dz-message">Click or drag-and-drop to upload</div></slot>
79
+ </div>`;
80
+ }
81
+ };
82
+ __decorate([
83
+ property(),
84
+ __metadata("design:type", String)
85
+ ], QboDocumentUpload.prototype, "url", void 0);
86
+ __decorate([
87
+ property(),
88
+ __metadata("design:type", Boolean)
89
+ ], QboDocumentUpload.prototype, "chunking", void 0);
90
+ __decorate([
91
+ property(),
92
+ __metadata("design:type", Boolean)
93
+ ], QboDocumentUpload.prototype, "forceChunking", void 0);
94
+ __decorate([
95
+ property(),
96
+ __metadata("design:type", Number)
97
+ ], QboDocumentUpload.prototype, "chunkSize", void 0);
98
+ __decorate([
99
+ property(),
100
+ __metadata("design:type", String)
101
+ ], QboDocumentUpload.prototype, "target", void 0);
102
+ __decorate([
103
+ property(),
104
+ __metadata("design:type", String)
105
+ ], QboDocumentUpload.prototype, "acceptedFiles", void 0);
106
+ __decorate([
107
+ property(),
108
+ __metadata("design:type", Boolean)
109
+ ], QboDocumentUpload.prototype, "disablePreviews", void 0);
110
+ QboDocumentUpload = __decorate([
111
+ customElement('qbo-document-upload')
112
+ ], QboDocumentUpload);
113
+ export { QboDocumentUpload };
@@ -0,0 +1,94 @@
1
+ import { LitElement, css, html } from "lit";
2
+ import { customElement, property } from "lit/decorators.js";
3
+ import { dropzoneCss } from "./styles.js";
4
+ import { Dropzone } from "@deltablot/dropzone";
5
+
6
+ @customElement('qbo-document-upload')
7
+ export class QboDocumentUpload extends LitElement {
8
+
9
+ static styles = [
10
+ dropzoneCss,
11
+ css`/* Add any custom styles here */`
12
+ ];
13
+
14
+ @property()
15
+ url: string = 'document/upload';
16
+
17
+ @property()
18
+ chunking: boolean = true;
19
+
20
+ @property()
21
+ forceChunking: boolean = true;
22
+
23
+ @property()
24
+ chunkSize: number = 500000;
25
+
26
+ @property()
27
+ target: string = '.dropzone';
28
+
29
+ @property()
30
+ acceptedFiles: string = '';
31
+
32
+ @property()
33
+ disablePreviews: boolean = false;
34
+
35
+ connectedCallback() {
36
+ super.connectedCallback();
37
+ Dropzone.autoDiscover = false;
38
+ }
39
+
40
+ firstUpdated(changedProperties) {
41
+ super.firstUpdated(changedProperties);
42
+ const targetElement = (this.target)
43
+ ? this.shadowRoot!.querySelector(this.target) ?? this.shadowRoot?.firstElementChild
44
+ // : this;
45
+ : this.shadowRoot?.firstElementChild;
46
+ targetElement?.classList.add('dropzone');
47
+ const options: any = {
48
+ url: this.url,
49
+ chunking: this.chunking,
50
+ forceChunking: this.forceChunking,
51
+ chunkSize: this.chunkSize
52
+ }
53
+ //if (this.innerHTML != '') {
54
+ // options.previewTemplate = this.innerHTML;
55
+ //}
56
+ const template = this.querySelector('*[slot=preview]');
57
+ if (template instanceof HTMLElement) {
58
+ options.previewTemplate = template.outerHTML;
59
+ }
60
+
61
+ // Enable override of Dropzone's automatically added div.dz-message
62
+ const message = this.querySelector('*[slot=message]');
63
+ message?.classList.add('dz-message');
64
+ message?.addEventListener('click', (event) => {
65
+ let t = event.target as HTMLElement;
66
+ if (t.matches('input[type=file]'))
67
+ event.preventDefault();
68
+ dz.hiddenFileInput.click();
69
+ });
70
+
71
+ //if (message?.querySelector('input[type=file]')) {
72
+ // options.clickable = false;
73
+ //}
74
+
75
+ const dz = new Dropzone(targetElement, options);
76
+
77
+ const component = this;
78
+ dz.on('success', function (file: any) {
79
+ var json = JSON.parse(file.xhr.responseText);
80
+ var event = new CustomEvent("qbo4-document-upload", { "detail": json, bubbles: true, cancelable: true });
81
+ component.dispatchEvent(event);
82
+ });
83
+ }
84
+
85
+ disconnectedCallback() {
86
+ super.disconnectedCallback();
87
+ }
88
+
89
+ render() {
90
+ return html`<div class="dropzone">
91
+ <slot name="message"><div class="dz-message">Click or drag-and-drop to upload</div></slot>
92
+ </div>`
93
+ }
94
+ }
@@ -0,0 +1,55 @@
1
+ import { LitElement, TemplateResult } from "lit";
2
+ export declare class FileWrapper {
3
+ file: File;
4
+ id: string;
5
+ progress: number;
6
+ bytesSent: number;
7
+ response: any;
8
+ status: string;
9
+ thumbnail: string | null;
10
+ constructor(file: File);
11
+ equals(file: File): boolean;
12
+ }
13
+ export declare class QboFile extends LitElement {
14
+ static styles: import("lit").CSSResult[];
15
+ url: string;
16
+ chunking: boolean;
17
+ forceChunking: boolean;
18
+ chunkSize: number;
19
+ target: string;
20
+ acceptedFiles: string;
21
+ disablePreviews: boolean;
22
+ multiple: boolean;
23
+ accept: string;
24
+ type: string;
25
+ files: FileWrapper[];
26
+ percent: number;
27
+ queuedClass: string;
28
+ uploadingClass: string;
29
+ successClass: string;
30
+ erroredClass: string;
31
+ fileInput: HTMLInputElement | undefined | null;
32
+ fileTemplate: HTMLTemplateElement | undefined | null;
33
+ fileLength: HTMLElement | null;
34
+ fileName: HTMLElement | null;
35
+ progressBar: HTMLProgressElement | null;
36
+ dropTarget: HTMLElement;
37
+ processing: boolean;
38
+ connectedCallback(): void;
39
+ firstUpdated(changedProperties: any): void;
40
+ disconnectedCallback(): void;
41
+ handleDragEnter(event: any): void;
42
+ handleDragOver(event: any): void;
43
+ handleDragLeave(event: any): void;
44
+ handleDrop(event: DragEvent): void;
45
+ addFile(file: File): void;
46
+ removeFile(index: number, event?: MouseEvent | null): void;
47
+ inputClick(event: any): void;
48
+ process(event: any): void;
49
+ setValue(element: HTMLElement | null, value: any): void;
50
+ updatePercent(): void;
51
+ render(): TemplateResult<1>;
52
+ replicate(template: HTMLTemplateElement): void;
53
+ uploadFile(wrapper: FileWrapper): Promise<void>;
54
+ readFileAsArrayBuffer(file: Blob): Promise<ArrayBuffer>;
55
+ }