@watermarkinsights/ripple 4.0.0-9 → 4.0.0
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/dist/cjs/{chartFunctions-33cb3097.js → chartFunctions-f5ded027.js} +1 -1
- package/dist/cjs/{functions-833ccc83.js → functions-e7db4a26.js} +67 -824
- package/dist/cjs/{global-d57c118b.js → global-b33cf49b.js} +1 -1
- package/dist/cjs/{intl-ab07bd0b.js → intl-9ef93563.js} +3 -3
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/priv-chart-popover.cjs.entry.js +1 -1
- package/dist/cjs/priv-datepicker.cjs.entry.js +1 -1
- package/dist/cjs/ripple.cjs.js +3 -3
- package/dist/cjs/wm-action-menu_2.cjs.entry.js +2 -2
- package/dist/cjs/wm-button.cjs.entry.js +1 -1
- package/dist/cjs/wm-chart.cjs.entry.js +4 -4
- package/dist/cjs/wm-datepicker.cjs.entry.js +1 -1
- package/dist/cjs/wm-file.cjs.entry.js +7 -4
- package/dist/cjs/wm-input.cjs.entry.js +4 -9
- package/dist/cjs/wm-line-chart.cjs.entry.js +3 -3
- package/dist/cjs/wm-modal-header.cjs.entry.js +2 -2
- package/dist/cjs/wm-modal.cjs.entry.js +1 -1
- package/dist/cjs/wm-navigation_3.cjs.entry.js +2 -2
- package/dist/cjs/wm-navigator.cjs.entry.js +1 -1
- package/dist/cjs/wm-option_2.cjs.entry.js +68 -119
- package/dist/cjs/wm-pagination.cjs.entry.js +1 -1
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +4 -4
- package/dist/cjs/wm-search.cjs.entry.js +2 -2
- package/dist/cjs/wm-snackbar.cjs.entry.js +2 -2
- package/dist/cjs/wm-tab-item_3.cjs.entry.js +2 -2
- package/dist/cjs/wm-tag-input.cjs.entry.js +521 -617
- package/dist/cjs/wm-tag-option.cjs.entry.js +43 -0
- package/dist/cjs/wm-timepicker.cjs.entry.js +1 -1
- package/dist/cjs/wm-toggletip.cjs.entry.js +1 -1
- package/dist/cjs/wm-uploader.cjs.entry.js +2 -2
- package/dist/collection/collection-manifest.json +3 -3
- package/dist/collection/components/charts/wm-chart/wm-chart.css +0 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.css +0 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.css +9 -1
- package/dist/collection/components/wm-file/wm-file.js +23 -3
- package/dist/collection/components/wm-file/wm-file.spec.js +83 -34
- package/dist/collection/components/wm-file-list/wm-file-list.spec.js +32 -59
- package/dist/collection/components/wm-input/wm-input.js +1 -8
- package/dist/collection/components/wm-menuitem/wm-menuitem.js +1 -1
- package/dist/collection/components/wm-option/wm-option.css +6 -6
- package/dist/collection/components/wm-option/wm-option.js +47 -3
- package/dist/collection/components/wm-select/wm-select.e2e.js +60 -114
- package/dist/collection/components/wm-select/wm-select.js +80 -141
- package/dist/collection/components/wm-select/wm-select.spec.js +9 -11
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.css +0 -1
- package/dist/collection/components/wm-tag-input/wm-tag-input.css +19 -22
- package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +3 -3
- package/dist/collection/components/wm-tag-input/wm-tag-input.js +597 -726
- package/dist/collection/components/wm-tag-input/wm-tag-option/wm-tag-option.js +241 -0
- package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +26 -47
- package/dist/collection/components/wm-uploader/wm-uploader.js +3 -3
- package/dist/collection/components/wm-uploader/wm-uploader.spec.js +67 -140
- package/dist/collection/global/functions.js +22 -10
- package/dist/collection/global/intl.js +2 -2
- package/dist/collection/lang/lang.spec.js +2 -2
- package/dist/esm/{chartFunctions-36eb2d1a.js → chartFunctions-2a4603c6.js} +1 -1
- package/dist/esm/{functions-061ab506.js → functions-358a1a02.js} +66 -824
- package/dist/esm/{global-509460f7.js → global-ba03a879.js} +1 -1
- package/dist/esm/{intl-d698d52f.js → intl-48057c4d.js} +3 -3
- package/dist/esm/loader.js +3 -3
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/priv-chart-popover.entry.js +1 -1
- package/dist/esm/priv-datepicker.entry.js +1 -1
- package/dist/esm/ripple.js +3 -3
- package/dist/esm/wm-action-menu_2.entry.js +2 -2
- package/dist/esm/wm-button.entry.js +1 -1
- package/dist/esm/wm-chart.entry.js +4 -4
- package/dist/esm/wm-datepicker.entry.js +1 -1
- package/dist/esm/wm-file.entry.js +7 -4
- package/dist/esm/wm-input.entry.js +4 -9
- package/dist/esm/wm-line-chart.entry.js +3 -3
- package/dist/esm/wm-modal-header.entry.js +2 -2
- package/dist/esm/wm-modal.entry.js +1 -1
- package/dist/esm/wm-navigation_3.entry.js +2 -2
- package/dist/esm/wm-navigator.entry.js +1 -1
- package/dist/esm/wm-option_2.entry.js +68 -119
- package/dist/esm/wm-pagination.entry.js +1 -1
- package/dist/esm/wm-progress-indicator_3.entry.js +4 -4
- package/dist/esm/wm-search.entry.js +2 -2
- package/dist/esm/wm-snackbar.entry.js +2 -2
- package/dist/esm/wm-tab-item_3.entry.js +2 -2
- package/dist/esm/wm-tag-input.entry.js +522 -618
- package/dist/esm/wm-tag-option.entry.js +39 -0
- package/dist/esm/wm-timepicker.entry.js +1 -1
- package/dist/esm/wm-toggletip.entry.js +1 -1
- package/dist/esm/wm-uploader.entry.js +2 -2
- package/dist/esm-es5/{chartFunctions-36eb2d1a.js → chartFunctions-2a4603c6.js} +1 -1
- package/dist/esm-es5/functions-358a1a02.js +1 -0
- package/dist/esm-es5/global-ba03a879.js +1 -0
- package/dist/esm-es5/{intl-d698d52f.js → intl-48057c4d.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
- package/dist/esm-es5/priv-datepicker.entry.js +1 -1
- package/dist/esm-es5/ripple.js +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
- package/dist/esm-es5/wm-button.entry.js +1 -1
- package/dist/esm-es5/wm-chart.entry.js +1 -1
- package/dist/esm-es5/wm-datepicker.entry.js +1 -1
- package/dist/esm-es5/wm-file.entry.js +1 -1
- package/dist/esm-es5/wm-input.entry.js +1 -1
- package/dist/esm-es5/wm-line-chart.entry.js +1 -1
- package/dist/esm-es5/wm-modal-header.entry.js +1 -1
- package/dist/esm-es5/wm-modal.entry.js +1 -1
- package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigator.entry.js +1 -1
- package/dist/esm-es5/wm-option_2.entry.js +1 -1
- package/dist/esm-es5/wm-pagination.entry.js +1 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
- package/dist/esm-es5/wm-search.entry.js +1 -1
- package/dist/esm-es5/wm-snackbar.entry.js +1 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
- package/dist/esm-es5/wm-tag-input.entry.js +1 -1
- package/dist/esm-es5/wm-tag-option.entry.js +1 -0
- package/dist/esm-es5/wm-timepicker.entry.js +1 -1
- package/dist/esm-es5/wm-toggletip.entry.js +1 -1
- package/dist/esm-es5/wm-uploader.entry.js +1 -1
- package/dist/ripple/{p-3f159fa3.entry.js → p-05ef4092.entry.js} +1 -1
- package/dist/ripple/p-11d629cb.system.entry.js +1 -0
- package/dist/ripple/p-126fbcdb.entry.js +1 -0
- package/dist/ripple/p-12a140e0.system.entry.js +1 -0
- package/dist/ripple/{p-e61e2d7f.entry.js → p-191fafc6.entry.js} +1 -1
- package/dist/ripple/p-1ab62a21.system.entry.js +1 -0
- package/dist/ripple/{p-d8287161.entry.js → p-1e7e2ca4.entry.js} +1 -1
- package/dist/ripple/{p-fef28649.system.entry.js → p-1ee49e28.system.entry.js} +1 -1
- package/dist/ripple/{p-e82eae12.entry.js → p-299bf10c.entry.js} +1 -1
- package/dist/ripple/{p-c20c248a.entry.js → p-2d6bb6d7.entry.js} +1 -1
- package/dist/ripple/{p-a31e736a.entry.js → p-366a9608.entry.js} +1 -1
- package/dist/ripple/p-3a20b1ed.system.entry.js +1 -0
- package/dist/ripple/p-3bb79457.entry.js +1 -0
- package/dist/ripple/{p-1f7a67cc.system.js → p-426fa249.system.js} +1 -1
- package/dist/ripple/p-44d4705c.system.js +1 -0
- package/dist/ripple/p-492dd748.system.entry.js +1 -0
- package/dist/ripple/p-4aa8e2cf.entry.js +1 -0
- package/dist/ripple/{p-ff891d67.js → p-52f5ec85.js} +1 -1
- package/dist/ripple/{p-484d57e1.entry.js → p-546d5c1d.entry.js} +1 -1
- package/dist/ripple/{p-d231aed1.system.entry.js → p-585732f7.system.entry.js} +1 -1
- package/dist/ripple/p-6767b009.system.js +1 -0
- package/dist/ripple/{p-c6ba5d3d.system.entry.js → p-681c9539.system.entry.js} +1 -1
- package/dist/ripple/{p-d2c9264d.entry.js → p-68cade03.entry.js} +1 -1
- package/dist/ripple/{p-260fd686.system.entry.js → p-6c27afee.system.entry.js} +1 -1
- package/dist/ripple/{p-d108107c.entry.js → p-7740db9a.entry.js} +1 -1
- package/dist/ripple/{p-055d1c23.system.entry.js → p-7d005413.system.entry.js} +1 -1
- package/dist/ripple/{p-c9830db6.system.entry.js → p-7e2c2c46.system.entry.js} +1 -1
- package/dist/ripple/p-7fa84884.system.entry.js +1 -0
- package/dist/ripple/{p-9a3d8f0b.system.entry.js → p-8b143e9d.system.entry.js} +1 -1
- package/dist/ripple/{p-0790bfed.entry.js → p-8ea235b6.entry.js} +1 -1
- package/dist/ripple/{p-4eae76a6.entry.js → p-8fadf5dd.entry.js} +1 -1
- package/dist/ripple/{p-8df34bf3.system.entry.js → p-94c65a69.system.entry.js} +1 -1
- package/dist/ripple/{p-3bd6839a.entry.js → p-9690de6c.entry.js} +1 -1
- package/dist/ripple/p-acb0156f.system.entry.js +1 -0
- package/dist/ripple/p-ae7290c2.entry.js +1 -0
- package/dist/ripple/{p-030b527a.js → p-aea9a33a.js} +1 -1
- package/dist/ripple/p-b6e5408c.js +1 -0
- package/dist/ripple/p-b75c0973.system.js +1 -0
- package/dist/ripple/{p-21f73fee.system.entry.js → p-b858d526.system.entry.js} +1 -1
- package/dist/ripple/{p-40b5b7d1.system.entry.js → p-b92c2e16.system.entry.js} +1 -1
- package/dist/ripple/p-be79e95d.entry.js +1 -0
- package/dist/ripple/{p-b623fdc8.entry.js → p-bfff12b4.entry.js} +1 -1
- package/dist/ripple/{p-68d7cf2b.entry.js → p-c028f29c.entry.js} +1 -1
- package/dist/ripple/p-c19ed569.entry.js +1 -0
- package/dist/ripple/{p-f42031f5.system.js → p-c3da681d.system.js} +1 -1
- package/dist/ripple/{p-9b94467e.entry.js → p-c5105455.entry.js} +1 -1
- package/dist/ripple/{p-15457a4b.system.entry.js → p-c86a7f4d.system.entry.js} +1 -1
- package/dist/ripple/{p-b9283910.entry.js → p-db58d96b.entry.js} +1 -1
- package/dist/ripple/p-dd92850a.js +1 -0
- package/dist/ripple/p-e39e6c2b.entry.js +1 -0
- package/dist/ripple/{p-a8ea87d1.system.entry.js → p-ec831e59.system.entry.js} +1 -1
- package/dist/ripple/{p-f1029090.system.entry.js → p-ee51efe0.system.entry.js} +1 -1
- package/dist/ripple/{p-777ced5b.entry.js → p-eec01bbe.entry.js} +1 -1
- package/dist/ripple/{p-5ed1b0a2.system.entry.js → p-f339d590.system.entry.js} +1 -1
- package/dist/ripple/{p-5b593411.system.entry.js → p-f3407959.system.entry.js} +1 -1
- package/dist/ripple/{p-da727af8.system.entry.js → p-f3a374ff.system.entry.js} +1 -1
- package/dist/ripple/{p-867b20a9.system.entry.js → p-f43fda55.system.entry.js} +1 -1
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/ripple/ripple.js +1 -1
- package/dist/types/components/wm-file/wm-file.d.ts +1 -1
- package/dist/types/components/wm-input/wm-input.d.ts +0 -1
- package/dist/types/components/wm-option/wm-option.d.ts +2 -0
- package/dist/types/components/wm-select/wm-select.d.ts +7 -7
- package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +65 -85
- package/dist/types/components/wm-tag-input/wm-tag-option/wm-tag-option.d.ts +18 -0
- package/dist/types/components/wm-uploader/wm-uploader.d.ts +1 -1
- package/dist/types/components.d.ts +30 -27
- package/dist/types/global/functions.d.ts +2 -1
- package/dist/types/global/intl.d.ts +2 -2
- package/package.json +1 -1
- package/dist/cjs/wm-tag-input-row.cjs.entry.js +0 -23
- package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js +0 -122
- package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +0 -1039
- package/dist/esm/wm-tag-input-row.entry.js +0 -19
- package/dist/esm-es5/functions-061ab506.js +0 -1
- package/dist/esm-es5/global-509460f7.js +0 -1
- package/dist/esm-es5/wm-tag-input-row.entry.js +0 -1
- package/dist/ripple/p-1c3ba701.system.entry.js +0 -1
- package/dist/ripple/p-4a8c95b9.system.entry.js +0 -1
- package/dist/ripple/p-5f2c09f6.entry.js +0 -1
- package/dist/ripple/p-647a4a4a.system.entry.js +0 -1
- package/dist/ripple/p-7011accc.entry.js +0 -1
- package/dist/ripple/p-707383d5.system.js +0 -1
- package/dist/ripple/p-7c2e47bc.system.entry.js +0 -1
- package/dist/ripple/p-839d7e0f.system.js +0 -1
- package/dist/ripple/p-928cc755.system.entry.js +0 -1
- package/dist/ripple/p-9888c825.js +0 -1
- package/dist/ripple/p-a5308115.js +0 -1
- package/dist/ripple/p-b45a2fc3.entry.js +0 -1
- package/dist/ripple/p-b4b57baf.system.entry.js +0 -1
- package/dist/ripple/p-c15f29e5.system.js +0 -1
- package/dist/ripple/p-d38882eb.entry.js +0 -1
- package/dist/ripple/p-d601c5a1.entry.js +0 -1
- package/dist/ripple/p-d68678d2.entry.js +0 -1
- package/dist/ripple/p-e703d9cd.entry.js +0 -1
- package/dist/ripple/p-eb0d569a.system.entry.js +0 -1
- package/dist/types/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.d.ts +0 -11
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
jest.mock("../../global/services/http-service");
|
|
2
2
|
import { newSpecPage } from "@stencil/core/testing";
|
|
3
3
|
import { Uploader } from "./wm-uploader";
|
|
4
|
+
import { File } from "../wm-file/wm-file";
|
|
4
5
|
// mock ResizeObserver
|
|
5
6
|
global.ResizeObserver = jest.fn().mockImplementation(() => ({
|
|
6
7
|
observe: jest.fn(),
|
|
7
8
|
unobserve: jest.fn(),
|
|
8
9
|
disconnect: jest.fn(),
|
|
9
10
|
}));
|
|
11
|
+
// mock MutationObserver
|
|
12
|
+
global.MutationObserver = jest.fn().mockImplementation(() => ({
|
|
13
|
+
observe: jest.fn(),
|
|
14
|
+
unobserve: jest.fn(),
|
|
15
|
+
disconnect: jest.fn(),
|
|
16
|
+
}));
|
|
10
17
|
describe("wm-uploader", () => {
|
|
11
18
|
let html, page;
|
|
12
|
-
// max-size of 200Mb should be ignored: max is 100 and dev can only set to a smaller value.
|
|
13
19
|
beforeEach(async () => {
|
|
14
20
|
html = `<wm-uploader
|
|
15
21
|
id="uploader1"
|
|
16
22
|
button-text="Upload new document"
|
|
17
|
-
max-size="200"
|
|
23
|
+
max-size="200 MB"
|
|
18
24
|
max-files="5"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
>
|
|
26
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
|
|
27
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
|
|
28
|
+
</wm-uploader>`;
|
|
29
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
22
30
|
await page.waitForChanges();
|
|
23
31
|
});
|
|
24
32
|
afterEach(() => {
|
|
@@ -33,9 +41,8 @@ describe("wm-uploader", () => {
|
|
|
33
41
|
button-text="Upload new document"
|
|
34
42
|
label="example label"
|
|
35
43
|
required-field="true"
|
|
36
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
37
44
|
></wm-uploader>`;
|
|
38
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
45
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
39
46
|
await page.waitForChanges();
|
|
40
47
|
inputEl = page.root.shadowRoot.querySelector("input");
|
|
41
48
|
expect(inputEl).toEqualAttribute("aria-label", "example label, Upload new document");
|
|
@@ -44,9 +51,8 @@ describe("wm-uploader", () => {
|
|
|
44
51
|
id="uploader1"
|
|
45
52
|
button-text="Upload new document"
|
|
46
53
|
required-field="true"
|
|
47
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
48
54
|
></wm-uploader>`;
|
|
49
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
55
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
50
56
|
await page.waitForChanges();
|
|
51
57
|
inputEl = page.root.shadowRoot.querySelector("input");
|
|
52
58
|
expect(inputEl).toEqualAttribute("aria-label", "Upload new document");
|
|
@@ -55,9 +61,8 @@ describe("wm-uploader", () => {
|
|
|
55
61
|
button-text="Upload new document"
|
|
56
62
|
label="Upload new document"
|
|
57
63
|
required-field="true"
|
|
58
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
59
64
|
></wm-uploader>`;
|
|
60
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
65
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
61
66
|
await page.waitForChanges();
|
|
62
67
|
inputEl = page.root.shadowRoot.querySelector("input");
|
|
63
68
|
expect(inputEl).toEqualAttribute("aria-label", "Upload new document");
|
|
@@ -66,36 +71,6 @@ describe("wm-uploader", () => {
|
|
|
66
71
|
const labelEl = page.root.shadowRoot.querySelector("label");
|
|
67
72
|
expect(labelEl.textContent).toBe("Upload new document");
|
|
68
73
|
});
|
|
69
|
-
it("renders the file list", async () => {
|
|
70
|
-
const fileEls = page.root.shadowRoot.querySelectorAll("wm-file");
|
|
71
|
-
expect(fileEls.length).toBe(2);
|
|
72
|
-
});
|
|
73
|
-
it("sorts by name or date if prop is set accordingly", async () => {
|
|
74
|
-
// name
|
|
75
|
-
html = `<wm-uploader
|
|
76
|
-
id="uploader1"
|
|
77
|
-
sort-by="name"
|
|
78
|
-
button-text="Upload new document"
|
|
79
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
80
|
-
></wm-uploader>`;
|
|
81
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
82
|
-
await page.waitForChanges();
|
|
83
|
-
let fileEls = page.root.shadowRoot.querySelectorAll("wm-file");
|
|
84
|
-
expect(JSON.parse(fileEls[0].getAttribute("file")).id).toBe("file1");
|
|
85
|
-
expect(JSON.parse(fileEls[1].getAttribute("file")).id).toBe("file2");
|
|
86
|
-
// date
|
|
87
|
-
html = `<wm-uploader
|
|
88
|
-
id="uploader1"
|
|
89
|
-
sort-by="date"
|
|
90
|
-
button-text="Upload new document"
|
|
91
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
92
|
-
></wm-uploader>`;
|
|
93
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
94
|
-
await page.waitForChanges();
|
|
95
|
-
fileEls = page.root.shadowRoot.querySelectorAll("wm-file");
|
|
96
|
-
expect(JSON.parse(fileEls[0].getAttribute("file")).id).toBe("file2");
|
|
97
|
-
expect(JSON.parse(fileEls[1].getAttribute("file")).id).toBe("file1");
|
|
98
|
-
});
|
|
99
74
|
it("uploads files", async () => {
|
|
100
75
|
const input = page.root.shadowRoot.querySelector("input");
|
|
101
76
|
// fake files which the components uploadFiles() function will process
|
|
@@ -129,121 +104,68 @@ describe("wm-uploader", () => {
|
|
|
129
104
|
expect(validFiles[1].size).toBe(123456);
|
|
130
105
|
});
|
|
131
106
|
it("disables button when upload is in progress", async () => {
|
|
132
|
-
html = `<wm-uploader
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z", "progress": "10"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
138
|
-
></wm-uploader>`;
|
|
139
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
107
|
+
html = `<wm-uploader id="uploader1">
|
|
108
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB" progress="30"></wm-file>
|
|
109
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
|
|
110
|
+
</wm-uploader>`;
|
|
111
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
140
112
|
await page.waitForChanges();
|
|
141
113
|
const labelEl = page.root.shadowRoot.querySelector("label");
|
|
142
114
|
expect(labelEl).toHaveClass("disabled");
|
|
143
115
|
});
|
|
144
|
-
it("emits the file ID in the custom event when a file action event is received", async () => {
|
|
145
|
-
let fakePreviewEvent = new CustomEvent("wmIntFilePreviewed");
|
|
146
|
-
// @ts-ignore
|
|
147
|
-
fakePreviewEvent.detail = "previewid";
|
|
148
|
-
let fakeDownloadEvent = new CustomEvent("wmIntFileDownloaded");
|
|
149
|
-
// @ts-ignore
|
|
150
|
-
fakeDownloadEvent.detail = "downloadid";
|
|
151
|
-
let fakeDeleteEvent = new CustomEvent("wmIntFileDeleted");
|
|
152
|
-
// @ts-ignore
|
|
153
|
-
fakeDeleteEvent.detail = "deleteid";
|
|
154
|
-
const wmUploaderPreviewFileSpy = jest.fn();
|
|
155
|
-
const wmUploaderDownloadFileSpy = jest.fn();
|
|
156
|
-
const wmUploaderDeleteFileSpy = jest.fn();
|
|
157
|
-
const wmFilePreviewSpy = jest.fn();
|
|
158
|
-
const wmFileDownloadSpy = jest.fn();
|
|
159
|
-
const wmFileDeleteSpy = jest.fn();
|
|
160
|
-
page.root.addEventListener("wmUploaderPreviewFile", wmUploaderPreviewFileSpy);
|
|
161
|
-
page.root.addEventListener("wmUploaderDownloadFile", wmUploaderDownloadFileSpy);
|
|
162
|
-
page.root.addEventListener("wmUploaderDeleteFile", wmUploaderDeleteFileSpy);
|
|
163
|
-
page.root.addEventListener("wmFilePreview", wmFilePreviewSpy);
|
|
164
|
-
page.root.addEventListener("wmFileDownload", wmFileDownloadSpy);
|
|
165
|
-
page.root.addEventListener("wmFileDelete", wmFileDeleteSpy);
|
|
166
|
-
page.root.dispatchEvent(fakePreviewEvent);
|
|
167
|
-
expect(wmUploaderPreviewFileSpy.mock.calls[0][0].detail).toBe("previewid");
|
|
168
|
-
expect(wmFilePreviewSpy.mock.calls[0][0].detail).toBe("previewid");
|
|
169
|
-
page.root.dispatchEvent(fakeDownloadEvent);
|
|
170
|
-
expect(wmUploaderDownloadFileSpy.mock.calls[0][0].detail).toBe("downloadid");
|
|
171
|
-
expect(wmFileDownloadSpy.mock.calls[0][0].detail).toBe("downloadid");
|
|
172
|
-
page.root.dispatchEvent(fakeDeleteEvent);
|
|
173
|
-
expect(wmUploaderDeleteFileSpy.mock.calls[0][0].detail).toBe("deleteid");
|
|
174
|
-
expect(wmFileDeleteSpy.mock.calls[0][0].detail).toBe("deleteid");
|
|
175
|
-
});
|
|
176
116
|
it("renders max-files text, if set", async () => {
|
|
177
117
|
let html, page;
|
|
178
118
|
html = `<wm-uploader
|
|
179
119
|
id="uploader1"
|
|
180
120
|
button-text="Upload new document"
|
|
181
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
182
121
|
></wm-uploader>`;
|
|
183
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
122
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
184
123
|
await page.waitForChanges();
|
|
185
124
|
let fileCountEl = page.root.shadowRoot.querySelector("#file-count");
|
|
186
125
|
expect(fileCountEl).toBeFalsy();
|
|
187
126
|
html = `<wm-uploader
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
></wm-
|
|
193
|
-
|
|
127
|
+
id="uploader1"
|
|
128
|
+
max-files="3"
|
|
129
|
+
>
|
|
130
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
|
|
131
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
|
|
132
|
+
</wm-uploader>`;
|
|
133
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
194
134
|
await page.waitForChanges();
|
|
195
135
|
fileCountEl = page.root.shadowRoot.querySelector("#file-count");
|
|
196
136
|
expect(fileCountEl).toBeTruthy();
|
|
197
137
|
expect(fileCountEl.textContent).toBe("2 of 3 Files");
|
|
198
|
-
html = `<wm-uploader
|
|
199
|
-
id="uploader1"
|
|
200
|
-
max-files="2"
|
|
201
|
-
button-text="Upload new document"
|
|
202
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
203
|
-
></wm-uploader>`;
|
|
204
138
|
});
|
|
205
139
|
it("renders max-size text, if set", async () => {
|
|
206
140
|
let html, page;
|
|
207
141
|
html = `<wm-uploader
|
|
208
142
|
id="uploader1"
|
|
209
143
|
button-text="Upload new document"
|
|
210
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
211
144
|
></wm-uploader>`;
|
|
212
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
145
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
213
146
|
await page.waitForChanges();
|
|
214
147
|
let maxSizeEl = page.root.shadowRoot.querySelector("#max-size");
|
|
215
148
|
expect(maxSizeEl).toBeFalsy();
|
|
216
149
|
html = `<wm-uploader
|
|
217
150
|
id="uploader1"
|
|
218
|
-
max-size="25"
|
|
151
|
+
max-size="25 MB"
|
|
219
152
|
button-text="Upload new document"
|
|
220
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
221
153
|
></wm-uploader>`;
|
|
222
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
223
|
-
await page.waitForChanges();
|
|
224
|
-
maxSizeEl = page.root.shadowRoot.querySelector("#max-size");
|
|
225
|
-
expect(maxSizeEl).toBeTruthy();
|
|
226
|
-
expect(maxSizeEl.textContent).toBe("Maximum file size 25MB");
|
|
227
|
-
// max-size of 250MB is ignored, defaulting to the cap of 100MB
|
|
228
|
-
html = `<wm-uploader
|
|
229
|
-
id="uploader1"
|
|
230
|
-
max-size="250"
|
|
231
|
-
button-text="Upload new document"
|
|
232
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020-01-28T22:29:10.397Z"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2019-02-14T12:21:05.397Z"}]'
|
|
233
|
-
></wm-uploader>`;
|
|
234
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
154
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
235
155
|
await page.waitForChanges();
|
|
236
156
|
maxSizeEl = page.root.shadowRoot.querySelector("#max-size");
|
|
237
157
|
expect(maxSizeEl).toBeTruthy();
|
|
158
|
+
expect(maxSizeEl.textContent).toBe("Maximum file size 25 MB");
|
|
238
159
|
});
|
|
239
160
|
it("announces error when max-files has been reached and button clicked", async () => {
|
|
240
161
|
html = `<wm-uploader
|
|
241
162
|
id="uploader1"
|
|
242
163
|
max-files="2"
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
164
|
+
>
|
|
165
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
|
|
166
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
|
|
167
|
+
</wm-uploader>`;
|
|
168
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
247
169
|
await page.waitForChanges();
|
|
248
170
|
const input = page.root.shadowRoot.querySelector("input");
|
|
249
171
|
input.click();
|
|
@@ -256,52 +178,57 @@ describe("wm-uploader", () => {
|
|
|
256
178
|
expect(message).toBe("Accepted file types: .pdf, .txt, .log, .xml, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .gif, .jpg, .jpeg, .png, .csv");
|
|
257
179
|
html = `<wm-uploader
|
|
258
180
|
id="uploader1"
|
|
259
|
-
max-size="250"
|
|
260
181
|
file-types="jpeg"
|
|
261
182
|
button-text="Upload new document"
|
|
262
|
-
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "2020
|
|
183
|
+
files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "1/28/2020"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2/14/2019"}]'
|
|
263
184
|
></wm-uploader>`;
|
|
264
|
-
page = await newSpecPage({ components: [Uploader], html });
|
|
185
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
265
186
|
await page.waitForChanges();
|
|
266
187
|
message = page.root.shadowRoot.querySelector("#accepted-types").textContent;
|
|
267
188
|
expect(message).toBe("Accepted file type: .jpeg");
|
|
268
189
|
});
|
|
269
190
|
it("provides wm-files with the proper show-info", async () => {
|
|
270
|
-
//
|
|
271
|
-
let
|
|
272
|
-
expect(
|
|
191
|
+
// defaults to time
|
|
192
|
+
let infoEl = await page.root.querySelector("wm-file").shadowRoot.querySelector(".file-info");
|
|
193
|
+
expect(infoEl.textContent).toBe("1/28/2020");
|
|
273
194
|
// size
|
|
274
195
|
html = `<wm-uploader
|
|
275
196
|
id="uploader1"
|
|
276
197
|
button-text="Upload new document"
|
|
277
198
|
show-info="size"
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
199
|
+
>
|
|
200
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
|
|
201
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
|
|
202
|
+
</wm-uploader>`;
|
|
203
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
204
|
+
await page.waitForChanges();
|
|
205
|
+
infoEl = await page.root.querySelector("wm-file").shadowRoot.querySelector(".file-info");
|
|
206
|
+
expect(infoEl.textContent).toBe("28 KB");
|
|
284
207
|
// time
|
|
285
208
|
html = `<wm-uploader
|
|
286
209
|
id="uploader1"
|
|
287
210
|
button-text="Upload new document"
|
|
288
211
|
show-info="time"
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
212
|
+
>
|
|
213
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
|
|
214
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
|
|
215
|
+
</wm-uploader>`;
|
|
216
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
217
|
+
await page.waitForChanges();
|
|
218
|
+
infoEl = await page.root.querySelector("wm-file").shadowRoot.querySelector(".file-info");
|
|
219
|
+
expect(infoEl.textContent).toBe("1/28/2020");
|
|
295
220
|
// none
|
|
296
221
|
html = `<wm-uploader
|
|
297
222
|
id="uploader1"
|
|
298
223
|
button-text="Upload new document"
|
|
299
224
|
show-info="none"
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
225
|
+
>
|
|
226
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
|
|
227
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
|
|
228
|
+
</wm-uploader>`;
|
|
229
|
+
page = await newSpecPage({ components: [Uploader, File], html });
|
|
230
|
+
await page.waitForChanges();
|
|
231
|
+
infoEl = await page.root.querySelector("wm-file").shadowRoot.querySelector(".file-info");
|
|
232
|
+
expect(infoEl).toBe(null);
|
|
306
233
|
});
|
|
307
234
|
});
|
|
@@ -486,16 +486,6 @@ export function measureText(originEl, placeholderText) {
|
|
|
486
486
|
document.body.removeChild(measurementEl);
|
|
487
487
|
return boundingClientRect;
|
|
488
488
|
}
|
|
489
|
-
export function safeParseJSON(toParse) {
|
|
490
|
-
// JSON.parse will throw an exception if the string provided is not in the proper format
|
|
491
|
-
// instead of the exception, just return null and let other logic check
|
|
492
|
-
try {
|
|
493
|
-
return JSON.parse(toParse);
|
|
494
|
-
}
|
|
495
|
-
catch (e) {
|
|
496
|
-
return null;
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
489
|
export function truncateText(textEl, text, availableSpace, endAmt) {
|
|
500
490
|
const cloneEl = document.createElement("div");
|
|
501
491
|
cloneEl.style.visibility = "hidden";
|
|
@@ -585,3 +575,25 @@ export function handleDisabledAttribute(el, isDisabled) {
|
|
|
585
575
|
el.removeAttribute("disabled");
|
|
586
576
|
}
|
|
587
577
|
}
|
|
578
|
+
// get the prev/next element with an option to circle through the list
|
|
579
|
+
export function findPrev(list, item, loop = false) {
|
|
580
|
+
if (!!list && !item)
|
|
581
|
+
return list[list.length - 1]; // if list was passed but no item, get the last item
|
|
582
|
+
if (!list.includes(item))
|
|
583
|
+
return; // if list is empty or doesn't include item
|
|
584
|
+
let current = list.indexOf(item);
|
|
585
|
+
let beforeFirst = loop ? list.length - 1 : 0; // before first item can be first (hard stop) or back to last
|
|
586
|
+
let prev = current > 0 ? current - 1 : beforeFirst;
|
|
587
|
+
return list[prev];
|
|
588
|
+
}
|
|
589
|
+
export function findNext(list, item, loop = false) {
|
|
590
|
+
if (!!list && !item)
|
|
591
|
+
return list[0]; // if list was passed but no item, get the first item
|
|
592
|
+
if (!list.includes(item))
|
|
593
|
+
return; // if list is empty or doesn't include item
|
|
594
|
+
let current = list.indexOf(item);
|
|
595
|
+
const last = list.length - 1;
|
|
596
|
+
let afterLast = loop ? 0 : last; // after last item can be last (hard stop) or back to first
|
|
597
|
+
let next = current !== last ? current + 1 : afterLast;
|
|
598
|
+
return list[next];
|
|
599
|
+
}
|
|
@@ -118,7 +118,7 @@ export const uploaderMessages = {
|
|
|
118
118
|
}, { x: fileListLength, y: maxFiles }),
|
|
119
119
|
getFileTooLarge: (maxSize) => intl.formatMessage({
|
|
120
120
|
id: "uploader.fileTooLarge",
|
|
121
|
-
defaultMessage: "The selected file is too large. Maximum file size is {size}
|
|
121
|
+
defaultMessage: "The selected file is too large. Maximum file size is {size}",
|
|
122
122
|
}, { size: maxSize }),
|
|
123
123
|
getFilesUploading: (numFilesUploading) => intl.formatMessage({
|
|
124
124
|
id: "uploader.filesUploading",
|
|
@@ -130,7 +130,7 @@ export const uploaderMessages = {
|
|
|
130
130
|
}, { validTypes }),
|
|
131
131
|
getMaxSize: (maxSize) => intl.formatMessage({
|
|
132
132
|
id: "uploader.maxSize",
|
|
133
|
-
defaultMessage: "Maximum file size {maxSize}
|
|
133
|
+
defaultMessage: "Maximum file size {maxSize}",
|
|
134
134
|
description: "An indicator of the maximum file size the uploader allows",
|
|
135
135
|
}, {
|
|
136
136
|
maxSize: maxSize,
|
|
@@ -13,8 +13,8 @@ describe("translations", () => {
|
|
|
13
13
|
!Object.keys(es).includes(Object.keys(en)[i]) && missingES.push(Object.keys(en)[i]);
|
|
14
14
|
!Object.keys(pig).includes(Object.keys(en)[i]) && missingPIG.push(Object.keys(en)[i]);
|
|
15
15
|
}
|
|
16
|
-
expect(missingFR.length).toBe(
|
|
17
|
-
expect(missingES.length).toBe(
|
|
16
|
+
expect(missingFR.length).toBe(0);
|
|
17
|
+
expect(missingES.length).toBe(0);
|
|
18
18
|
expect(missingPIG.length).toBe(0);
|
|
19
19
|
});
|
|
20
20
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { h } from './index-294d486f.js';
|
|
2
|
-
import { i as intl, c as checkForActiveElInShadow, e as getPosition, f as findParentWithScrollbar, d as debounce } from './functions-
|
|
2
|
+
import { i as intl, c as checkForActiveElInShadow, e as getPosition, f as findParentWithScrollbar, d as debounce } from './functions-358a1a02.js';
|
|
3
3
|
|
|
4
4
|
const colors = {
|
|
5
5
|
salmon: "#ff5f4e",
|