formiojs-eorion 0.1.39 → 0.1.41

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 (37) hide show
  1. package/Formio.js +1 -1
  2. package/components/Data/editForm/Data.edit.display.js +2 -2
  3. package/components/builder.js +2 -0
  4. package/components/file_china_grid/File.form.js +36 -0
  5. package/components/file_china_grid/File.js +1018 -0
  6. package/components/file_china_grid/File.unit.js +175 -0
  7. package/components/file_china_grid/editForm/File.edit.data.js +11 -0
  8. package/components/file_china_grid/editForm/File.edit.display.js +11 -0
  9. package/components/file_china_grid/editForm/File.edit.file.js +257 -0
  10. package/components/file_china_grid/editForm/File.edit.validation.js +14 -0
  11. package/components/file_china_grid/fixtures/comp1.js +21 -0
  12. package/components/file_china_grid/fixtures/comp2.js +36 -0
  13. package/components/file_china_grid/fixtures/index.js +20 -0
  14. package/components/file_china_grid/fixtures/values.js +16 -0
  15. package/components/index.js +2 -0
  16. package/dist/formio.builder.css +38 -0
  17. package/dist/formio.builder.min.css +1 -1
  18. package/dist/formio.contrib.js +23 -2
  19. package/dist/formio.contrib.min.js +1 -1
  20. package/dist/formio.contrib.min.js.LICENSE.txt +1 -1
  21. package/dist/formio.embed.min.js.LICENSE.txt +1 -1
  22. package/dist/formio.form.js +92 -5
  23. package/dist/formio.form.min.js +1 -1
  24. package/dist/formio.form.min.js.LICENSE.txt +1 -1
  25. package/dist/formio.full.css +38 -0
  26. package/dist/formio.full.js +92 -5
  27. package/dist/formio.full.min.css +1 -1
  28. package/dist/formio.full.min.js +1 -1
  29. package/dist/formio.full.min.js.LICENSE.txt +1 -1
  30. package/dist/formio.js +1 -1
  31. package/dist/formio.min.js +1 -1
  32. package/dist/formio.min.js.LICENSE.txt +1 -1
  33. package/dist/formio.utils.min.js.LICENSE.txt +1 -1
  34. package/package.json +1 -1
  35. package/templates/bootstrap/fileUDS/form.ejs.js +227 -0
  36. package/templates/bootstrap/fileUDS/index.js +12 -0
  37. package/templates/bootstrap/index.js +3 -1
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.to-string.js");
4
+ require("core-js/modules/web.dom-collections.for-each.js");
5
+ require("core-js/modules/es.array.concat.js");
6
+ require("core-js/modules/es.function.name.js");
7
+ require("core-js/modules/es.string.trim.js");
8
+ var _powerAssert = _interopRequireDefault(require("power-assert"));
9
+ var _harness = _interopRequireDefault(require("../../../test/harness"));
10
+ var _File = _interopRequireDefault(require("./File"));
11
+ var _fixtures = require("./fixtures");
12
+ var _Formio = _interopRequireDefault(require("./../../Formio"));
13
+ var _lodash = _interopRequireDefault(require("lodash"));
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ describe('File Component', function () {
16
+ it('Should create a File Component', function () {
17
+ return _harness.default.testCreate(_File.default, _fixtures.comp1).then(function (component) {
18
+ var parentNode = document.createElement('div');
19
+ var element = document.createElement('div');
20
+ parentNode.appendChild(element);
21
+ component.build(element);
22
+ _harness.default.testElements(component, 'ul.list-group-striped li.list-group-header', 1);
23
+ _harness.default.testElements(component, 'ul.list-group-striped li.list-group-item', 1);
24
+ _harness.default.testElements(component, 'a.browse', 1);
25
+ (0, _powerAssert.default)(component.checkValidity(component.getValue()), 'Item should be valid');
26
+ component.setValue([{
27
+ storage: 'base64',
28
+ name: 'IMG_5235-ce0abe18-5d3e-4ab4-84ca-b3e06684bc86.jpg',
29
+ url: 'data:image/jpg;base64,AAAAIGZ0eXBoZWljAAAAAG1pZjF',
30
+ size: 1159732,
31
+ type: 'image/jpeg',
32
+ originalName: 'IMG_5235.jpg'
33
+ }, {
34
+ storage: 'base64',
35
+ name: 'IMG_5235-ce0abe18-5d3e-4ab4-84ca-b3e06684bc86.png',
36
+ url: 'data:image/jpg;base64,AAAAIGZ0eXBoZWljAAAAAG1pZjF',
37
+ size: 34533,
38
+ type: 'image/png',
39
+ originalName: 'IMG_5235.png'
40
+ }]);
41
+ _harness.default.testElements(component, 'ul.list-group-striped li.list-group-header', 1);
42
+ _harness.default.testElements(component, 'ul.list-group-striped li.list-group-item', 3);
43
+ _harness.default.testElements(component, 'a.browse', 0);
44
+ (0, _powerAssert.default)(component.checkValidity(component.getValue()), 'Item should be valid');
45
+ });
46
+ });
47
+ it('Should hide loader after loading process', function () {
48
+ return _harness.default.testCreate(_File.default, _fixtures.comp1).then(function (component) {
49
+ var parentNode = document.createElement('div');
50
+ var element = document.createElement('div');
51
+ parentNode.appendChild(element);
52
+ component.build(element);
53
+ _harness.default.testElements(component, 'div.loader-wrapper', 1);
54
+ component.setValue([{
55
+ storage: 'base64',
56
+ name: 'IMG_5235-ce0abe18-5d3e-4ab4-84ca-b3e06684bc86.jpg',
57
+ url: 'data:image/jpg;base64,AAAAIGZ0eXBoZWljAAAAAG1pZjF',
58
+ size: 1159732,
59
+ type: 'image/jpeg',
60
+ originalName: 'IMG_5235.jpg'
61
+ }]);
62
+ _harness.default.testElements(component, 'div.loader-wrapper', 0);
63
+ });
64
+ });
65
+ it('Should create a multiple File Component', function () {
66
+ _fixtures.comp1.multiple = true;
67
+ return _harness.default.testCreate(_File.default, _fixtures.comp1).then(function (component) {
68
+ var parentNode = document.createElement('div');
69
+ var element = document.createElement('div');
70
+ parentNode.appendChild(element);
71
+ component.build(element);
72
+ _harness.default.testElements(component, 'ul.list-group-striped li.list-group-header', 1);
73
+ _harness.default.testElements(component, 'ul.list-group-striped li.list-group-item', 1);
74
+ _harness.default.testElements(component, 'a.browse', 1);
75
+ (0, _powerAssert.default)(component.checkValidity(component.getValue()), 'Item should be valid');
76
+ component.setValue([{
77
+ storage: 'base64',
78
+ name: 'IMG_5235-ce0abe18-5d3e-4ab4-84ca-b3e06684bc86.jpg',
79
+ url: 'data:image/jpg;base64,AAAAIGZ0eXBoZWljAAAAAG1pZjF',
80
+ size: 1159732,
81
+ type: 'image/jpeg',
82
+ originalName: 'IMG_5235.jpg'
83
+ }, {
84
+ storage: 'base64',
85
+ name: 'IMG_5235-ce0abe18-5d3e-4ab4-84ca-b3e06684bc86.png',
86
+ url: 'data:image/jpg;base64,AAAAIGZ0eXBoZWljAAAAAG1pZjF',
87
+ size: 34533,
88
+ type: 'image/png',
89
+ originalName: 'IMG_5235.png'
90
+ }]);
91
+ _harness.default.testElements(component, 'ul.list-group-striped li.list-group-header', 1);
92
+ _harness.default.testElements(component, 'ul.list-group-striped li.list-group-item', 3);
93
+ _harness.default.testElements(component, 'a.browse', 1);
94
+ (0, _powerAssert.default)(component.checkValidity(component.getValue()), 'Item should be valid');
95
+ });
96
+ });
97
+ it('Should validate uploaded file according to the pattern', function (done) {
98
+ _harness.default.testCreate(_File.default, _fixtures.comp1).then(function (component) {
99
+ var validFiles = [{
100
+ name: 'test.jpg',
101
+ size: 27401,
102
+ type: 'image/jpeg'
103
+ }, {
104
+ name: 'TypeScript.pdf',
105
+ size: 203123,
106
+ type: 'application/pdf'
107
+ }, {
108
+ name: 'build with dist.png',
109
+ size: 137321,
110
+ type: 'image/png'
111
+ }];
112
+ var invalidFiles = [{
113
+ name: 'eventsList.xlsx',
114
+ size: 16022,
115
+ type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
116
+ }, {
117
+ name: 'lazy load.mp4',
118
+ size: 9083622,
119
+ type: 'video/mp4'
120
+ }];
121
+ var pattern = ' .jpg, .png, .exe, .pdf ';
122
+ var checkValidatePattern = function checkValidatePattern(files, valid) {
123
+ files.forEach(function (file) {
124
+ _powerAssert.default.equal(component.validatePattern(file, pattern), valid, "File ".concat(file.name, " should ").concat(valid ? '' : 'not', " correspond to the pattern"));
125
+ });
126
+ };
127
+ checkValidatePattern(validFiles, true);
128
+ checkValidatePattern(invalidFiles, false);
129
+ done();
130
+ });
131
+ });
132
+ it('Should display uploaded file in file component only after saving', function (done) {
133
+ var form = _lodash.default.cloneDeep(_fixtures.comp2);
134
+ var element = document.createElement('div');
135
+ _Formio.default.createForm(element, form).then(function (form) {
136
+ var value = [{
137
+ storage: 'base64',
138
+ name: '33-0ae897b9-c808-4832-a5e1-4e5d0c725f1b.jpg',
139
+ url: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD…CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//2Q==',
140
+ size: 102691,
141
+ type: 'image/jpeg',
142
+ originalName: '33.jpg'
143
+ }];
144
+ var file = form.getComponent('file');
145
+ var openModalButton = file.componentModal.refs.openModal;
146
+ var clickEvent = new Event('click');
147
+ openModalButton.dispatchEvent(clickEvent);
148
+ setTimeout(function () {
149
+ _powerAssert.default.equal(file.componentModal.isOpened, true);
150
+ file.dataValue = value;
151
+ file.redraw();
152
+ setTimeout(function () {
153
+ _powerAssert.default.equal(file.refs.fileLink.length, 1);
154
+ var modalOverlayButton = file.componentModal.refs.modalOverlay;
155
+ modalOverlayButton.dispatchEvent(clickEvent);
156
+ setTimeout(function () {
157
+ _powerAssert.default.equal(!!file.componentModal.dialogElement, true);
158
+ var dialogYesButton = file.componentModal.dialogElement.refs.dialogYesButton;
159
+ dialogYesButton.dispatchEvent(clickEvent);
160
+ setTimeout(function () {
161
+ _powerAssert.default.equal(!!file.componentModal.dialogElement, false);
162
+ file.componentModal.closeModal();
163
+ setTimeout(function () {
164
+ _powerAssert.default.equal(file.componentModal.isOpened, false);
165
+ _powerAssert.default.equal(file.refs.fileLink.length, 0);
166
+ _powerAssert.default.equal(file.componentModal.refs.openModal.textContent.trim(), 'Click to set value');
167
+ done();
168
+ }, 200);
169
+ }, 200);
170
+ }, 200);
171
+ }, 200);
172
+ }, 200);
173
+ }).catch(done);
174
+ });
175
+ });
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = [{
8
+ key: 'defaultValue',
9
+ ignore: true
10
+ }];
11
+ exports.default = _default;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = [{
8
+ key: 'placeholder',
9
+ ignore: true
10
+ }];
11
+ exports.default = _default;
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ require("core-js/modules/es.array.filter.js");
8
+ require("core-js/modules/es.object.to-string.js");
9
+ require("core-js/modules/es.array.map.js");
10
+ var _Formio = require("../../../Formio");
11
+ var _lodash = _interopRequireDefault(require("lodash"));
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ var _default = [{
14
+ type: 'select',
15
+ input: true,
16
+ key: 'storage',
17
+ label: 'Storage',
18
+ defaultValue: 'url',
19
+ placeholder: 'Select your file storage provider',
20
+ weight: 0,
21
+ tooltip: 'Which storage to save the files in.',
22
+ valueProperty: 'value',
23
+ dataSrc: 'custom',
24
+ data: {
25
+ custom: function custom() {
26
+ return _lodash.default.map(_Formio.GlobalFormio.Providers.getProviders('storage'), function (storage, key) {
27
+ return {
28
+ label: storage.title,
29
+ value: key
30
+ };
31
+ }).filter(function (provider) {
32
+ return provider.value === 'url';
33
+ });
34
+ }
35
+ }
36
+ }, {
37
+ type: 'textfield',
38
+ input: true,
39
+ key: 'url',
40
+ label: 'Url',
41
+ weight: 10,
42
+ placeholder: 'Enter the url to post the files to.',
43
+ tooltip: "See <a href='https://github.com/danialfarid/ng-file-upload#server-side' target='_blank'>https://github.com/danialfarid/ng-file-upload#server-side</a> for how to set up the server.",
44
+ conditional: {
45
+ json: {
46
+ '===': [{
47
+ var: 'data.storage'
48
+ }, 'url']
49
+ }
50
+ }
51
+ }, {
52
+ type: 'textfield',
53
+ input: true,
54
+ key: 'options.indexeddb',
55
+ label: 'Database',
56
+ weight: 10,
57
+ placeholder: 'Enter the indexeddb database name',
58
+ conditional: {
59
+ json: {
60
+ in: [{
61
+ var: 'data.storage'
62
+ }, ['indexeddb']]
63
+ }
64
+ }
65
+ }, {
66
+ type: 'textfield',
67
+ input: true,
68
+ label: 'Table',
69
+ key: 'options.indexeddbTable',
70
+ weight: 10,
71
+ placeholder: 'Enter the name for indexeddb table',
72
+ conditional: {
73
+ json: {
74
+ in: [{
75
+ var: 'data.storage'
76
+ }, ['indexeddb']]
77
+ }
78
+ }
79
+ }, {
80
+ type: 'textarea',
81
+ key: 'options',
82
+ label: 'Custom request options',
83
+ tooltip: 'Pass your custom xhr options(optional)',
84
+ rows: 5,
85
+ editor: 'ace',
86
+ input: true,
87
+ weight: 15,
88
+ placeholder: "{\n \"withCredentials\": true\n}",
89
+ conditional: {
90
+ json: {
91
+ '===': [{
92
+ var: 'data.storage'
93
+ }, 'url']
94
+ }
95
+ }
96
+ }, {
97
+ type: 'textfield',
98
+ input: true,
99
+ key: 'fileKey',
100
+ label: 'File form-data key',
101
+ weight: 17,
102
+ placeholder: 'Enter the key name of a file for form data.',
103
+ tooltip: 'Key name that you would like to modify for the file while calling API request.',
104
+ conditional: {
105
+ json: {
106
+ '===': [{
107
+ var: 'data.storage'
108
+ }, 'url']
109
+ }
110
+ }
111
+ }, {
112
+ type: 'textfield',
113
+ input: true,
114
+ key: 'dir',
115
+ label: 'Directory',
116
+ placeholder: '(optional) Enter a directory for the files',
117
+ tooltip: 'This will place all the files uploaded in this field in the directory',
118
+ weight: 20,
119
+ conditional: {
120
+ json: {
121
+ '!==': [{
122
+ var: 'data.storage'
123
+ }, 'googledrive']
124
+ }
125
+ }
126
+ }, {
127
+ type: 'textfield',
128
+ input: true,
129
+ key: 'dir',
130
+ label: 'Folder ID',
131
+ placeholder: '(optional) Enter an ID of the folder for the files',
132
+ tooltip: 'This will place all the files uploaded in this field in the folder',
133
+ weight: 20,
134
+ conditional: {
135
+ json: {
136
+ '===': [{
137
+ var: 'data.storage'
138
+ }, 'googledrive']
139
+ }
140
+ }
141
+ }, {
142
+ type: 'textfield',
143
+ input: true,
144
+ key: 'fileNameTemplate',
145
+ label: 'File Name Template',
146
+ placeholder: '(optional) { {name} }-{ {guid} }"',
147
+ tooltip: 'Specify template for name of uploaded file(s). Regular template variables are available (`data`, `component`, `user`, `value`, `moment` etc.), also `fileName`, `guid` variables are available. `guid` part must be present, if not found in template, will be added at the end.',
148
+ weight: 25
149
+ }, {
150
+ type: 'checkbox',
151
+ input: true,
152
+ key: 'image',
153
+ label: 'Display as image(s)',
154
+ tooltip: 'Instead of a list of linked files, images will be rendered in the view.',
155
+ weight: 30
156
+ }, {
157
+ type: 'checkbox',
158
+ input: true,
159
+ key: 'uploadOnly',
160
+ label: 'Upload Only',
161
+ tooltip: 'When this is checked, will only allow you to upload file(s) and consequently the download, in this component, will be unavailable.',
162
+ weight: 33
163
+ }, {
164
+ type: 'checkbox',
165
+ input: true,
166
+ key: 'privateDownload',
167
+ label: 'Private Download',
168
+ tooltip: 'When this is checked, the file download will send a POST request to the download URL with the x-jwt-token header. This will allow your endpoint to create a Private download system.',
169
+ weight: 31,
170
+ conditional: {
171
+ json: {
172
+ '===': [{
173
+ var: 'data.storage'
174
+ }, 'url']
175
+ }
176
+ }
177
+ }, {
178
+ type: 'textfield',
179
+ input: true,
180
+ key: 'imageSize',
181
+ label: 'Image Size',
182
+ placeholder: '100',
183
+ tooltip: 'The image size for previewing images.',
184
+ weight: 40,
185
+ conditional: {
186
+ json: {
187
+ '==': [{
188
+ var: 'data.image'
189
+ }, true]
190
+ }
191
+ }
192
+ }, {
193
+ type: 'checkbox',
194
+ input: true,
195
+ key: 'webcam',
196
+ label: 'Enable web camera',
197
+ tooltip: 'This will allow using an attached camera to directly take a picture instead of uploading an existing file.',
198
+ weight: 32
199
+ }, {
200
+ type: 'textfield',
201
+ input: true,
202
+ key: 'webcamSize',
203
+ label: 'Webcam Width',
204
+ placeholder: '320',
205
+ tooltip: 'The webcam size for taking pictures.',
206
+ weight: 38,
207
+ conditional: {
208
+ json: {
209
+ '==': [{
210
+ var: 'data.webcam'
211
+ }, true]
212
+ }
213
+ }
214
+ }, {
215
+ type: 'datagrid',
216
+ input: true,
217
+ label: 'File Types',
218
+ key: 'fileTypes',
219
+ tooltip: 'Specify file types to classify the uploads. This is useful if you allow multiple types of uploads but want to allow the user to specify which type of file each is.',
220
+ weight: 11,
221
+ components: [{
222
+ label: 'Label',
223
+ key: 'label',
224
+ input: true,
225
+ type: 'textfield'
226
+ }, {
227
+ label: 'Value',
228
+ key: 'value',
229
+ input: true,
230
+ type: 'textfield'
231
+ }]
232
+ }, {
233
+ type: 'textfield',
234
+ input: true,
235
+ key: 'filePattern',
236
+ label: 'File Pattern',
237
+ placeholder: '.jpg,video/*,application/pdf',
238
+ tooltip: 'See <a href=\'https://github.com/danialfarid/ng-file-upload#full-reference\' target=\'_blank\'>https://github.com/danialfarid/ng-file-upload#full-reference</a> for how to specify file patterns.',
239
+ weight: 50
240
+ }, {
241
+ type: 'textfield',
242
+ input: true,
243
+ key: 'fileMinSize',
244
+ label: 'File Minimum Size',
245
+ placeholder: '1MB',
246
+ tooltip: 'See <a href=\'https://github.com/danialfarid/ng-file-upload#full-reference\' target=\'_blank\'>https://github.com/danialfarid/ng-file-upload#full-reference</a> for how to specify file sizes.',
247
+ weight: 60
248
+ }, {
249
+ type: 'textfield',
250
+ input: true,
251
+ key: 'fileMaxSize',
252
+ label: 'File Maximum Size',
253
+ placeholder: '10MB',
254
+ tooltip: 'See <a href=\'https://github.com/danialfarid/ng-file-upload#full-reference\' target=\'_blank\'>https://github.com/danialfarid/ng-file-upload#full-reference</a> for how to specify file sizes.',
255
+ weight: 70
256
+ }];
257
+ exports.default = _default;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = [{
8
+ key: 'unique',
9
+ ignore: true
10
+ }, {
11
+ key: 'validateOn',
12
+ ignore: true
13
+ }];
14
+ exports.default = _default;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = {
8
+ 'label': 'Upload',
9
+ 'tableView': false,
10
+ 'storage': 'base64',
11
+ 'webcam': false,
12
+ 'fileTypes': [{
13
+ 'label': '',
14
+ 'value': ''
15
+ }],
16
+ 'calculateServer': false,
17
+ 'key': 'upload',
18
+ 'type': 'file',
19
+ 'input': true
20
+ };
21
+ exports.default = _default;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = {
8
+ _id: '6108f1dac7e55d5cabe2627f',
9
+ type: 'form',
10
+ components: [{
11
+ label: 'Upload',
12
+ tableView: false,
13
+ modalEdit: true,
14
+ storage: 'base64',
15
+ webcam: false,
16
+ fileTypes: [{
17
+ label: '',
18
+ value: ''
19
+ }],
20
+ key: 'file',
21
+ type: 'file',
22
+ input: true
23
+ }, {
24
+ type: 'button',
25
+ label: 'Submit',
26
+ key: 'submit',
27
+ disableOnInvalid: true,
28
+ input: true,
29
+ tableView: false
30
+ }],
31
+ title: 'testFileForm',
32
+ display: 'form',
33
+ name: 'testFileForm',
34
+ path: 'testfileform'
35
+ };
36
+ exports.default = _default;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "comp1", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _comp.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "comp2", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _comp2.default;
16
+ }
17
+ });
18
+ var _comp = _interopRequireDefault(require("./comp1"));
19
+ var _comp2 = _interopRequireDefault(require("./comp2"));
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }