@pnp/spfx-controls-react 3.17.0-beta.6991023 → 3.17.0-beta.7003036
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/CHANGELOG.json +6 -2
- package/CHANGELOG.md +8 -0
- package/lib/common/telemetry/version.js +1 -1
- package/lib/controls/dynamicForm/DynamicForm.d.ts +3 -0
- package/lib/controls/dynamicForm/DynamicForm.d.ts.map +1 -1
- package/lib/controls/dynamicForm/DynamicForm.js +200 -71
- package/lib/controls/dynamicForm/DynamicForm.js.map +1 -1
- package/lib/controls/dynamicForm/DynamicForm.module.css +2 -2
- package/lib/controls/dynamicForm/DynamicForm.module.scss.d.ts +1 -0
- package/lib/controls/dynamicForm/DynamicForm.module.scss.d.ts.map +1 -1
- package/lib/controls/dynamicForm/DynamicForm.module.scss.js +21 -20
- package/lib/controls/dynamicForm/DynamicForm.module.scss.js.map +1 -1
- package/lib/controls/dynamicForm/IDynamicFormProps.d.ts +11 -0
- package/lib/controls/dynamicForm/IDynamicFormProps.d.ts.map +1 -1
- package/lib/controls/dynamicForm/IDynamicFormState.d.ts +3 -0
- package/lib/controls/dynamicForm/IDynamicFormState.d.ts.map +1 -1
- package/lib/loc/bg-bg.js +3 -0
- package/lib/loc/bg-bg.js.map +1 -1
- package/lib/loc/ca-es.js +3 -0
- package/lib/loc/ca-es.js.map +1 -1
- package/lib/loc/da-dk.js +3 -0
- package/lib/loc/da-dk.js.map +1 -1
- package/lib/loc/de-de.js +3 -0
- package/lib/loc/de-de.js.map +1 -1
- package/lib/loc/el-gr.js +3 -0
- package/lib/loc/el-gr.js.map +1 -1
- package/lib/loc/en-us.js +3 -0
- package/lib/loc/en-us.js.map +1 -1
- package/lib/loc/es-es.js +3 -0
- package/lib/loc/es-es.js.map +1 -1
- package/lib/loc/et-ee.js +3 -0
- package/lib/loc/et-ee.js.map +1 -1
- package/lib/loc/eu-es.js +3 -0
- package/lib/loc/eu-es.js.map +1 -1
- package/lib/loc/fi-fi.js +3 -0
- package/lib/loc/fi-fi.js.map +1 -1
- package/lib/loc/fr-ca.js +3 -0
- package/lib/loc/fr-ca.js.map +1 -1
- package/lib/loc/fr-fr.js +3 -0
- package/lib/loc/fr-fr.js.map +1 -1
- package/lib/loc/it-it.js +3 -0
- package/lib/loc/it-it.js.map +1 -1
- package/lib/loc/ja-jp.js +3 -0
- package/lib/loc/ja-jp.js.map +1 -1
- package/lib/loc/lt-lt.js +3 -0
- package/lib/loc/lt-lt.js.map +1 -1
- package/lib/loc/lv-lv.js +3 -0
- package/lib/loc/lv-lv.js.map +1 -1
- package/lib/loc/nb-no.js +3 -0
- package/lib/loc/nb-no.js.map +1 -1
- package/lib/loc/nl-nl.js +3 -0
- package/lib/loc/nl-nl.js.map +1 -1
- package/lib/loc/pl-pl.js +3 -0
- package/lib/loc/pl-pl.js.map +1 -1
- package/lib/loc/pt-br.js +3 -0
- package/lib/loc/pt-br.js.map +1 -1
- package/lib/loc/pt-pt.js +3 -0
- package/lib/loc/pt-pt.js.map +1 -1
- package/lib/loc/ro-ro.js +3 -0
- package/lib/loc/ro-ro.js.map +1 -1
- package/lib/loc/ru-ru.js +3 -0
- package/lib/loc/ru-ru.js.map +1 -1
- package/lib/loc/sk-sk.js +3 -0
- package/lib/loc/sk-sk.js.map +1 -1
- package/lib/loc/sr-latn-rs.js +3 -0
- package/lib/loc/sr-latn-rs.js.map +1 -1
- package/lib/loc/sv-se.js +3 -0
- package/lib/loc/sv-se.js.map +1 -1
- package/lib/loc/tr-tr.js +3 -0
- package/lib/loc/tr-tr.js.map +1 -1
- package/lib/loc/vi-vn.js +3 -0
- package/lib/loc/vi-vn.js.map +1 -1
- package/lib/loc/zh-cn.js +3 -0
- package/lib/loc/zh-cn.js.map +1 -1
- package/lib/loc/zh-tw.js +3 -0
- package/lib/loc/zh-tw.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.json
CHANGED
|
@@ -4,10 +4,14 @@
|
|
|
4
4
|
"version": "3.17.0",
|
|
5
5
|
"changes":{
|
|
6
6
|
"new": [],
|
|
7
|
-
"enhancements": [
|
|
7
|
+
"enhancements": [
|
|
8
|
+
"`DyanmicForm`: Added file handling [#1625](https://github.com/pnp/sp-dev-fx-controls-react/pull/1625)"
|
|
9
|
+
],
|
|
8
10
|
"fixes": []
|
|
9
11
|
},
|
|
10
|
-
"contributions": [
|
|
12
|
+
"contributions": [
|
|
13
|
+
"[Guido Zambarda](https://github.com/GuidoZam)"
|
|
14
|
+
]
|
|
11
15
|
},
|
|
12
16
|
{
|
|
13
17
|
"version": "3.16.0",
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
## 3.17.0
|
|
4
4
|
|
|
5
|
+
### Enhancements
|
|
6
|
+
|
|
7
|
+
- `DyanmicForm`: Added file handling [#1625](https://github.com/pnp/sp-dev-fx-controls-react/pull/1625)
|
|
8
|
+
|
|
9
|
+
### Contributors
|
|
10
|
+
|
|
11
|
+
Special thanks to our contributor: [Guido Zambarda](https://github.com/GuidoZam).
|
|
12
|
+
|
|
5
13
|
## 3.16.0
|
|
6
14
|
|
|
7
15
|
### New control(s)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export var version = "3.17.0-beta.
|
|
1
|
+
export var version = "3.17.0-beta.7003036";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -21,6 +21,7 @@ export declare class DynamicForm extends React.Component<IDynamicFormProps, IDyn
|
|
|
21
21
|
*/
|
|
22
22
|
render(): JSX.Element;
|
|
23
23
|
private onSubmitClick;
|
|
24
|
+
private addFileToLibrary;
|
|
24
25
|
private onChange;
|
|
25
26
|
private getFieldInformations;
|
|
26
27
|
private cultureNameLookup;
|
|
@@ -30,6 +31,8 @@ export declare class DynamicForm extends React.Component<IDynamicFormProps, IDyn
|
|
|
30
31
|
private closeValidationErrorDialog;
|
|
31
32
|
private getValidationErrorTitle;
|
|
32
33
|
private getValidationErrorMessage;
|
|
34
|
+
private renderFileSelectionControl;
|
|
35
|
+
private getFileIconFromExtension;
|
|
33
36
|
private isEmptyNumOrString;
|
|
34
37
|
}
|
|
35
38
|
//# sourceMappingURL=DynamicForm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicForm.d.ts","sourceRoot":"","sources":["../../../src/controls/dynamicForm/DynamicForm.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DynamicForm.d.ts","sourceRoot":"","sources":["../../../src/controls/dynamicForm/DynamicForm.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,OAAO,eAAe,CAAC;AACvB,OAAO,uBAAuB,CAAC;AAC/B,OAAO,iBAAiB,CAAC;AACzB,OAAO,eAAe,CAAC;AAIvB;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAC9C,iBAAiB,EACjB,iBAAiB,CAClB;IACC,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,MAAM,CAEqC;gBAEvC,KAAK,EAAE,iBAAiB;IA8BpC;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAUhC;;OAEG;IACI,MAAM,IAAI,GAAG,CAAC,OAAO;IAsF5B,OAAO,CAAC,aAAa,CA4QnB;IAEF,OAAO,CAAC,gBAAgB,CAwDvB;IAGD,OAAO,CAAC,QAAQ,CAkDd;IAGF,OAAO,CAAC,oBAAoB,CAyR1B;IAEF,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,WAAW,CAqBjB;IAEF,OAAO,CAAC,mBAAmB,CASzB;IAEF,OAAO,CAAC,aAAa,CA0CnB;IAEF,OAAO,CAAC,0BAA0B,CAIhC;IAEF,OAAO,CAAC,uBAAuB,CAS7B;IAEF,OAAO,CAAC,yBAAyB,CAS/B;IAEF,OAAO,CAAC,0BAA0B,CA6CjC;IAED,OAAO,CAAC,wBAAwB,CAsB/B;IAED,OAAO,CAAC,kBAAkB;CAG3B"}
|
|
@@ -67,8 +67,10 @@ import * as strings from "ControlStrings";
|
|
|
67
67
|
import { DefaultButton, PrimaryButton, } from "@fluentui/react/lib/Button";
|
|
68
68
|
import { ProgressIndicator } from "@fluentui/react/lib/ProgressIndicator";
|
|
69
69
|
import { Stack } from "@fluentui/react/lib/Stack";
|
|
70
|
+
import { Icon } from "@fluentui/react/lib/components/Icon/Icon";
|
|
70
71
|
import * as React from "react";
|
|
71
72
|
import SPservice from "../../services/SPService";
|
|
73
|
+
import { FilePicker } from "../filePicker";
|
|
72
74
|
import { DynamicField } from "./dynamicField";
|
|
73
75
|
import styles from "./DynamicForm.module.scss";
|
|
74
76
|
import { Dialog, DialogFooter, DialogType, } from "@fluentui/react/lib/Dialog";
|
|
@@ -89,16 +91,16 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
89
91
|
: _this.props.context.pageContext.web.absoluteUrl;
|
|
90
92
|
//trigger when the user submits the form.
|
|
91
93
|
_this.onSubmitClick = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
92
|
-
var _a, listId, listItemId, contentTypeId, onSubmitted, onBeforeSubmit, onSubmitError, shouldBeReturnBack_1, fields, objects, _loop_1, this_1, i, len, isCancelled, newETag, iur, error_1, contentTypeIdField, iar, error_2, idField, titleField, contentTypeIdField, library, folderTitle, newFolder, fields_1, folderId, iur, error_3, error_4;
|
|
94
|
+
var _a, listId, listItemId, contentTypeId, onSubmitted, onBeforeSubmit, onSubmitError, enableFileSelection, validationErrorDialogProps, returnListItemInstanceOnSubmit, shouldBeReturnBack_1, fields, objects, _loop_1, this_1, i, len, isCancelled, newETag, iur, error_1, contentTypeIdField, iar, error_2, idField, titleField, contentTypeIdField, library, folderTitle, newFolder, fields_1, folderId, iur, error_3, error_4;
|
|
93
95
|
var _this = this;
|
|
94
|
-
var _b, _c, _d, _e
|
|
95
|
-
return __generator(this, function (
|
|
96
|
-
switch (
|
|
96
|
+
var _b, _c, _d, _e;
|
|
97
|
+
return __generator(this, function (_f) {
|
|
98
|
+
switch (_f.label) {
|
|
97
99
|
case 0:
|
|
98
|
-
_a = this.props, listId = _a.listId, listItemId = _a.listItemId, contentTypeId = _a.contentTypeId, onSubmitted = _a.onSubmitted, onBeforeSubmit = _a.onBeforeSubmit, onSubmitError = _a.onSubmitError;
|
|
99
|
-
|
|
100
|
+
_a = this.props, listId = _a.listId, listItemId = _a.listItemId, contentTypeId = _a.contentTypeId, onSubmitted = _a.onSubmitted, onBeforeSubmit = _a.onBeforeSubmit, onSubmitError = _a.onSubmitError, enableFileSelection = _a.enableFileSelection, validationErrorDialogProps = _a.validationErrorDialogProps, returnListItemInstanceOnSubmit = _a.returnListItemInstanceOnSubmit;
|
|
101
|
+
_f.label = 1;
|
|
100
102
|
case 1:
|
|
101
|
-
|
|
103
|
+
_f.trys.push([1, 31, , 32]);
|
|
102
104
|
shouldBeReturnBack_1 = false;
|
|
103
105
|
fields = (this.state.fieldCollection || []).slice();
|
|
104
106
|
fields.forEach(function (val) {
|
|
@@ -138,7 +140,14 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
138
140
|
if (shouldBeReturnBack_1) {
|
|
139
141
|
this.setState({
|
|
140
142
|
fieldCollection: fields,
|
|
141
|
-
isValidationErrorDialogOpen: (
|
|
143
|
+
isValidationErrorDialogOpen: (validationErrorDialogProps === null || validationErrorDialogProps === void 0 ? void 0 : validationErrorDialogProps.showDialogOnValidationError) === true,
|
|
144
|
+
});
|
|
145
|
+
return [2 /*return*/];
|
|
146
|
+
}
|
|
147
|
+
if (enableFileSelection === true && this.state.selectedFile === undefined && this.props.listItemId === undefined) {
|
|
148
|
+
this.setState({
|
|
149
|
+
missingSelectedFile: true,
|
|
150
|
+
isValidationErrorDialogOpen: (validationErrorDialogProps === null || validationErrorDialogProps === void 0 ? void 0 : validationErrorDialogProps.showDialogOnValidationError) === true,
|
|
142
151
|
});
|
|
143
152
|
return [2 /*return*/];
|
|
144
153
|
}
|
|
@@ -148,8 +157,8 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
148
157
|
objects = {};
|
|
149
158
|
_loop_1 = function (i, len) {
|
|
150
159
|
var val, fieldType, additionalData, columnInternalName, hiddenFieldName, value_1, uploadedImage;
|
|
151
|
-
return __generator(this, function (
|
|
152
|
-
switch (
|
|
160
|
+
return __generator(this, function (_g) {
|
|
161
|
+
switch (_g.label) {
|
|
153
162
|
case 0:
|
|
154
163
|
val = fields[i];
|
|
155
164
|
fieldType = val.fieldType, additionalData = val.additionalData, columnInternalName = val.columnInternalName, hiddenFieldName = val.hiddenFieldName;
|
|
@@ -177,8 +186,8 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
177
186
|
if (!(fieldType === "TaxonomyFieldType")) return [3 /*break*/, 3];
|
|
178
187
|
objects[columnInternalName] = {
|
|
179
188
|
__metadata: { type: "SP.Taxonomy.TaxonomyFieldValue" },
|
|
180
|
-
Label: (
|
|
181
|
-
TermGuid: (
|
|
189
|
+
Label: (_c = (_b = value_1[0]) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : "",
|
|
190
|
+
TermGuid: (_e = (_d = value_1[0]) === null || _d === void 0 ? void 0 : _d.key) !== null && _e !== void 0 ? _e : "11111111-1111-1111-1111-111111111111",
|
|
182
191
|
WssId: "-1",
|
|
183
192
|
};
|
|
184
193
|
return [3 /*break*/, 14];
|
|
@@ -215,7 +224,7 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
215
224
|
if (!additionalData) return [3 /*break*/, 11];
|
|
216
225
|
return [4 /*yield*/, this_1.uploadImage(additionalData)];
|
|
217
226
|
case 10:
|
|
218
|
-
uploadedImage =
|
|
227
|
+
uploadedImage = _g.sent();
|
|
219
228
|
objects[columnInternalName] = JSON.stringify({
|
|
220
229
|
type: "thumbnail",
|
|
221
230
|
fileName: uploadedImage.Name,
|
|
@@ -225,24 +234,24 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
225
234
|
return [3 /*break*/, 12];
|
|
226
235
|
case 11:
|
|
227
236
|
objects[columnInternalName] = null;
|
|
228
|
-
|
|
237
|
+
_g.label = 12;
|
|
229
238
|
case 12: return [3 /*break*/, 14];
|
|
230
239
|
case 13:
|
|
231
240
|
objects[columnInternalName] = val.newValue;
|
|
232
|
-
|
|
241
|
+
_g.label = 14;
|
|
233
242
|
case 14: return [2 /*return*/];
|
|
234
243
|
}
|
|
235
244
|
});
|
|
236
245
|
};
|
|
237
246
|
this_1 = this;
|
|
238
247
|
i = 0, len = fields.length;
|
|
239
|
-
|
|
248
|
+
_f.label = 2;
|
|
240
249
|
case 2:
|
|
241
250
|
if (!(i < len)) return [3 /*break*/, 5];
|
|
242
251
|
return [5 /*yield**/, _loop_1(i, len)];
|
|
243
252
|
case 3:
|
|
244
|
-
|
|
245
|
-
|
|
253
|
+
_f.sent();
|
|
254
|
+
_f.label = 4;
|
|
246
255
|
case 4:
|
|
247
256
|
i++;
|
|
248
257
|
return [3 /*break*/, 2];
|
|
@@ -250,126 +259,192 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
250
259
|
if (!onBeforeSubmit) return [3 /*break*/, 7];
|
|
251
260
|
return [4 /*yield*/, onBeforeSubmit(objects)];
|
|
252
261
|
case 6:
|
|
253
|
-
isCancelled =
|
|
262
|
+
isCancelled = _f.sent();
|
|
254
263
|
if (isCancelled) {
|
|
255
264
|
this.setState({
|
|
256
265
|
isSaving: false,
|
|
257
266
|
});
|
|
258
267
|
return [2 /*return*/];
|
|
259
268
|
}
|
|
260
|
-
|
|
269
|
+
_f.label = 7;
|
|
261
270
|
case 7:
|
|
262
271
|
newETag = undefined;
|
|
263
272
|
if (!listItemId) return [3 /*break*/, 12];
|
|
264
|
-
|
|
273
|
+
_f.label = 8;
|
|
265
274
|
case 8:
|
|
266
|
-
|
|
275
|
+
_f.trys.push([8, 10, , 11]);
|
|
267
276
|
return [4 /*yield*/, sp.web.lists
|
|
268
277
|
.getById(listId)
|
|
269
278
|
.items.getById(listItemId)
|
|
270
279
|
.update(objects, this.state.etag)];
|
|
271
280
|
case 9:
|
|
272
|
-
iur =
|
|
281
|
+
iur = _f.sent();
|
|
273
282
|
newETag = iur.data["odata.etag"];
|
|
274
283
|
if (onSubmitted) {
|
|
275
|
-
onSubmitted(iur.data,
|
|
284
|
+
onSubmitted(iur.data, returnListItemInstanceOnSubmit !== false
|
|
276
285
|
? iur.item
|
|
277
286
|
: undefined);
|
|
278
287
|
}
|
|
279
288
|
return [3 /*break*/, 11];
|
|
280
289
|
case 10:
|
|
281
|
-
error_1 =
|
|
290
|
+
error_1 = _f.sent();
|
|
282
291
|
if (onSubmitError) {
|
|
283
292
|
onSubmitError(objects, error_1);
|
|
284
293
|
}
|
|
285
294
|
console.log("Error", error_1);
|
|
286
295
|
return [3 /*break*/, 11];
|
|
287
|
-
case 11: return [3 /*break*/,
|
|
296
|
+
case 11: return [3 /*break*/, 30];
|
|
288
297
|
case 12:
|
|
289
298
|
if (!(contentTypeId === undefined ||
|
|
290
299
|
contentTypeId === "" ||
|
|
291
|
-
!contentTypeId.startsWith("0x0120")
|
|
292
|
-
|
|
293
|
-
|
|
300
|
+
(!contentTypeId.startsWith("0x0120") &&
|
|
301
|
+
contentTypeId.startsWith("0x01")))) return [3 /*break*/, 18];
|
|
302
|
+
if (!(contentTypeId === undefined || enableFileSelection === true)) return [3 /*break*/, 14];
|
|
303
|
+
return [4 /*yield*/, this.addFileToLibrary(objects)];
|
|
294
304
|
case 13:
|
|
295
|
-
|
|
305
|
+
_f.sent();
|
|
306
|
+
return [3 /*break*/, 17];
|
|
307
|
+
case 14:
|
|
308
|
+
_f.trys.push([14, 16, , 17]);
|
|
296
309
|
contentTypeIdField = "ContentTypeId";
|
|
297
310
|
//check if item contenttype is passed, then update the object with content type id, else, pass the object
|
|
298
311
|
if (contentTypeId !== undefined && contentTypeId.startsWith("0x01"))
|
|
299
312
|
objects[contentTypeIdField] = contentTypeId;
|
|
300
313
|
return [4 /*yield*/, sp.web.lists.getById(listId).items.add(objects)];
|
|
301
|
-
case
|
|
302
|
-
iar =
|
|
314
|
+
case 15:
|
|
315
|
+
iar = _f.sent();
|
|
303
316
|
if (onSubmitted) {
|
|
304
317
|
onSubmitted(iar.data, this.props.returnListItemInstanceOnSubmit !== false
|
|
305
318
|
? iar.item
|
|
306
319
|
: undefined);
|
|
307
320
|
}
|
|
308
|
-
return [3 /*break*/,
|
|
309
|
-
case
|
|
310
|
-
error_2 =
|
|
321
|
+
return [3 /*break*/, 17];
|
|
322
|
+
case 16:
|
|
323
|
+
error_2 = _f.sent();
|
|
311
324
|
if (onSubmitError) {
|
|
312
325
|
onSubmitError(objects, error_2);
|
|
313
326
|
}
|
|
314
327
|
console.log("Error", error_2);
|
|
315
|
-
return [3 /*break*/,
|
|
316
|
-
case
|
|
317
|
-
case 17:
|
|
318
|
-
if (!contentTypeId.startsWith("0x0120")) return [3 /*break*/, 26];
|
|
319
|
-
_g.label = 18;
|
|
328
|
+
return [3 /*break*/, 17];
|
|
329
|
+
case 17: return [3 /*break*/, 30];
|
|
320
330
|
case 18:
|
|
321
|
-
|
|
331
|
+
if (!contentTypeId.startsWith("0x0120")) return [3 /*break*/, 28];
|
|
332
|
+
_f.label = 19;
|
|
333
|
+
case 19:
|
|
334
|
+
_f.trys.push([19, 26, , 27]);
|
|
322
335
|
idField = "ID";
|
|
323
336
|
titleField = "Title";
|
|
324
337
|
contentTypeIdField = "ContentTypeId";
|
|
325
338
|
return [4 /*yield*/, sp.web.lists.getById(listId)];
|
|
326
|
-
case
|
|
327
|
-
library =
|
|
339
|
+
case 20:
|
|
340
|
+
library = _f.sent();
|
|
328
341
|
folderTitle = objects[titleField] !== undefined && objects[titleField] !== ""
|
|
329
342
|
? objects[titleField].replace(/["|*|:|<|>|?|/|\\||]/g, "_") // Replace not allowed chars in folder name
|
|
330
343
|
: "";
|
|
331
344
|
return [4 /*yield*/, library.rootFolder.addSubFolderUsingPath(folderTitle)];
|
|
332
|
-
case 20:
|
|
333
|
-
newFolder = _g.sent();
|
|
334
|
-
return [4 /*yield*/, newFolder.listItemAllFields()];
|
|
335
345
|
case 21:
|
|
336
|
-
|
|
337
|
-
|
|
346
|
+
newFolder = _f.sent();
|
|
347
|
+
return [4 /*yield*/, newFolder.listItemAllFields()];
|
|
348
|
+
case 22:
|
|
349
|
+
fields_1 = _f.sent();
|
|
350
|
+
if (!fields_1[idField]) return [3 /*break*/, 24];
|
|
338
351
|
folderId = fields_1[idField];
|
|
339
352
|
// Set the content type ID for the target item
|
|
340
353
|
objects[contentTypeIdField] = contentTypeId;
|
|
341
354
|
return [4 /*yield*/, library.items.getById(folderId).update(objects)];
|
|
342
|
-
case
|
|
343
|
-
iur =
|
|
355
|
+
case 23:
|
|
356
|
+
iur = _f.sent();
|
|
344
357
|
if (onSubmitted) {
|
|
345
358
|
onSubmitted(iur.data, this.props.returnListItemInstanceOnSubmit !== false
|
|
346
359
|
? iur.item
|
|
347
360
|
: undefined);
|
|
348
361
|
}
|
|
349
|
-
return [3 /*break*/,
|
|
350
|
-
case
|
|
351
|
-
case
|
|
352
|
-
case
|
|
353
|
-
error_3 =
|
|
362
|
+
return [3 /*break*/, 25];
|
|
363
|
+
case 24: throw new Error("Unable to read the ID of the just created folder or Document Set");
|
|
364
|
+
case 25: return [3 /*break*/, 27];
|
|
365
|
+
case 26:
|
|
366
|
+
error_3 = _f.sent();
|
|
354
367
|
if (onSubmitError) {
|
|
355
368
|
onSubmitError(objects, error_3);
|
|
356
369
|
}
|
|
357
370
|
console.log("Error", error_3);
|
|
358
|
-
return [3 /*break*/,
|
|
359
|
-
case
|
|
371
|
+
return [3 /*break*/, 27];
|
|
372
|
+
case 27: return [3 /*break*/, 30];
|
|
373
|
+
case 28:
|
|
374
|
+
if (!(contentTypeId.startsWith("0x01") && enableFileSelection === true)) return [3 /*break*/, 30];
|
|
375
|
+
// We are adding a folder or a Document Set
|
|
376
|
+
return [4 /*yield*/, this.addFileToLibrary(objects)];
|
|
377
|
+
case 29:
|
|
378
|
+
// We are adding a folder or a Document Set
|
|
379
|
+
_f.sent();
|
|
380
|
+
_f.label = 30;
|
|
381
|
+
case 30:
|
|
360
382
|
this.setState({
|
|
361
383
|
isSaving: false,
|
|
362
384
|
etag: newETag,
|
|
363
385
|
});
|
|
364
|
-
return [3 /*break*/,
|
|
365
|
-
case
|
|
366
|
-
error_4 =
|
|
386
|
+
return [3 /*break*/, 32];
|
|
387
|
+
case 31:
|
|
388
|
+
error_4 = _f.sent();
|
|
367
389
|
if (onSubmitError) {
|
|
368
390
|
onSubmitError(null, error_4);
|
|
369
391
|
}
|
|
370
392
|
console.log("Error onSubmit", error_4);
|
|
371
|
-
return [3 /*break*/,
|
|
372
|
-
case
|
|
393
|
+
return [3 /*break*/, 32];
|
|
394
|
+
case 32: return [2 /*return*/];
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
}); };
|
|
398
|
+
_this.addFileToLibrary = function (objects) { return __awaiter(_this, void 0, void 0, function () {
|
|
399
|
+
var selectedFile, _a, listId, contentTypeId, onSubmitted, onSubmitError, returnListItemInstanceOnSubmit, idField, contentTypeIdField, library, itemTitle, fileCreatedResult, _b, _c, _d, fields, folderId, iur, error_5;
|
|
400
|
+
return __generator(this, function (_e) {
|
|
401
|
+
switch (_e.label) {
|
|
402
|
+
case 0:
|
|
403
|
+
selectedFile = this.state.selectedFile;
|
|
404
|
+
_a = this.props, listId = _a.listId, contentTypeId = _a.contentTypeId, onSubmitted = _a.onSubmitted, onSubmitError = _a.onSubmitError, returnListItemInstanceOnSubmit = _a.returnListItemInstanceOnSubmit;
|
|
405
|
+
_e.label = 1;
|
|
406
|
+
case 1:
|
|
407
|
+
_e.trys.push([1, 9, , 10]);
|
|
408
|
+
idField = "ID";
|
|
409
|
+
contentTypeIdField = "ContentTypeId";
|
|
410
|
+
return [4 /*yield*/, sp.web.lists.getById(listId)];
|
|
411
|
+
case 2:
|
|
412
|
+
library = _e.sent();
|
|
413
|
+
itemTitle = selectedFile !== undefined && selectedFile.fileName !== undefined && selectedFile.fileName !== ""
|
|
414
|
+
? selectedFile.fileName.replace(/["|*|:|<|>|?|/|\\||]/g, "_") // Replace not allowed chars in folder name
|
|
415
|
+
: "";
|
|
416
|
+
_c = (_b = library.rootFolder.files).addChunked;
|
|
417
|
+
_d = [encodeURI(itemTitle)];
|
|
418
|
+
return [4 /*yield*/, selectedFile.downloadFileContent()];
|
|
419
|
+
case 3: return [4 /*yield*/, _c.apply(_b, _d.concat([_e.sent()]))];
|
|
420
|
+
case 4:
|
|
421
|
+
fileCreatedResult = _e.sent();
|
|
422
|
+
return [4 /*yield*/, fileCreatedResult.file.listItemAllFields()];
|
|
423
|
+
case 5:
|
|
424
|
+
fields = _e.sent();
|
|
425
|
+
if (!fields[idField]) return [3 /*break*/, 7];
|
|
426
|
+
folderId = fields[idField];
|
|
427
|
+
// Set the content type ID for the target item
|
|
428
|
+
objects[contentTypeIdField] = contentTypeId;
|
|
429
|
+
return [4 /*yield*/, library.items.getById(folderId).update(objects)];
|
|
430
|
+
case 6:
|
|
431
|
+
iur = _e.sent();
|
|
432
|
+
if (onSubmitted) {
|
|
433
|
+
onSubmitted(iur.data, returnListItemInstanceOnSubmit !== false
|
|
434
|
+
? iur.item
|
|
435
|
+
: undefined);
|
|
436
|
+
}
|
|
437
|
+
return [3 /*break*/, 8];
|
|
438
|
+
case 7: throw new Error("Unable to read the ID of the just created folder or Document Set");
|
|
439
|
+
case 8: return [3 /*break*/, 10];
|
|
440
|
+
case 9:
|
|
441
|
+
error_5 = _e.sent();
|
|
442
|
+
if (onSubmitError) {
|
|
443
|
+
onSubmitError(objects, error_5);
|
|
444
|
+
}
|
|
445
|
+
console.log("Error", error_5);
|
|
446
|
+
return [3 /*break*/, 10];
|
|
447
|
+
case 10: return [2 /*return*/];
|
|
373
448
|
}
|
|
374
449
|
});
|
|
375
450
|
}); };
|
|
@@ -438,7 +513,7 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
438
513
|
}); };
|
|
439
514
|
//getting all the fields information as part of get ready process
|
|
440
515
|
_this.getFieldInformations = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
441
|
-
var _a, listId, listItemId, disabledFields, respectETag, onListItemLoaded, contentTypeId, spList, item, etag, defaultContentType, listFields, tempFields, order, responseValue, hiddenFields, defaultDayOfWeek, _loop_2, this_2, i, len, installedLanguages,
|
|
516
|
+
var _a, listId, listItemId, disabledFields, respectETag, onListItemLoaded, contentTypeId, spList, item, etag, defaultContentType, listFields, tempFields, order, responseValue, hiddenFields, defaultDayOfWeek, _loop_2, this_2, i, len, installedLanguages, error_6;
|
|
442
517
|
return __generator(this, function (_b) {
|
|
443
518
|
switch (_b.label) {
|
|
444
519
|
case 0:
|
|
@@ -568,8 +643,8 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
568
643
|
hiddenName = response.value;
|
|
569
644
|
termSetId = field.TermSetId;
|
|
570
645
|
anchorId = field.AnchorId;
|
|
571
|
-
if (item !== null) {
|
|
572
|
-
item[field.InternalName].forEach(function (element) {
|
|
646
|
+
if (item !== null && item[field.InternalName] !== null && item[field.InternalName].results !== null) {
|
|
647
|
+
item[field.InternalName].results.forEach(function (element) {
|
|
573
648
|
selectedTags_1.push({
|
|
574
649
|
key: element.TermGuid,
|
|
575
650
|
name: element.Label,
|
|
@@ -747,8 +822,8 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
747
822
|
this.setState({ fieldCollection: tempFields, installedLanguages: installedLanguages, etag: etag });
|
|
748
823
|
return [3 /*break*/, 17];
|
|
749
824
|
case 16:
|
|
750
|
-
|
|
751
|
-
console.log("Error get field informations",
|
|
825
|
+
error_6 = _b.sent();
|
|
826
|
+
console.log("Error get field informations", error_6);
|
|
752
827
|
return [2 /*return*/, null];
|
|
753
828
|
case 17: return [2 /*return*/];
|
|
754
829
|
}
|
|
@@ -789,7 +864,7 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
789
864
|
_this.getFormFields = function (listId, contentTypeId, webUrl
|
|
790
865
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
791
866
|
) { return __awaiter(_this, void 0, void 0, function () {
|
|
792
|
-
var context, webAbsoluteUrl, apiUrl, data, results,
|
|
867
|
+
var context, webAbsoluteUrl, apiUrl, data, results, error_7;
|
|
793
868
|
return __generator(this, function (_a) {
|
|
794
869
|
switch (_a.label) {
|
|
795
870
|
case 0:
|
|
@@ -821,9 +896,9 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
821
896
|
_a.label = 3;
|
|
822
897
|
case 3: return [2 /*return*/, null];
|
|
823
898
|
case 4:
|
|
824
|
-
|
|
825
|
-
console.dir(
|
|
826
|
-
return [2 /*return*/, Promise.reject(
|
|
899
|
+
error_7 = _a.sent();
|
|
900
|
+
console.dir(error_7);
|
|
901
|
+
return [2 /*return*/, Promise.reject(error_7)];
|
|
827
902
|
case 5: return [2 /*return*/];
|
|
828
903
|
}
|
|
829
904
|
});
|
|
@@ -849,6 +924,55 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
849
924
|
}
|
|
850
925
|
return errorMessage;
|
|
851
926
|
};
|
|
927
|
+
_this.renderFileSelectionControl = function () {
|
|
928
|
+
var _a = _this.state, selectedFile = _a.selectedFile, missingSelectedFile = _a.missingSelectedFile;
|
|
929
|
+
var labelEl = React.createElement("label", { className: styles.fieldRequired + ' ' + styles.fieldLabel }, strings.DynamicFormChooseFileLabel);
|
|
930
|
+
return React.createElement("div", null,
|
|
931
|
+
React.createElement("div", { className: styles.titleContainer },
|
|
932
|
+
React.createElement(Icon, { className: styles.fieldIcon, iconName: "DocumentSearch" }),
|
|
933
|
+
labelEl),
|
|
934
|
+
React.createElement(FilePicker, { buttonLabel: strings.DynamicFormChooseFileButtonText, accepts: _this.props.supportedFileExtensions ? _this.props.supportedFileExtensions : [".docx", ".doc", ".pptx", ".ppt", ".xlsx", ".xls", ".pdf"], onSave: function (filePickerResult) {
|
|
935
|
+
if (filePickerResult.length === 1) {
|
|
936
|
+
_this.setState({
|
|
937
|
+
selectedFile: filePickerResult[0],
|
|
938
|
+
missingSelectedFile: false
|
|
939
|
+
});
|
|
940
|
+
}
|
|
941
|
+
else {
|
|
942
|
+
_this.setState({
|
|
943
|
+
missingSelectedFile: true
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
}, required: true, context: _this.props.context, hideWebSearchTab: true, hideStockImages: true, hideLocalMultipleUploadTab: true, hideLinkUploadTab: true, hideSiteFilesTab: true, checkIfFileExists: true }),
|
|
947
|
+
selectedFile && React.createElement("div", { className: styles.selectedFileContainer },
|
|
948
|
+
React.createElement(Icon, { iconName: _this.getFileIconFromExtension() }),
|
|
949
|
+
selectedFile.fileName),
|
|
950
|
+
missingSelectedFile === true &&
|
|
951
|
+
React.createElement("div", { className: styles.errormessage }, strings.DynamicFormRequiredFileMessage));
|
|
952
|
+
};
|
|
953
|
+
_this.getFileIconFromExtension = function () {
|
|
954
|
+
var fileExtension = _this.state.selectedFile.fileName.split('.').pop();
|
|
955
|
+
switch (fileExtension) {
|
|
956
|
+
case 'pdf':
|
|
957
|
+
return 'PDF';
|
|
958
|
+
case 'docx':
|
|
959
|
+
case 'doc':
|
|
960
|
+
return 'WordDocument';
|
|
961
|
+
case 'pptx':
|
|
962
|
+
case 'ppt':
|
|
963
|
+
return 'PowerPointDocument';
|
|
964
|
+
case 'xlsx':
|
|
965
|
+
case 'xls':
|
|
966
|
+
return 'ExcelDocument';
|
|
967
|
+
case 'jpg':
|
|
968
|
+
case 'jpeg':
|
|
969
|
+
case 'png':
|
|
970
|
+
case 'gif':
|
|
971
|
+
return 'FileImage';
|
|
972
|
+
default:
|
|
973
|
+
return 'Document';
|
|
974
|
+
}
|
|
975
|
+
};
|
|
852
976
|
// Initialize pnp sp
|
|
853
977
|
if (_this.props.webAbsoluteUrl) {
|
|
854
978
|
sp.setup({
|
|
@@ -898,6 +1022,11 @@ var DynamicForm = /** @class */ (function (_super) {
|
|
|
898
1022
|
return (React.createElement("div", null,
|
|
899
1023
|
fieldCollection.length === 0 ? (React.createElement("div", null,
|
|
900
1024
|
React.createElement(ProgressIndicator, { label: strings.DynamicFormLoading, description: strings.DynamicFormPleaseWait }))) : (React.createElement("div", null,
|
|
1025
|
+
this.props.enableFileSelection === true &&
|
|
1026
|
+
this.props.listItemId === undefined &&
|
|
1027
|
+
this.props.contentTypeId !== undefined &&
|
|
1028
|
+
this.props.contentTypeId.startsWith("0x0101") &&
|
|
1029
|
+
this.renderFileSelectionControl(),
|
|
901
1030
|
fieldCollection.map(function (v, i) {
|
|
902
1031
|
if (fieldOverrides &&
|
|
903
1032
|
Object.prototype.hasOwnProperty.call(fieldOverrides, v.columnInternalName)) {
|