wj-elements 0.0.11 → 0.0.13

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 (79) hide show
  1. package/dist/localize-20081fd1.js +55 -0
  2. package/dist/router-links-26e4a166.js +204 -0
  3. package/dist/style.css +2243 -2
  4. package/dist/wj-animation.js +35 -23
  5. package/dist/wj-aside.js +22 -16
  6. package/dist/wj-avatar.js +49 -30
  7. package/dist/wj-badge.js +22 -18
  8. package/dist/wj-breadcrumb.js +102 -50
  9. package/dist/wj-breadcrumbs.js +36 -19
  10. package/dist/wj-button-group.js +36 -22
  11. package/dist/wj-button.js +104 -39
  12. package/dist/wj-card-content.js +18 -14
  13. package/dist/wj-card-controls.js +18 -14
  14. package/dist/wj-card-header.js +20 -14
  15. package/dist/wj-card-subtitle.js +19 -15
  16. package/dist/wj-card-title.js +18 -14
  17. package/dist/wj-card.js +20 -14
  18. package/dist/wj-carousel-item.js +22 -16
  19. package/dist/wj-carousel.js +169 -92
  20. package/dist/wj-checkbox.js +46 -24
  21. package/dist/wj-chip.js +39 -21
  22. package/dist/wj-col.js +31 -17
  23. package/dist/wj-color-picker.js +877 -509
  24. package/dist/wj-container.js +20 -16
  25. package/dist/wj-copy-button.js +112 -64
  26. package/dist/wj-dialog.js +68 -42
  27. package/dist/wj-divider.js +20 -14
  28. package/dist/wj-dropdown.js +29 -17
  29. package/dist/wj-element.js +415 -241
  30. package/dist/wj-fetchAndParseCSS.js +49 -32
  31. package/dist/wj-file-upload-item.js +64 -38
  32. package/dist/wj-file-upload.js +237 -137
  33. package/dist/wj-footer.js +18 -14
  34. package/dist/wj-form.js +18 -14
  35. package/dist/wj-format-digital.js +40 -25
  36. package/dist/wj-grid.js +20 -16
  37. package/dist/wj-header.js +22 -16
  38. package/dist/wj-icon-picker.js +122 -68
  39. package/dist/wj-icon.js +144 -64
  40. package/dist/wj-img-comparer.js +72 -41
  41. package/dist/wj-img.js +31 -19
  42. package/dist/wj-infinite-scroll.js +90 -52
  43. package/dist/wj-input-file.js +50 -27
  44. package/dist/wj-input.js +169 -70
  45. package/dist/wj-item.js +34 -17
  46. package/dist/wj-label.js +21 -19
  47. package/dist/wj-list.js +20 -15
  48. package/dist/wj-main.js +18 -14
  49. package/dist/wj-masonry.js +140 -83
  50. package/dist/wj-master.js +492 -350
  51. package/dist/wj-menu-button.js +19 -15
  52. package/dist/wj-menu-item.js +150 -64
  53. package/dist/wj-menu-label.js +21 -17
  54. package/dist/wj-menu.js +24 -18
  55. package/dist/wj-popup.js +1140 -712
  56. package/dist/wj-progress-bar.js +100 -40
  57. package/dist/wj-radio-group.js +38 -25
  58. package/dist/wj-radio.js +46 -22
  59. package/dist/wj-rate.js +121 -71
  60. package/dist/wj-relative-time.js +48 -24
  61. package/dist/wj-route.js +11 -8
  62. package/dist/wj-router-link.js +22 -17
  63. package/dist/wj-router-outlet.js +135 -71
  64. package/dist/wj-routerx.js +1124 -641
  65. package/dist/wj-row.js +21 -19
  66. package/dist/wj-slider.js +97 -55
  67. package/dist/wj-split-view.js +81 -43
  68. package/dist/wj-store.js +195 -110
  69. package/dist/wj-textarea.js +86 -37
  70. package/dist/wj-thumbnail.js +19 -15
  71. package/dist/wj-toast.js +87 -34
  72. package/dist/wj-toggle.js +42 -24
  73. package/dist/wj-toolbar-action.js +27 -16
  74. package/dist/wj-toolbar.js +26 -19
  75. package/dist/wj-tooltip.js +40 -24
  76. package/dist/wj-visually-hidden.js +18 -14
  77. package/package.json +1 -1
  78. package/dist/localize-762a9f0f.js +0 -43
  79. package/dist/router-links-e0087f84.js +0 -146
@@ -1,138 +1,176 @@
1
- var y = Object.defineProperty;
2
- var w = (r, s, e) => s in r ? y(r, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[s] = e;
3
- var h = (r, s, e) => (w(r, typeof s != "symbol" ? s + "" : s, e), e);
4
- import v from "./wj-element.js";
5
- import { L as x } from "./localize-762a9f0f.js";
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import WJElement from "./wj-element.js";
8
+ import { L as Localizer } from "./localize-20081fd1.js";
6
9
  import "./wj-store.js";
7
- function A() {
10
+ function fileType() {
8
11
  return [
9
12
  {
10
- type: ["jpg", "jpeg", "png", "gif", "bpm", "tiff", "svg"],
11
- name: "photo"
13
+ "type": ["jpg", "jpeg", "png", "gif", "bpm", "tiff", "svg"],
14
+ "name": "photo"
12
15
  },
13
16
  {
14
- type: ["zip", "rar", "cab", "jar", "tar", "gzip", "uue", "bz2", "scorm", "war"],
15
- name: "file-type-zip"
17
+ "type": ["zip", "rar", "cab", "jar", "tar", "gzip", "uue", "bz2", "scorm", "war"],
18
+ "name": "file-type-zip"
16
19
  },
17
20
  {
18
- type: ["mov", "mp4", "avi", "flv"],
19
- name: "video"
21
+ "type": ["mov", "mp4", "avi", "flv"],
22
+ "name": "video"
20
23
  },
21
24
  {
22
- type: ["m4a", "mp3", "wav"],
23
- name: "audio"
25
+ "type": ["m4a", "mp3", "wav"],
26
+ "name": "audio"
24
27
  },
25
28
  {
26
- type: ["html", "html"],
27
- name: "file-type-html"
29
+ "type": ["html", "html"],
30
+ "name": "file-type-html"
28
31
  },
29
32
  {
30
- type: ["css"],
31
- name: "code"
33
+ "type": ["css"],
34
+ "name": "code"
32
35
  },
33
36
  {
34
- type: ["txt"],
35
- name: "file-type-txt"
37
+ "type": ["txt"],
38
+ "name": "file-type-txt"
36
39
  },
37
40
  {
38
- type: ["doc", "docx"],
39
- name: "file-type-doc"
41
+ "type": ["doc", "docx"],
42
+ "name": "file-type-doc"
40
43
  },
41
44
  {
42
- type: ["xls", "xlsx"],
43
- name: "file-type-xls"
45
+ "type": ["xls", "xlsx"],
46
+ "name": "file-type-xls"
44
47
  },
45
48
  {
46
- type: ["pdf"],
47
- name: "file-type-pdf"
49
+ "type": ["pdf"],
50
+ "name": "file-type-pdf"
48
51
  },
49
52
  {
50
- type: ["ppt", "pptx", "odp"],
51
- name: "file-type-ppt"
53
+ "type": ["ppt", "pptx", "odp"],
54
+ "name": "file-type-ppt"
52
55
  }
53
56
  ];
54
57
  }
55
- function E(r) {
56
- let s;
57
- return r.toLowerCase() !== "folder" ? A().forEach((e) => {
58
- e.type.includes(r.toLowerCase()) && (s = e.name);
59
- }) : s = "folder", s;
58
+ function getFileTypeIcon(type) {
59
+ let searchType;
60
+ if (type.toLowerCase() !== "folder") {
61
+ fileType().forEach((i) => {
62
+ if (i.type.includes(type.toLowerCase())) {
63
+ searchType = i.name;
64
+ }
65
+ });
66
+ } else {
67
+ searchType = "folder";
68
+ }
69
+ return searchType;
60
70
  }
61
- function z(r, s) {
62
- console.log("FILE", r, s);
63
- const e = r.type.split("/")[0];
64
- console.log("BASE MIME TYPE", e);
65
- let t = Array.isArray(s) ? s : s.split(",");
66
- if (console.log("ACCEPTED TYPES", t), t.length === 0)
71
+ function isValidFileType(file, acceptedFileTypes) {
72
+ console.log("FILE", file, acceptedFileTypes);
73
+ const baseMimeType = file.type.split("/")[0];
74
+ console.log("BASE MIME TYPE", baseMimeType);
75
+ let acceptedTypes = Array.isArray(acceptedFileTypes) ? acceptedFileTypes : acceptedFileTypes.split(",");
76
+ console.log("ACCEPTED TYPES", acceptedTypes);
77
+ if (acceptedTypes.length === 0) {
67
78
  throw new Error("acceptedFileTypes is empty");
68
- for (let i of t)
69
- if (i.includes(e + "/*") || i.includes(r.type) || i.includes(r.type.split("/")[1]))
70
- return !0;
71
- return !1;
79
+ }
80
+ for (let type of acceptedTypes) {
81
+ if (type.includes(baseMimeType + "/*")) {
82
+ return true;
83
+ }
84
+ if (type.includes(file.type) || type.includes(file.type.split("/")[1])) {
85
+ return true;
86
+ }
87
+ }
88
+ return false;
72
89
  }
73
- function L(r, s, e) {
74
- console.log("UPLOAD FILE:", r, s, e);
75
- let t = 0;
76
- const i = new Array(Math.ceil(r.size / s)).fill(0), l = (a, p) => {
77
- const n = new FileReader(), u = a / s, o = r.slice(a, p);
78
- n.onload = (c) => {
79
- const d = new XMLHttpRequest();
80
- d.open("POST", "/upload", !0), d.setRequestHeader("Content-Range", `${a}-${p}/${r.size}`), d.upload.onprogress = (m) => {
81
- if (m.lengthComputable) {
82
- const g = m.loaded / m.total * 100;
83
- i[u] = g, i.reduce((f, b) => f + b, 0) / i.length;
90
+ function uploadFile(file, chunkSize, preview) {
91
+ console.log("UPLOAD FILE:", file, chunkSize, preview);
92
+ let start = 0;
93
+ const progressArray = new Array(Math.ceil(file.size / chunkSize)).fill(0);
94
+ const readAndUploadChunk = (start2, end) => {
95
+ const reader = new FileReader();
96
+ const chunkIndex = start2 / chunkSize;
97
+ const chunk = file.slice(start2, end);
98
+ reader.onload = (e) => {
99
+ const xhr = new XMLHttpRequest();
100
+ xhr.open("POST", "/upload", true);
101
+ xhr.setRequestHeader("Content-Range", `${start2}-${end}/${file.size}`);
102
+ xhr.upload.onprogress = (event) => {
103
+ if (event.lengthComputable) {
104
+ const progress = event.loaded / event.total * 100;
105
+ progressArray[chunkIndex] = progress;
106
+ progressArray.reduce((a, b) => a + b, 0) / progressArray.length;
84
107
  }
85
- }, d.onload = () => {
86
- d.status == 200 || d.status == 201 ? (i[u] = 100, a += s, a < r.size ? (e.setAttribute("uploaded", a), l(a, Math.min(a + s, r.size))) : (e.setAttribute("uploaded", a), console.log("Upload complete"))) : console.error("Error during upload: ", d.statusText);
87
- }, d.send(c.target.result);
88
- }, n.readAsArrayBuffer(o);
108
+ };
109
+ xhr.onload = () => {
110
+ if (xhr.status == 200 || xhr.status == 201) {
111
+ progressArray[chunkIndex] = 100;
112
+ start2 += chunkSize;
113
+ if (start2 < file.size) {
114
+ preview.setAttribute("uploaded", start2);
115
+ readAndUploadChunk(start2, Math.min(start2 + chunkSize, file.size));
116
+ } else {
117
+ preview.setAttribute("uploaded", start2);
118
+ console.log("Upload complete");
119
+ }
120
+ } else {
121
+ console.error("Error during upload: ", xhr.statusText);
122
+ }
123
+ };
124
+ xhr.send(e.target.result);
125
+ };
126
+ reader.readAsArrayBuffer(chunk);
89
127
  };
90
- l(t, Math.min(t + s, r.size));
128
+ readAndUploadChunk(start, Math.min(start + chunkSize, file.size));
91
129
  }
92
- const j = `:host{width:100%}.native-file-upload{width:100%}.file-label{background:var(--wj-color-contrast-0);border:1px dashed var(--wj-border-color);border-radius:var(--wj-border-radius-medium);align-items:center;justify-content:center;display:flex;padding:1rem;margin-bottom:.5rem;flex-direction:column}.file-preview{display:grid;grid-template-columns:auto 1fr 1fr;grid-template-rows:auto auto auto;gap:0 0;grid-template-areas:"image name name" "image size size" "progress progress progress"}.file-image{grid-area:image;align-items:center;display:flex}.file-name{grid-area:name;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-size{grid-area:size;display:flex}.file-progress{grid-area:progress}wj-icon{margin-right:.25rem}wj-img{margin-right:.25rem}.file-info>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}wj-slider{flex-basis:100%;margin-top:.5rem}::part(slider)::-webkit-slider-thumb{visibility:hidden}::part(slider)::-moz-range-thumb{visibility:hidden}::part(slider)::-ms-thumb{visibility:hidden}wj-img{width:50px;height:50px;display:flex;align-items:center;padding:.25rem;border:1px solid var(--wj-border-color);border-radius:var(--wj-border-radius-medium)}
93
- `;
94
- class F extends v {
130
+ const styles = '/*\n[ WJ File Upload ]\n*/\n:host {\n width: 100%;\n}\n\n.native-file-upload {\n width: 100%;\n}\n\n.file-label {\n background: var(--wj-color-contrast-0);\n border: 1px dashed var(--wj-border-color);\n border-radius: var(--wj-border-radius-medium);\n align-items: center;\n justify-content: center;\n display: flex;\n padding: 1rem;\n margin-bottom: 0.5rem;\n flex-direction: column;\n}\n\n.file-preview {\n display: grid;\n grid-template-columns: auto 1fr 1fr;\n grid-template-rows: auto auto auto;\n gap: 0 0;\n grid-template-areas: "image name name" "image size size" "progress progress progress";\n}\n\n.file-image {\n grid-area: image;\n align-items: center;\n display: flex;\n}\n\n.file-name {\n grid-area: name;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.file-size {\n grid-area: size;\n display: flex;\n}\n\n.file-progress {\n grid-area: progress;\n}\n\nwj-icon {\n margin-right: 0.25rem;\n}\n\nwj-img {\n margin-right: 0.25rem;\n}\n\n.file-info > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\nwj-slider {\n flex-basis: 100%;\n margin-top: 0.5rem;\n}\n\n::part(slider)::-webkit-slider-thumb {\n visibility: hidden;\n}\n::part(slider)::-moz-range-thumb {\n visibility: hidden;\n}\n::part(slider)::-ms-thumb {\n visibility: hidden;\n}\n\nwj-img {\n width: 50px;\n height: 50px;\n display: flex;\n align-items: center;\n padding: 0.25rem;\n border: 1px solid var(--wj-border-color);\n border-radius: var(--wj-border-radius-medium);\n}';
131
+ class FileUpload extends WJElement {
95
132
  constructor() {
96
133
  super();
97
- h(this, "className", "FileUpload");
98
- h(this, "handleDrop", (e) => {
99
- const t = e.dataTransfer.files;
100
- this.resetFormState(), this.uploadFiles(t);
134
+ __publicField(this, "className", "FileUpload");
135
+ __publicField(this, "handleDrop", (event) => {
136
+ const fileList = event.dataTransfer.files;
137
+ this.resetFormState();
138
+ this.uploadFiles(fileList);
101
139
  });
102
- h(this, "handleInputChange", (e) => {
140
+ __publicField(this, "handleInputChange", (event) => {
103
141
  this.resetFormState();
104
142
  try {
105
- this.handleSubmit(e);
106
- } catch (t) {
107
- console.log("NOT VALID 1", t);
143
+ this.handleSubmit(event);
144
+ } catch (err) {
145
+ console.log("NOT VALID 1", err);
108
146
  return;
109
147
  }
110
148
  });
111
- this.localizer = new x(this);
149
+ this.localizer = new Localizer(this);
112
150
  }
113
- set acceptedTypes(e) {
114
- this.setAttribute("accepted-types", e);
151
+ set acceptedTypes(value) {
152
+ this.setAttribute("accepted-types", value);
115
153
  }
116
154
  get acceptedTypes() {
117
- const e = this.getAttribute("accepted-types");
118
- return this.hasAttribute("accepted-types") ? e : "";
155
+ const accepted = this.getAttribute("accepted-types");
156
+ return this.hasAttribute("accepted-types") ? accepted : "";
119
157
  }
120
- set chunkSize(e) {
121
- this.setAttribute("chunk-size", e);
158
+ set chunkSize(value) {
159
+ this.setAttribute("chunk-size", value);
122
160
  }
123
161
  get chunkSize() {
124
- const e = this.getAttribute("chunk-size");
125
- return this.hasAttribute("chunk-size") ? e : 1024 * 1024;
162
+ const chunk = this.getAttribute("chunk-size");
163
+ return this.hasAttribute("chunk-size") ? chunk : 1024 * 1024;
126
164
  }
127
- set maxFileSize(e) {
128
- this.setAttribute("max-file-size", e);
165
+ set maxFileSize(value) {
166
+ this.setAttribute("max-file-size", value);
129
167
  }
130
168
  get maxFileSize() {
131
- const e = this.getAttribute("max-file-size");
132
- return this.hasAttribute("max-file-size") ? e * 1024 * 1024 : 1024 * 1024;
169
+ const fileSize = this.getAttribute("max-file-size");
170
+ return this.hasAttribute("max-file-size") ? fileSize * 1024 * 1024 : 1024 * 1024;
133
171
  }
134
172
  static get cssStyleSheet() {
135
- return j;
173
+ return styles;
136
174
  }
137
175
  static get observedAttributes() {
138
176
  return [];
@@ -140,82 +178,144 @@ class F extends v {
140
178
  setupAttributes() {
141
179
  this.isShadowRoot = "open";
142
180
  }
143
- draw(e, t, i) {
144
- let l = document.createDocumentFragment(), a = document.createElement("div");
145
- a.classList.add("native-file-upload"), a.setAttribute("part", "native");
146
- let p = document.createElement("div");
147
- p.classList.add("file-label");
148
- let n = document.createElement("wj-button");
149
- n.innerText = this.label || this.localizer.translate("wj.file.upload.button");
150
- let u = document.createElement("slot"), o = document.createElement("input");
151
- o.setAttribute("type", "file"), o.setAttribute("multiple", ""), o.setAttribute("style", "display:none;"), n.appendChild(u), n.appendChild(o), this.fileInput = o;
152
- let c = document.createElement("div");
153
- return c.classList.add("file-list"), p.appendChild(u), p.appendChild(n), a.appendChild(o), a.appendChild(p), a.appendChild(c), l.appendChild(a), this.native = a, this.fileList = c, this.button = n, l;
181
+ draw(context, store, params) {
182
+ let fragment = document.createDocumentFragment();
183
+ let native = document.createElement("div");
184
+ native.classList.add("native-file-upload");
185
+ native.setAttribute("part", "native");
186
+ let label = document.createElement("div");
187
+ label.classList.add("file-label");
188
+ let button = document.createElement("wj-button");
189
+ button.innerText = this.label || this.localizer.translate("wj.file.upload.button");
190
+ let slot = document.createElement("slot");
191
+ let fileInput = document.createElement("input");
192
+ fileInput.setAttribute("type", "file");
193
+ fileInput.setAttribute("multiple", "");
194
+ fileInput.setAttribute("style", "display:none;");
195
+ button.appendChild(slot);
196
+ button.appendChild(fileInput);
197
+ this.fileInput = fileInput;
198
+ let fileList = document.createElement("div");
199
+ fileList.classList.add("file-list");
200
+ label.appendChild(slot);
201
+ label.appendChild(button);
202
+ native.appendChild(fileInput);
203
+ native.appendChild(label);
204
+ native.appendChild(fileList);
205
+ fragment.appendChild(native);
206
+ this.native = native;
207
+ this.fileList = fileList;
208
+ this.button = button;
209
+ return fragment;
154
210
  }
155
211
  afterDraw() {
156
212
  this.button.addEventListener("click", () => {
157
213
  this.fileInput.click();
158
- }), this.fileInput.addEventListener("change", this.handleInputChange), this.native.addEventListener("drop", this.handleDrop);
159
- let e = 0;
160
- this.native.addEventListener("dragenter", (t) => {
161
- t.preventDefault(), e === 0 && this.native.classList.add("highlight"), e += 1;
162
- }), this.native.addEventListener("dragover", (t) => {
163
- t.preventDefault(), e === 0 && (e = 1);
164
- }), this.native.addEventListener("dragleave", (t) => {
165
- t.preventDefault(), e -= 1, e <= 0 && (e = 0, this.native.classList.remove("highlight"));
166
- }), this.native.addEventListener("drop", (t) => {
167
- t.preventDefault(), e = 0, this.native.classList.remove("highlight");
214
+ });
215
+ this.fileInput.addEventListener("change", this.handleInputChange);
216
+ this.native.addEventListener("drop", this.handleDrop);
217
+ let dragEventCounter = 0;
218
+ this.native.addEventListener("dragenter", (event) => {
219
+ event.preventDefault();
220
+ if (dragEventCounter === 0) {
221
+ this.native.classList.add("highlight");
222
+ }
223
+ dragEventCounter += 1;
224
+ });
225
+ this.native.addEventListener("dragover", (event) => {
226
+ event.preventDefault();
227
+ if (dragEventCounter === 0) {
228
+ dragEventCounter = 1;
229
+ }
230
+ });
231
+ this.native.addEventListener("dragleave", (event) => {
232
+ event.preventDefault();
233
+ dragEventCounter -= 1;
234
+ if (dragEventCounter <= 0) {
235
+ dragEventCounter = 0;
236
+ this.native.classList.remove("highlight");
237
+ }
238
+ });
239
+ this.native.addEventListener("drop", (event) => {
240
+ event.preventDefault();
241
+ dragEventCounter = 0;
242
+ this.native.classList.remove("highlight");
168
243
  });
169
244
  }
170
245
  createButton() {
171
- let e = document.createElement("wj-button");
172
- e.innerText = this.label || this.localizer.translate("wj.file.upload.button");
173
- let t = document.createElement("slot"), i = document.createElement("input");
174
- return i.setAttribute("type", "file"), i.setAttribute("multiple", ""), i.setAttribute("style", "display:none;"), e.appendChild(t), e.appendChild(i), this.fileInput = i, e;
246
+ let button = document.createElement("wj-button");
247
+ button.innerText = this.label || this.localizer.translate("wj.file.upload.button");
248
+ let slot = document.createElement("slot");
249
+ let fileInput = document.createElement("input");
250
+ fileInput.setAttribute("type", "file");
251
+ fileInput.setAttribute("multiple", "");
252
+ fileInput.setAttribute("style", "display:none;");
253
+ button.appendChild(slot);
254
+ button.appendChild(fileInput);
255
+ this.fileInput = fileInput;
256
+ return button;
175
257
  }
176
- handleSubmit(e) {
177
- e.preventDefault(), this.uploadFiles(this.fileInput.files);
258
+ handleSubmit(event) {
259
+ event.preventDefault();
260
+ this.uploadFiles(this.fileInput.files);
178
261
  }
179
262
  // tu treba pridat kontrolu chunku
180
- uploadFiles(e) {
181
- e.length !== 0 && Array.from(e).forEach((t) => {
182
- this.assertFilesValid(t);
183
- let i, l = new FileReader();
184
- l.onload = (a) => {
185
- i = this.createPreview(t, l), this.fileList.appendChild(i), L(t, this.chunkSize, i);
186
- }, l.readAsDataURL(t);
263
+ uploadFiles(files) {
264
+ if (files.length === 0) {
265
+ return;
266
+ }
267
+ Array.from(files).forEach((file) => {
268
+ this.assertFilesValid(file);
269
+ let preview;
270
+ let reader = new FileReader();
271
+ reader.onload = (e) => {
272
+ preview = this.createPreview(file, reader);
273
+ this.fileList.appendChild(preview);
274
+ uploadFile(file, this.chunkSize, preview);
275
+ };
276
+ reader.readAsDataURL(file);
187
277
  });
188
278
  }
189
- createPreview(e, t) {
190
- let i = document.createElement("wj-file-upload-item");
191
- return i.setAttribute("name", e.name), i.setAttribute("size", e.size), i.setAttribute("uploaded", "0"), i.setAttribute("progress", "0"), i.innerHTML = `<wj-icon slot="img" name="${E(e.type.split("/")[1])}" size="large"></wj-icon>`, i;
279
+ createPreview(file, reader) {
280
+ let preview = document.createElement("wj-file-upload-item");
281
+ preview.setAttribute("name", file.name);
282
+ preview.setAttribute("size", file.size);
283
+ preview.setAttribute("uploaded", "0");
284
+ preview.setAttribute("progress", "0");
285
+ preview.innerHTML = `<wj-icon slot="img" name="${getFileTypeIcon(file.type.split("/")[1])}" size="large"></wj-icon>`;
286
+ return preview;
192
287
  }
193
- createThumbnail(e, t) {
194
- let i = document.createElement("img");
195
- return i.setAttribute("src", t.result), i;
288
+ createThumbnail(file, reader) {
289
+ let img = document.createElement("img");
290
+ img.setAttribute("src", reader.result);
291
+ return img;
196
292
  }
197
293
  // TODO: alowed types a size limit by malo byt cez attributy
198
- assertFilesValid(e) {
199
- const { name: t, size: i } = e;
200
- if (console.log("FILE", e, this.acceptedTypes), !z(e, this.acceptedTypes))
201
- throw new Error(`❌ FILE: "${t}" Valid file types are: "${this.acceptedTypes}"`);
202
- if (i > this.maxFileSize)
203
- throw new Error(`❌ File "${t}" could not be uploaded. Only images up to ${this.maxFileSize} MB are allowed. Nie je to ${i}`);
294
+ assertFilesValid(file) {
295
+ const { name: fileName, size: fileSize } = file;
296
+ console.log("FILE", file, this.acceptedTypes);
297
+ if (!isValidFileType(file, this.acceptedTypes)) {
298
+ throw new Error(`❌ FILE: "${fileName}" Valid file types are: "${this.acceptedTypes}"`);
299
+ }
300
+ if (fileSize > this.maxFileSize) {
301
+ throw new Error(`❌ File "${fileName}" could not be uploaded. Only images up to ${this.maxFileSize} MB are allowed. Nie je to ${fileSize}`);
302
+ }
204
303
  }
205
- updateStatusMessage(e) {
304
+ updateStatusMessage(text) {
206
305
  }
207
- updateProgressBar(e, t) {
208
- const i = Math.round(e);
209
- this.context.querySelector("#id-" + t).value = i;
306
+ updateProgressBar(value, id) {
307
+ const percent = Math.round(value);
308
+ this.context.querySelector("#id-" + id).value = percent;
210
309
  }
211
310
  showPendingState() {
212
311
  this.updateStatusMessage("⏳ Pending...");
213
312
  }
214
313
  resetFormState() {
215
- this.fileList.textContent = "", this.updateStatusMessage("🤷‍♂ Nothing's uploaded");
314
+ this.fileList.textContent = "";
315
+ this.updateStatusMessage(`🤷‍♂ Nothing's uploaded`);
216
316
  }
217
317
  }
218
- customElements.get("wj-file-upload") || window.customElements.define("wj-file-upload", F);
318
+ customElements.get("wj-file-upload") || window.customElements.define("wj-file-upload", FileUpload);
219
319
  export {
220
- F as FileUpload
320
+ FileUpload
221
321
  };
package/dist/wj-footer.js CHANGED
@@ -1,17 +1,19 @@
1
- var a = Object.defineProperty;
2
- var c = (e, t, o) => t in e ? a(e, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[t] = o;
3
- var s = (e, t, o) => (c(e, typeof t != "symbol" ? t + "" : t, o), o);
4
- import i from "./wj-element.js";
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import WJElement from "./wj-element.js";
5
8
  import "./wj-store.js";
6
- const m = `:host{--wj-footer-height: 60px;padding:0 20px;flex-shrink:0;height:var(--wj-footer-height);display:block}
7
- `;
8
- class l extends i {
9
+ const styles = "/*\n[ Wj Footer ]\n*/\n:host {\n --wj-footer-height: 60px;\n padding: 0 20px;\n flex-shrink: 0;\n height: var(--wj-footer-height);\n display: block;\n}";
10
+ class Footer extends WJElement {
9
11
  constructor() {
10
12
  super();
11
- s(this, "className", "Footer");
13
+ __publicField(this, "className", "Footer");
12
14
  }
13
15
  static get cssStyleSheet() {
14
- return m;
16
+ return styles;
15
17
  }
16
18
  static get observedAttributes() {
17
19
  return [];
@@ -19,12 +21,14 @@ class l extends i {
19
21
  setupAttributes() {
20
22
  this.isShadowRoot = "open";
21
23
  }
22
- draw(o, d, p) {
23
- let r = document.createDocumentFragment(), n = document.createElement("slot");
24
- return r.appendChild(n), r;
24
+ draw(context, store, params) {
25
+ let fragment = document.createDocumentFragment();
26
+ let element = document.createElement("slot");
27
+ fragment.appendChild(element);
28
+ return fragment;
25
29
  }
26
30
  }
27
- customElements.get("wj-footer") || window.customElements.define("wj-footer", l);
31
+ customElements.get("wj-footer") || window.customElements.define("wj-footer", Footer);
28
32
  export {
29
- l as Footer
33
+ Footer
30
34
  };
package/dist/wj-form.js CHANGED
@@ -1,17 +1,19 @@
1
- var m = Object.defineProperty;
2
- var c = (e, t, s) => t in e ? m(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s;
3
- var o = (e, t, s) => (c(e, typeof t != "symbol" ? t + "" : t, s), s);
4
- import a from "./wj-element.js";
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
7
+ import WJElement from "./wj-element.js";
5
8
  import "./wj-store.js";
6
- const l = `:host{width:100%}
7
- `;
8
- class u extends a {
9
+ const styles = "/*\n[ Wj Form ]\n*/\n:host {\n width: 100%;\n}";
10
+ class Form extends WJElement {
9
11
  constructor() {
10
12
  super();
11
- o(this, "className", "Form");
13
+ __publicField(this, "className", "Form");
12
14
  }
13
15
  static get cssStyleSheet() {
14
- return l;
16
+ return styles;
15
17
  }
16
18
  static get observedAttributes() {
17
19
  return [];
@@ -19,12 +21,14 @@ class u extends a {
19
21
  setupAttributes() {
20
22
  this.isShadowRoot = "open";
21
23
  }
22
- draw(s, i, d) {
23
- let r = document.createDocumentFragment(), n = document.createElement("slot");
24
- return r.appendChild(n), r;
24
+ draw(context, store, params) {
25
+ let fragment = document.createDocumentFragment();
26
+ let element = document.createElement("slot");
27
+ fragment.appendChild(element);
28
+ return fragment;
25
29
  }
26
30
  }
27
- customElements.get("wj-form") || window.customElements.define("wj-form", u);
31
+ customElements.get("wj-form") || window.customElements.define("wj-form", Form);
28
32
  export {
29
- u as Form
33
+ Form
30
34
  };