@pnp/spfx-controls-react 3.25.0-beta.2845356 → 3.25.0-beta.3152906
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/jest-output/JUnit.xml +103 -83
- package/lib/SPFilePicker.d.ts +2 -0
- package/lib/SPFilePicker.d.ts.map +1 -0
- package/lib/SPFilePicker.js +2 -0
- package/lib/SPFilePicker.js.map +1 -0
- package/lib/common/telemetry/version.js +1 -1
- package/lib/controls/SPFilePicker/ISPFilePicker.types.d.ts +152 -0
- package/lib/controls/SPFilePicker/ISPFilePicker.types.d.ts.map +1 -0
- package/lib/controls/SPFilePicker/ISPFilePicker.types.js +11 -0
- package/lib/controls/SPFilePicker/ISPFilePicker.types.js.map +1 -0
- package/lib/controls/SPFilePicker/ISPFilePickerProps.d.ts +80 -0
- package/lib/controls/SPFilePicker/ISPFilePickerProps.d.ts.map +1 -0
- package/lib/controls/SPFilePicker/ISPFilePickerProps.js +2 -0
- package/lib/controls/SPFilePicker/ISPFilePickerProps.js.map +1 -0
- package/lib/controls/SPFilePicker/SPFilePicker.d.ts +22 -0
- package/lib/controls/SPFilePicker/SPFilePicker.d.ts.map +1 -0
- package/lib/controls/SPFilePicker/SPFilePicker.js +83 -0
- package/lib/controls/SPFilePicker/SPFilePicker.js.map +1 -0
- package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.d.ts +20 -0
- package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.d.ts.map +1 -0
- package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.js +27 -0
- package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.js.map +1 -0
- package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.test.d.ts +2 -0
- package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.test.d.ts.map +1 -0
- package/lib/controls/SPFilePicker/hooks/useLogging.d.ts +28 -0
- package/lib/controls/SPFilePicker/hooks/useLogging.d.ts.map +1 -0
- package/lib/controls/SPFilePicker/hooks/useLogging.js +28 -0
- package/lib/controls/SPFilePicker/hooks/useLogging.js.map +1 -0
- package/lib/controls/SPFilePicker/hooks/useSPFilePicker.d.ts +68 -0
- package/lib/controls/SPFilePicker/hooks/useSPFilePicker.d.ts.map +1 -0
- package/lib/controls/SPFilePicker/hooks/useSPFilePicker.js +356 -0
- package/lib/controls/SPFilePicker/hooks/useSPFilePicker.js.map +1 -0
- package/lib/controls/SPFilePicker/index.d.ts +5 -0
- package/lib/controls/SPFilePicker/index.d.ts.map +1 -0
- package/lib/controls/SPFilePicker/index.js +5 -0
- package/lib/controls/SPFilePicker/index.js.map +1 -0
- package/lib/controls/SPFilePicker/useSPFilePickerStyles.d.ts +8 -0
- package/lib/controls/SPFilePicker/useSPFilePickerStyles.d.ts.map +1 -0
- package/lib/controls/SPFilePicker/useSPFilePickerStyles.js +33 -0
- package/lib/controls/SPFilePicker/useSPFilePickerStyles.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/loc/en-us.js +5 -0
- package/lib/loc/en-us.js.map +1 -1
- package/lib-commonjs/SPFilePicker.js +5 -0
- package/lib-commonjs/SPFilePicker.js.map +1 -0
- package/lib-commonjs/common/telemetry/version.js +1 -1
- package/lib-commonjs/controls/SPFilePicker/ISPFilePicker.types.js +12 -0
- package/lib-commonjs/controls/SPFilePicker/ISPFilePicker.types.js.map +1 -0
- package/lib-commonjs/controls/SPFilePicker/ISPFilePickerProps.js +3 -0
- package/lib-commonjs/controls/SPFilePicker/ISPFilePickerProps.js.map +1 -0
- package/lib-commonjs/controls/SPFilePicker/SPFilePicker.js +88 -0
- package/lib-commonjs/controls/SPFilePicker/SPFilePicker.js.map +1 -0
- package/lib-commonjs/controls/SPFilePicker/hooks/SPFilePicker.helpers.js +32 -0
- package/lib-commonjs/controls/SPFilePicker/hooks/SPFilePicker.helpers.js.map +1 -0
- package/lib-commonjs/controls/SPFilePicker/hooks/useLogging.js +31 -0
- package/lib-commonjs/controls/SPFilePicker/hooks/useLogging.js.map +1 -0
- package/lib-commonjs/controls/SPFilePicker/hooks/useSPFilePicker.js +359 -0
- package/lib-commonjs/controls/SPFilePicker/hooks/useSPFilePicker.js.map +1 -0
- package/lib-commonjs/controls/SPFilePicker/index.js +8 -0
- package/lib-commonjs/controls/SPFilePicker/index.js.map +1 -0
- package/lib-commonjs/controls/SPFilePicker/useSPFilePickerStyles.js +37 -0
- package/lib-commonjs/controls/SPFilePicker/useSPFilePickerStyles.js.map +1 -0
- package/lib-commonjs/index.js +1 -0
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/loc/en-us.js +5 -0
- package/lib-commonjs/loc/en-us.js.map +1 -1
- package/lib-commonjs/webparts/controlsTest/ControlsTestWebPart.manifest.json +1 -0
- package/lib-commonjs/webparts/controlsTest/components/ControlsTest.js +4 -0
- package/lib-commonjs/webparts/controlsTest/components/ControlsTest.js.map +1 -1
- package/lib-commonjs/webparts/controlsTest/components/TestSPFilePickerControl.js +29 -0
- package/lib-commonjs/webparts/controlsTest/components/TestSPFilePickerControl.js.map +1 -0
- package/lib-commonjs/webparts/controlsTest/propertyPane/controls/ControlToggles.js +1 -0
- package/lib-commonjs/webparts/controlsTest/propertyPane/controls/ControlToggles.js.map +1 -1
- package/package.json +1 -1
- package/release/analysis-logs/lint.sarif +639 -584
- package/release/manifests/45165954-80f9-44c1-9967-cd38ae92a33b.manifest.json +4 -3
- package/release/manifests/57ebd944-98ed-43f9-b722-e959d6dac6ad.manifest.json +3 -3
- package/release/manifests/f9c6b930-8d5d-4550-bfd9-ed5f6ca443a8.manifest.json +3 -3
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SPFilePicker = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var React = tslib_1.__importStar(require("react"));
|
|
6
|
+
var react_components_1 = require("@fluentui/react-components");
|
|
7
|
+
var useSPFilePicker_1 = require("./hooks/useSPFilePicker");
|
|
8
|
+
var useSPFilePickerStyles_1 = require("./useSPFilePickerStyles");
|
|
9
|
+
var strings = tslib_1.__importStar(require("ControlStrings"));
|
|
10
|
+
var DEFAULT_WIDTH = 1080;
|
|
11
|
+
var DEFAULT_HEIGHT = 680;
|
|
12
|
+
/**
|
|
13
|
+
* Ready-to-use SharePoint / OneDrive File Picker (SDK v8) control.
|
|
14
|
+
*
|
|
15
|
+
* Renders a trigger button that opens the Microsoft-hosted file picker inside a
|
|
16
|
+
* modal dialog (iframe) or a popup window, and returns the selected items via
|
|
17
|
+
* `onPicked`. Tokens are resolved through the SPFx `context`
|
|
18
|
+
* (`aadTokenProviderFactory`) or a custom `getToken`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```tsx
|
|
22
|
+
* <SPFilePicker
|
|
23
|
+
* context={this.context}
|
|
24
|
+
* selectionMode="multiple"
|
|
25
|
+
* fileTypes={['docx', 'pdf']}
|
|
26
|
+
* onPicked={(items) => setFiles(items)}
|
|
27
|
+
* />
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
var SPFilePicker = function (props) {
|
|
31
|
+
var _a;
|
|
32
|
+
var context = props.context, baseUrl = props.baseUrl, entry = props.entry, _b = props.selectionMode, selectionMode = _b === void 0 ? 'single' : _b, _c = props.itemsMode, itemsMode = _c === void 0 ? 'files' : _c, fileTypes = props.fileTypes, locale = props.locale, authMode = props.authMode, app = props.app, scenario = props.scenario, _d = props.target, target = _d === void 0 ? 'iframe' : _d, getToken = props.getToken, onPicked = props.onPicked, onCancel = props.onCancel, onError = props.onError, trigger = props.trigger, _e = props.buttonText, buttonText = _e === void 0 ? strings.SPFilePickerButtonText : _e, _f = props.dialogTitle, dialogTitle = _f === void 0 ? strings.SPFilePickerDialogTitle : _f, _g = props.disabled, disabled = _g === void 0 ? false : _g, _h = props.dialogWidth, dialogWidth = _h === void 0 ? DEFAULT_WIDTH : _h, _j = props.dialogHeight, dialogHeight = _j === void 0 ? DEFAULT_HEIGHT : _j, className = props.className;
|
|
33
|
+
var resolvedBaseUrl = (_a = baseUrl !== null && baseUrl !== void 0 ? baseUrl : context.pageContext.web.absoluteUrl) !== null && _a !== void 0 ? _a : '';
|
|
34
|
+
var styles = (0, useSPFilePickerStyles_1.useSPFilePickerStyles)(dialogHeight);
|
|
35
|
+
var _k = (0, useSPFilePicker_1.useSPFilePicker)({
|
|
36
|
+
context: context,
|
|
37
|
+
baseUrl: resolvedBaseUrl,
|
|
38
|
+
entry: entry,
|
|
39
|
+
selectionMode: selectionMode,
|
|
40
|
+
itemsMode: itemsMode,
|
|
41
|
+
fileTypes: fileTypes,
|
|
42
|
+
locale: locale,
|
|
43
|
+
authMode: authMode,
|
|
44
|
+
app: app,
|
|
45
|
+
scenario: scenario,
|
|
46
|
+
target: target,
|
|
47
|
+
getToken: getToken,
|
|
48
|
+
onPicked: onPicked,
|
|
49
|
+
onCancel: onCancel,
|
|
50
|
+
onError: onError,
|
|
51
|
+
}), isOpen = _k.isOpen, isLoading = _k.isLoading, iframeRef = _k.iframeRef, open = _k.open, close = _k.close, markLoaded = _k.markLoaded;
|
|
52
|
+
var renderTrigger = function () {
|
|
53
|
+
if (trigger) {
|
|
54
|
+
var triggerOnClick_1 = trigger.props.onClick;
|
|
55
|
+
return React.cloneElement(trigger, {
|
|
56
|
+
'aria-disabled': disabled || undefined,
|
|
57
|
+
className: (0, react_components_1.mergeClasses)(trigger.props.className, className),
|
|
58
|
+
onClick: function (event) {
|
|
59
|
+
if (disabled) {
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
triggerOnClick_1 === null || triggerOnClick_1 === void 0 ? void 0 : triggerOnClick_1(event);
|
|
64
|
+
if (!event.defaultPrevented) {
|
|
65
|
+
open();
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return (React.createElement(react_components_1.Button, { className: className, appearance: "primary", disabled: disabled || !resolvedBaseUrl, onClick: open }, buttonText));
|
|
71
|
+
};
|
|
72
|
+
return (React.createElement(React.Fragment, null,
|
|
73
|
+
renderTrigger(),
|
|
74
|
+
target === 'iframe' && (React.createElement(react_components_1.Dialog, { open: isOpen, modalType: "modal", onOpenChange: function (_event, data) {
|
|
75
|
+
if (!data.open) {
|
|
76
|
+
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
77
|
+
close();
|
|
78
|
+
}
|
|
79
|
+
} },
|
|
80
|
+
React.createElement(react_components_1.DialogSurface, { className: styles.dialogSurface, style: { maxWidth: dialogWidth, width: dialogWidth } },
|
|
81
|
+
React.createElement("div", { className: styles.iframeWrapper },
|
|
82
|
+
isLoading && (React.createElement("div", { className: styles.spinnerOverlay },
|
|
83
|
+
React.createElement(react_components_1.Spinner, { size: "large" }))),
|
|
84
|
+
React.createElement("iframe", { ref: iframeRef, className: styles.iframe, title: dialogTitle, onLoad: markLoaded })))))));
|
|
85
|
+
};
|
|
86
|
+
exports.SPFilePicker = SPFilePicker;
|
|
87
|
+
exports.SPFilePicker.displayName = 'SPFilePicker';
|
|
88
|
+
//# sourceMappingURL=SPFilePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SPFilePicker.js","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/SPFilePicker.tsx"],"names":[],"mappings":";;;;AAAA,mDAA+B;AAC/B,+DAMoC;AACpC,2DAA0D;AAC1D,iEAAgE;AAEhE,8DAA0C;AAE1C,IAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,IAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;;;;;;;;;;;;;;;GAiBG;AACI,IAAM,YAAY,GAAgD,UAAC,KAAK;;IAE3E,IAAA,OAAO,GAsBL,KAAK,QAtBA,EACP,OAAO,GAqBL,KAAK,QArBA,EACP,KAAK,GAoBH,KAAK,MApBF,EACL,KAmBE,KAAK,cAnBiB,EAAxB,aAAa,mBAAG,QAAQ,KAAA,EACxB,KAkBE,KAAK,UAlBY,EAAnB,SAAS,mBAAG,OAAO,KAAA,EACnB,SAAS,GAiBP,KAAK,UAjBE,EACT,MAAM,GAgBJ,KAAK,OAhBD,EACN,QAAQ,GAeN,KAAK,SAfC,EACR,GAAG,GAcD,KAAK,IAdJ,EACH,QAAQ,GAaN,KAAK,SAbC,EACR,KAYE,KAAK,OAZU,EAAjB,MAAM,mBAAG,QAAQ,KAAA,EACjB,QAAQ,GAWN,KAAK,SAXC,EACR,QAAQ,GAUN,KAAK,SAVC,EACR,QAAQ,GASN,KAAK,SATC,EACR,OAAO,GAQL,KAAK,QARA,EACP,OAAO,GAOL,KAAK,QAPA,EACP,KAME,KAAK,WANoC,EAA3C,UAAU,mBAAG,OAAO,CAAC,sBAAsB,KAAA,EAC3C,KAKE,KAAK,YALsC,EAA7C,WAAW,mBAAG,OAAO,CAAC,uBAAuB,KAAA,EAC7C,KAIE,KAAK,SAJS,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,KAGE,KAAK,YAHoB,EAA3B,WAAW,mBAAG,aAAa,KAAA,EAC3B,KAEE,KAAK,aAFsB,EAA7B,YAAY,mBAAG,cAAc,KAAA,EAC7B,SAAS,GACP,KAAK,UADE,CACD;IAEV,IAAM,eAAe,GAAG,MAAA,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,mCAAI,EAAE,CAAC;IAC7E,IAAM,MAAM,GAAG,IAAA,6CAAqB,EAAC,YAAY,CAAC,CAAC;IAE7C,IAAA,KAA4D,IAAA,iCAAe,EAAC;QAChF,OAAO,SAAA;QACP,OAAO,EAAE,eAAe;QACxB,KAAK,OAAA;QACL,aAAa,eAAA;QACb,SAAS,WAAA;QACT,SAAS,WAAA;QACT,MAAM,QAAA;QACN,QAAQ,UAAA;QACR,GAAG,KAAA;QACH,QAAQ,UAAA;QACR,MAAM,QAAA;QACN,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,QAAQ,UAAA;QACR,OAAO,SAAA;KACR,CAAC,EAhBM,MAAM,YAAA,EAAE,SAAS,eAAA,EAAE,SAAS,eAAA,EAAE,IAAI,UAAA,EAAE,KAAK,WAAA,EAAE,UAAU,gBAgB3D,CAAC;IAEH,IAAM,aAAa,GAAG;QACpB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAM,gBAAc,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAE7C,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE;gBACjC,eAAe,EAAE,QAAQ,IAAI,SAAS;gBACtC,SAAS,EAAE,IAAA,+BAAY,EAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;gBAC3D,OAAO,EAAE,UAAC,KAAoC;oBAC5C,IAAI,QAAQ,EAAE,CAAC;wBACb,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,OAAO;oBACT,CAAC;oBAED,gBAAc,aAAd,gBAAc,uBAAd,gBAAc,CAAG,KAAK,CAAC,CAAC;oBACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;wBAC5B,IAAI,EAAE,CAAC;oBACT,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CACL,oBAAC,yBAAM,IACL,SAAS,EAAE,SAAS,EACpB,UAAU,EAAC,SAAS,EACpB,QAAQ,EAAE,QAAQ,IAAI,CAAC,eAAe,EACtC,OAAO,EAAE,IAAI,IAEZ,UAAU,CACJ,CACV,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL;QACG,aAAa,EAAE;QAEf,MAAM,KAAK,QAAQ,IAAI,CACtB,oBAAC,yBAAM,IACL,IAAI,EAAE,MAAM,EACZ,SAAS,EAAC,OAAO,EACjB,YAAY,EAAE,UAAC,MAAM,EAAE,IAAI;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACf,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;oBACb,KAAK,EAAE,CAAC;gBACV,CAAC;YACH,CAAC;YAED,oBAAC,gCAAa,IACZ,SAAS,EAAE,MAAM,CAAC,aAAa,EAC/B,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;gBAEpD,6BAAK,SAAS,EAAE,MAAM,CAAC,aAAa;oBACjC,SAAS,IAAI,CACZ,6BAAK,SAAS,EAAE,MAAM,CAAC,cAAc;wBACnC,oBAAC,0BAAO,IAAC,IAAI,EAAC,OAAO,GAAG,CACpB,CACP;oBACD,gCACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,CAAC,MAAM,EACxB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,UAAU,GAClB,CACE,CACQ,CACT,CACV,CACA,CACJ,CAAC;AACJ,CAAC,CAAC;AApHW,QAAA,YAAY,gBAoHvB;AAEF,oBAAY,CAAC,WAAW,GAAG,cAAc,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildSPFilePickerConfiguration = buildSPFilePickerConfiguration;
|
|
4
|
+
exports.isExpectedPickerInitializeEvent = isExpectedPickerInitializeEvent;
|
|
5
|
+
exports.requireAccessToken = requireAccessToken;
|
|
6
|
+
var tslib_1 = require("tslib");
|
|
7
|
+
var SDK_VERSION = '8.0';
|
|
8
|
+
function isInitializeMessageData(value) {
|
|
9
|
+
return typeof value === 'object' && value !== null;
|
|
10
|
+
}
|
|
11
|
+
function buildSPFilePickerConfiguration(options) {
|
|
12
|
+
var channelId = options.channelId, parentOrigin = options.parentOrigin, entry = options.entry, selectionMode = options.selectionMode, itemsMode = options.itemsMode, fileTypes = options.fileTypes, authMode = options.authMode, raw = options.raw;
|
|
13
|
+
var useCookies = authMode === 'cookie';
|
|
14
|
+
var configuration = tslib_1.__assign(tslib_1.__assign({ sdk: SDK_VERSION, entry: entry !== null && entry !== void 0 ? entry : { sharePoint: {} } }, (useCookies ? {} : { authentication: {} })), { messaging: tslib_1.__assign({ origin: parentOrigin, channelId: channelId }, (useCookies ? { identifyParent: true } : {})), selection: { mode: selectionMode }, typesAndSources: tslib_1.__assign({ mode: itemsMode }, (fileTypes && fileTypes.length > 0 ? { filters: fileTypes } : {})) });
|
|
15
|
+
return Object.assign(configuration, raw !== null && raw !== void 0 ? raw : {});
|
|
16
|
+
}
|
|
17
|
+
function isExpectedPickerInitializeEvent(event, pickerWindow, channelId, expectedOrigin) {
|
|
18
|
+
if (!isInitializeMessageData(event.data)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return (event.origin === expectedOrigin &&
|
|
22
|
+
event.source === pickerWindow &&
|
|
23
|
+
event.data.type === 'initialize' &&
|
|
24
|
+
event.data.channelId === channelId);
|
|
25
|
+
}
|
|
26
|
+
function requireAccessToken(accessToken, errorMessage) {
|
|
27
|
+
if (!accessToken) {
|
|
28
|
+
throw new Error(errorMessage);
|
|
29
|
+
}
|
|
30
|
+
return accessToken;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=SPFilePicker.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SPFilePicker.helpers.js","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/SPFilePicker.helpers.ts"],"names":[],"mappings":";;AAiCA,wEA+BC;AAED,0EAgBC;AAED,gDAMC;;AAlFD,IAAM,WAAW,GAAG,KAAK,CAAC;AAmB1B,SAAS,uBAAuB,CAC9B,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAgB,8BAA8B,CAC5C,OAA+C;IAG7C,IAAA,SAAS,GAQP,OAAO,UARA,EACT,YAAY,GAOV,OAAO,aAPG,EACZ,KAAK,GAMH,OAAO,MANJ,EACL,aAAa,GAKX,OAAO,cALI,EACb,SAAS,GAIP,OAAO,UAJA,EACT,SAAS,GAGP,OAAO,UAHA,EACT,QAAQ,GAEN,OAAO,SAFD,EACR,GAAG,GACD,OAAO,IADN,CACO;IACZ,IAAM,UAAU,GAAG,QAAQ,KAAK,QAAQ,CAAC;IACzC,IAAM,aAAa,uCACjB,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAC/B,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,KAC7C,SAAS,qBACP,MAAM,EAAE,YAAY,EACpB,SAAS,WAAA,IACN,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAEjD,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAClC,eAAe,qBACb,IAAI,EAAE,SAAS,IACZ,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAEvE,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,+BAA+B,CAC7C,KAAmC,EACnC,YAAoB,EACpB,SAAiB,EACjB,cAAsB;IAEtB,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,cAAc;QAC/B,KAAK,CAAC,MAAM,KAAK,YAAY;QAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY;QAChC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CACnC,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,WAAmB,EAAE,YAAoB;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useLogging = useLogging;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
var sp_core_library_1 = require("@microsoft/sp-core-library");
|
|
6
|
+
var DEFAULT_SOURCE = 'SPFilePicker';
|
|
7
|
+
/**
|
|
8
|
+
* Thin logging hook built on the SPFx {@link Log} API. It provides a stable,
|
|
9
|
+
* memoized logger scoped to a source name, with no external dependencies.
|
|
10
|
+
*
|
|
11
|
+
* @param source - Log source shown in the SPFx diagnostics. Defaults to `SPFilePicker`.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const { info, error } = useLogging();
|
|
16
|
+
* info('picker launched');
|
|
17
|
+
* error(new Error('token failed'));
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
function useLogging(source) {
|
|
21
|
+
if (source === void 0) { source = DEFAULT_SOURCE; }
|
|
22
|
+
return (0, react_1.useMemo)(function () { return ({
|
|
23
|
+
info: function (message) { return sp_core_library_1.Log.info(source, message); },
|
|
24
|
+
warn: function (message) { return sp_core_library_1.Log.warn(source, message); },
|
|
25
|
+
error: function (message) {
|
|
26
|
+
return sp_core_library_1.Log.error(source, message instanceof Error ? message : new Error(message));
|
|
27
|
+
},
|
|
28
|
+
verbose: function (message) { return sp_core_library_1.Log.verbose(source, message); },
|
|
29
|
+
}); }, [source]);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=useLogging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLogging.js","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/useLogging.ts"],"names":[],"mappings":";;AAmCA,gCAWC;AA9CD,+BAAgC;AAChC,8DAAiD;AAEjD,IAAM,cAAc,GAAG,cAAc,CAAC;AAmBtC;;;;;;;;;;;;GAYG;AACH,SAAgB,UAAU,CAAC,MAA+B;IAA/B,uBAAA,EAAA,uBAA+B;IACxD,OAAO,IAAA,eAAO,EACZ,cAAM,OAAA,CAAC;QACL,IAAI,EAAE,UAAC,OAAe,IAAK,OAAA,qBAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAzB,CAAyB;QACpD,IAAI,EAAE,UAAC,OAAe,IAAK,OAAA,qBAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAzB,CAAyB;QACpD,KAAK,EAAE,UAAC,OAAuB;YAC7B,OAAA,qBAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAA1E,CAA0E;QAC5E,OAAO,EAAE,UAAC,OAAe,IAAK,OAAA,qBAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAA5B,CAA4B;KAC3D,CAAC,EANI,CAMJ,EACF,CAAC,MAAM,CAAC,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSPFilePicker = useSPFilePicker;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = require("react");
|
|
6
|
+
var useLogging_1 = require("./useLogging");
|
|
7
|
+
var SPFilePicker_helpers_1 = require("./SPFilePicker.helpers");
|
|
8
|
+
var strings = tslib_1.__importStar(require("ControlStrings"));
|
|
9
|
+
/** Small RFC-4122-ish unique id used for the picker channel. */
|
|
10
|
+
function createChannelId() {
|
|
11
|
+
var cryptoObj = typeof globalThis !== 'undefined' ? globalThis.crypto : undefined;
|
|
12
|
+
if (cryptoObj === null || cryptoObj === void 0 ? void 0 : cryptoObj.randomUUID) {
|
|
13
|
+
return cryptoObj.randomUUID();
|
|
14
|
+
}
|
|
15
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
16
|
+
var r = (Math.random() * 16) | 0;
|
|
17
|
+
var v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
18
|
+
return v.toString(16);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/** Removes any trailing slash so the resource can be combined with `.default`. */
|
|
22
|
+
function trimTrailingSlash(value) {
|
|
23
|
+
return value.replace(/\/+$/, '');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Reusable engine hook that drives the SharePoint / OneDrive File Picker (v8).
|
|
27
|
+
*
|
|
28
|
+
* It encapsulates the full workflow — building the configuration, POSTing the
|
|
29
|
+
* form into the iframe (or popup), establishing the `MessageChannel`, and
|
|
30
|
+
* responding to the `authenticate`, `pick` and `close` commands — so any
|
|
31
|
+
* control can offer a SharePoint file picker with just a few lines.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* const { isOpen, open, close, iframeRef } = useSPFilePicker({
|
|
36
|
+
* baseUrl: context.pageContext.web.absoluteUrl,
|
|
37
|
+
* selectionMode: 'multiple',
|
|
38
|
+
* fileTypes: ['docx', 'pdf'],
|
|
39
|
+
* onPicked: (items) => console.info(items),
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
function useSPFilePicker(options) {
|
|
44
|
+
var _this = this;
|
|
45
|
+
var context = options.context, baseUrl = options.baseUrl, entry = options.entry, _a = options.selectionMode, selectionMode = _a === void 0 ? 'single' : _a, _b = options.itemsMode, itemsMode = _b === void 0 ? 'files' : _b, fileTypes = options.fileTypes, _c = options.locale, locale = _c === void 0 ? 'en-us' : _c, _d = options.authMode, authMode = _d === void 0 ? 'token' : _d, app = options.app, scenario = options.scenario, raw = options.raw, _e = options.target, target = _e === void 0 ? 'iframe' : _e, getToken = options.getToken, onPicked = options.onPicked, onCancel = options.onCancel, onError = options.onError;
|
|
46
|
+
var _f = (0, react_1.useState)(false), isOpen = _f[0], setIsOpen = _f[1];
|
|
47
|
+
var _g = (0, react_1.useState)(false), isLoading = _g[0], setIsLoading = _g[1];
|
|
48
|
+
var _h = (0, react_1.useState)(undefined), error = _h[0], setError = _h[1];
|
|
49
|
+
var _j = (0, useLogging_1.useLogging)(), logError = _j.error, info = _j.info;
|
|
50
|
+
var iframeRef = (0, react_1.useRef)(null);
|
|
51
|
+
// Mutable refs so the message listeners always see the latest values.
|
|
52
|
+
var portRef = (0, react_1.useRef)(undefined);
|
|
53
|
+
var popupRef = (0, react_1.useRef)(null);
|
|
54
|
+
var channelIdRef = (0, react_1.useRef)('');
|
|
55
|
+
var windowListenerRef = (0, react_1.useRef)(undefined);
|
|
56
|
+
// Keep the callbacks in refs so the messaging handlers are stable.
|
|
57
|
+
var callbacksRef = (0, react_1.useRef)({ onPicked: onPicked, onCancel: onCancel, onError: onError, getToken: getToken });
|
|
58
|
+
callbacksRef.current = { onPicked: onPicked, onCancel: onCancel, onError: onError, getToken: getToken };
|
|
59
|
+
var raiseError = (0, react_1.useCallback)(function (code, message) {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
var err = { code: code, message: message };
|
|
62
|
+
setError(err);
|
|
63
|
+
logError("".concat(code, ": ").concat(message));
|
|
64
|
+
(_b = (_a = callbacksRef.current).onError) === null || _b === void 0 ? void 0 : _b.call(_a, err);
|
|
65
|
+
}, [logError]);
|
|
66
|
+
/** Resolves a SharePoint token for the requested resource. */
|
|
67
|
+
var resolveToken = (0, react_1.useCallback)(function (resource) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
68
|
+
var custom, origin, tokenProvider;
|
|
69
|
+
return tslib_1.__generator(this, function (_a) {
|
|
70
|
+
switch (_a.label) {
|
|
71
|
+
case 0:
|
|
72
|
+
custom = callbacksRef.current.getToken;
|
|
73
|
+
if (custom) {
|
|
74
|
+
return [2 /*return*/, custom(resource)];
|
|
75
|
+
}
|
|
76
|
+
origin = trimTrailingSlash(resource);
|
|
77
|
+
try {
|
|
78
|
+
origin = new URL(resource).origin;
|
|
79
|
+
}
|
|
80
|
+
catch (_b) {
|
|
81
|
+
/* keep the trimmed value */
|
|
82
|
+
}
|
|
83
|
+
return [4 /*yield*/, context.aadTokenProviderFactory.getTokenProvider()];
|
|
84
|
+
case 1:
|
|
85
|
+
tokenProvider = _a.sent();
|
|
86
|
+
return [2 /*return*/, tokenProvider.getToken(origin)];
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}); }, [context]);
|
|
90
|
+
/** Builds the v8 picker configuration object. */
|
|
91
|
+
var buildConfiguration = (0, react_1.useCallback)(function (channelId) {
|
|
92
|
+
return (0, SPFilePicker_helpers_1.buildSPFilePickerConfiguration)({
|
|
93
|
+
channelId: channelId,
|
|
94
|
+
parentOrigin: window.location.origin,
|
|
95
|
+
entry: entry,
|
|
96
|
+
selectionMode: selectionMode,
|
|
97
|
+
itemsMode: itemsMode,
|
|
98
|
+
fileTypes: fileTypes,
|
|
99
|
+
authMode: authMode,
|
|
100
|
+
raw: raw,
|
|
101
|
+
});
|
|
102
|
+
}, [entry, selectionMode, itemsMode, fileTypes, raw, authMode]);
|
|
103
|
+
/** Tears down the message channel, listeners, and popup. */
|
|
104
|
+
var teardown = (0, react_1.useCallback)(function () {
|
|
105
|
+
if (windowListenerRef.current) {
|
|
106
|
+
window.removeEventListener('message', windowListenerRef.current);
|
|
107
|
+
windowListenerRef.current = undefined;
|
|
108
|
+
}
|
|
109
|
+
if (portRef.current) {
|
|
110
|
+
try {
|
|
111
|
+
portRef.current.close();
|
|
112
|
+
}
|
|
113
|
+
catch (_a) {
|
|
114
|
+
/* no-op */
|
|
115
|
+
}
|
|
116
|
+
portRef.current = undefined;
|
|
117
|
+
}
|
|
118
|
+
if (popupRef.current && !popupRef.current.closed) {
|
|
119
|
+
popupRef.current.close();
|
|
120
|
+
}
|
|
121
|
+
popupRef.current = null;
|
|
122
|
+
channelIdRef.current = '';
|
|
123
|
+
}, []);
|
|
124
|
+
var close = (0, react_1.useCallback)(function () {
|
|
125
|
+
teardown();
|
|
126
|
+
setIsOpen(false);
|
|
127
|
+
setIsLoading(false);
|
|
128
|
+
}, [teardown]);
|
|
129
|
+
/** Handles a single message received on the picker's message port. */
|
|
130
|
+
var handlePortMessage = (0, react_1.useCallback)(function (message) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
131
|
+
var port, payload, command, _a, token, _b, e_1, messageText, items, messageText;
|
|
132
|
+
var _c, _d, _e, _f, _g, _h, _j;
|
|
133
|
+
return tslib_1.__generator(this, function (_k) {
|
|
134
|
+
switch (_k.label) {
|
|
135
|
+
case 0:
|
|
136
|
+
port = portRef.current;
|
|
137
|
+
if (!port)
|
|
138
|
+
return [2 /*return*/];
|
|
139
|
+
payload = message.data;
|
|
140
|
+
if ((payload === null || payload === void 0 ? void 0 : payload.type) === 'notification') {
|
|
141
|
+
if (((_c = payload.data) === null || _c === void 0 ? void 0 : _c.notification) === 'page-loaded') {
|
|
142
|
+
setIsLoading(false);
|
|
143
|
+
}
|
|
144
|
+
return [2 /*return*/];
|
|
145
|
+
}
|
|
146
|
+
if ((payload === null || payload === void 0 ? void 0 : payload.type) !== 'command')
|
|
147
|
+
return [2 /*return*/];
|
|
148
|
+
// All commands must be acknowledged.
|
|
149
|
+
port.postMessage({ type: 'acknowledge', id: payload.id });
|
|
150
|
+
command = payload.data;
|
|
151
|
+
_a = command === null || command === void 0 ? void 0 : command.command;
|
|
152
|
+
switch (_a) {
|
|
153
|
+
case 'authenticate': return [3 /*break*/, 1];
|
|
154
|
+
case 'pick': return [3 /*break*/, 5];
|
|
155
|
+
case 'close': return [3 /*break*/, 6];
|
|
156
|
+
}
|
|
157
|
+
return [3 /*break*/, 7];
|
|
158
|
+
case 1:
|
|
159
|
+
_k.trys.push([1, 3, , 4]);
|
|
160
|
+
_b = SPFilePicker_helpers_1.requireAccessToken;
|
|
161
|
+
return [4 /*yield*/, resolveToken(command.resource)];
|
|
162
|
+
case 2:
|
|
163
|
+
token = _b.apply(void 0, [_k.sent(), strings.SPFilePickerUnableToObtainTokenError]);
|
|
164
|
+
port.postMessage({
|
|
165
|
+
type: 'result',
|
|
166
|
+
id: payload.id,
|
|
167
|
+
data: { result: 'token', token: token },
|
|
168
|
+
});
|
|
169
|
+
return [3 /*break*/, 4];
|
|
170
|
+
case 3:
|
|
171
|
+
e_1 = _k.sent();
|
|
172
|
+
messageText = e_1 instanceof Error ? e_1.message : String(e_1);
|
|
173
|
+
port.postMessage({
|
|
174
|
+
type: 'result',
|
|
175
|
+
id: payload.id,
|
|
176
|
+
data: { result: 'error', error: { code: 'unableToObtainToken', message: messageText } },
|
|
177
|
+
});
|
|
178
|
+
raiseError('unableToObtainToken', messageText);
|
|
179
|
+
return [3 /*break*/, 4];
|
|
180
|
+
case 4: return [3 /*break*/, 8];
|
|
181
|
+
case 5:
|
|
182
|
+
{
|
|
183
|
+
try {
|
|
184
|
+
items = (_d = command.items) !== null && _d !== void 0 ? _d : [];
|
|
185
|
+
(_f = (_e = callbacksRef.current).onPicked) === null || _f === void 0 ? void 0 : _f.call(_e, items);
|
|
186
|
+
port.postMessage({
|
|
187
|
+
type: 'result',
|
|
188
|
+
id: payload.id,
|
|
189
|
+
data: { result: 'success' },
|
|
190
|
+
});
|
|
191
|
+
close();
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
messageText = e instanceof Error ? e.message : String(e);
|
|
195
|
+
port.postMessage({
|
|
196
|
+
type: 'result',
|
|
197
|
+
id: payload.id,
|
|
198
|
+
data: { result: 'error', error: { code: 'unusableItem', message: messageText } },
|
|
199
|
+
});
|
|
200
|
+
raiseError('unusableItem', messageText);
|
|
201
|
+
}
|
|
202
|
+
return [3 /*break*/, 8];
|
|
203
|
+
}
|
|
204
|
+
_k.label = 6;
|
|
205
|
+
case 6:
|
|
206
|
+
{
|
|
207
|
+
(_h = (_g = callbacksRef.current).onCancel) === null || _h === void 0 ? void 0 : _h.call(_g);
|
|
208
|
+
close();
|
|
209
|
+
return [3 /*break*/, 8];
|
|
210
|
+
}
|
|
211
|
+
_k.label = 7;
|
|
212
|
+
case 7:
|
|
213
|
+
{
|
|
214
|
+
port.postMessage({
|
|
215
|
+
type: 'result',
|
|
216
|
+
id: payload.id,
|
|
217
|
+
data: {
|
|
218
|
+
result: 'error',
|
|
219
|
+
error: { code: 'unsupportedCommand', message: (_j = command === null || command === void 0 ? void 0 : command.command) !== null && _j !== void 0 ? _j : 'unknown' },
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
return [3 /*break*/, 8];
|
|
223
|
+
}
|
|
224
|
+
_k.label = 8;
|
|
225
|
+
case 8: return [2 /*return*/];
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}); }, [resolveToken, close, raiseError]);
|
|
229
|
+
/** Wires the `initialize` handshake to the picker window. */
|
|
230
|
+
var attachWindowListener = (0, react_1.useCallback)(function (pickerWindow, channelId) {
|
|
231
|
+
var expectedOrigin = new URL(baseUrl).origin;
|
|
232
|
+
var listener = function (event) {
|
|
233
|
+
var _a;
|
|
234
|
+
if ((0, SPFilePicker_helpers_1.isExpectedPickerInitializeEvent)(event, pickerWindow, channelId, expectedOrigin)) {
|
|
235
|
+
var port = (_a = event.ports) === null || _a === void 0 ? void 0 : _a[0];
|
|
236
|
+
if (!port)
|
|
237
|
+
return;
|
|
238
|
+
window.removeEventListener('message', listener);
|
|
239
|
+
windowListenerRef.current = undefined;
|
|
240
|
+
portRef.current = port;
|
|
241
|
+
port.addEventListener('message', function (m) {
|
|
242
|
+
handlePortMessage(m).catch(function (e) {
|
|
243
|
+
var messageText = e instanceof Error ? e.message : String(e);
|
|
244
|
+
raiseError('messageHandlingFailed', messageText);
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
port.start();
|
|
248
|
+
port.postMessage({ type: 'activate' });
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
windowListenerRef.current = listener;
|
|
252
|
+
window.addEventListener('message', listener);
|
|
253
|
+
}, [baseUrl, handlePortMessage, raiseError]);
|
|
254
|
+
/** Loads the picker into the given window. */
|
|
255
|
+
var submitPickerForm = (0, react_1.useCallback)(function (pickerWindow, channelId) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
256
|
+
var useCookies, configuration, params, url, accessToken, _a, doc, form, tokenInput;
|
|
257
|
+
return tslib_1.__generator(this, function (_b) {
|
|
258
|
+
switch (_b.label) {
|
|
259
|
+
case 0:
|
|
260
|
+
useCookies = authMode === 'cookie';
|
|
261
|
+
configuration = buildConfiguration(channelId);
|
|
262
|
+
params = new URLSearchParams();
|
|
263
|
+
if (app)
|
|
264
|
+
params.set('app', app);
|
|
265
|
+
if (scenario)
|
|
266
|
+
params.set('scenario', scenario);
|
|
267
|
+
params.set('filePicker', JSON.stringify(configuration));
|
|
268
|
+
params.set('locale', locale);
|
|
269
|
+
// Cookie mode uses the existing SharePoint session; no bearer token.
|
|
270
|
+
if (useCookies)
|
|
271
|
+
params.set('auth', 'none');
|
|
272
|
+
url = "".concat(trimTrailingSlash(baseUrl), "/_layouts/15/FilePicker.aspx?").concat(params.toString());
|
|
273
|
+
if (useCookies) {
|
|
274
|
+
// GET navigation — the browser sends the user's SharePoint cookies.
|
|
275
|
+
pickerWindow.location.href = url;
|
|
276
|
+
return [2 /*return*/];
|
|
277
|
+
}
|
|
278
|
+
_a = SPFilePicker_helpers_1.requireAccessToken;
|
|
279
|
+
return [4 /*yield*/, resolveToken(baseUrl)];
|
|
280
|
+
case 1:
|
|
281
|
+
accessToken = _a.apply(void 0, [_b.sent(), strings.SPFilePickerUnableToObtainTokenError]);
|
|
282
|
+
doc = pickerWindow.document;
|
|
283
|
+
form = doc.createElement('form');
|
|
284
|
+
form.setAttribute('action', url);
|
|
285
|
+
form.setAttribute('method', 'POST');
|
|
286
|
+
tokenInput = doc.createElement('input');
|
|
287
|
+
tokenInput.setAttribute('type', 'hidden');
|
|
288
|
+
tokenInput.setAttribute('name', 'access_token');
|
|
289
|
+
tokenInput.setAttribute('value', accessToken);
|
|
290
|
+
form.appendChild(tokenInput);
|
|
291
|
+
doc.body.append(form);
|
|
292
|
+
form.submit();
|
|
293
|
+
return [2 /*return*/];
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
}); }, [authMode, buildConfiguration, app, scenario, locale, baseUrl, resolveToken]);
|
|
297
|
+
/** Performs the launch once a target window is available. */
|
|
298
|
+
var launch = (0, react_1.useCallback)(function (pickerWindow) {
|
|
299
|
+
var channelId = createChannelId();
|
|
300
|
+
channelIdRef.current = channelId;
|
|
301
|
+
var handleLaunchError = function (e) {
|
|
302
|
+
var messageText = e instanceof Error ? e.message : String(e);
|
|
303
|
+
raiseError('launchFailed', messageText);
|
|
304
|
+
close();
|
|
305
|
+
};
|
|
306
|
+
try {
|
|
307
|
+
attachWindowListener(pickerWindow, channelId);
|
|
308
|
+
}
|
|
309
|
+
catch (e) {
|
|
310
|
+
handleLaunchError(e);
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
submitPickerForm(pickerWindow, channelId).catch(handleLaunchError);
|
|
314
|
+
}, [attachWindowListener, submitPickerForm, raiseError, close]);
|
|
315
|
+
var open = (0, react_1.useCallback)(function () {
|
|
316
|
+
if (!baseUrl) {
|
|
317
|
+
raiseError('missingBaseUrl', strings.SPFilePickerMissingBaseUrlError);
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
setError(undefined);
|
|
321
|
+
setIsLoading(true);
|
|
322
|
+
setIsOpen(true);
|
|
323
|
+
if (target === 'window') {
|
|
324
|
+
var win = window.open('', 'SPFilePicker', 'width=1080,height=680');
|
|
325
|
+
if (!win) {
|
|
326
|
+
raiseError('popupBlocked', strings.SPFilePickerPopupBlockedError);
|
|
327
|
+
setIsOpen(false);
|
|
328
|
+
setIsLoading(false);
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
popupRef.current = win;
|
|
332
|
+
launch(win);
|
|
333
|
+
}
|
|
334
|
+
// For iframe target the launch happens in the effect below once the
|
|
335
|
+
// iframe has been rendered by the consumer.
|
|
336
|
+
}, [baseUrl, target, launch, raiseError]);
|
|
337
|
+
// Launch into the iframe once it is mounted and open.
|
|
338
|
+
(0, react_1.useEffect)(function () {
|
|
339
|
+
var _a;
|
|
340
|
+
if (!isOpen || target !== 'iframe')
|
|
341
|
+
return;
|
|
342
|
+
var win = (_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow;
|
|
343
|
+
if (!win)
|
|
344
|
+
return;
|
|
345
|
+
// Avoid re-launching if a channel is already established.
|
|
346
|
+
if (channelIdRef.current)
|
|
347
|
+
return;
|
|
348
|
+
info('launching picker into iframe');
|
|
349
|
+
launch(win);
|
|
350
|
+
}, [isOpen, target, launch, info]);
|
|
351
|
+
// Clean up on unmount.
|
|
352
|
+
(0, react_1.useEffect)(function () { return teardown; }, [teardown]);
|
|
353
|
+
/** Clears the loading state — call from the iframe's `onLoad`. */
|
|
354
|
+
var markLoaded = (0, react_1.useCallback)(function () {
|
|
355
|
+
setIsLoading(false);
|
|
356
|
+
}, []);
|
|
357
|
+
return (0, react_1.useMemo)(function () { return ({ isOpen: isOpen, isLoading: isLoading, error: error, iframeRef: iframeRef, open: open, close: close, markLoaded: markLoaded }); }, [isOpen, isLoading, error, open, close, markLoaded]);
|
|
358
|
+
}
|
|
359
|
+
//# sourceMappingURL=useSPFilePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSPFilePicker.js","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/useSPFilePicker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./ISPFilePicker.types"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./ISPFilePickerProps"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./hooks/useSPFilePicker"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./SPFilePicker"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/index.ts"],"names":[],"mappings":";;;AAAA,gEAAsC;AACtC,+DAAqC;AACrC,kEAAwC;AACxC,yDAA+B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useSPFilePickerStyles = void 0;
|
|
4
|
+
var css_1 = require("@emotion/css");
|
|
5
|
+
var react_components_1 = require("@fluentui/react-components");
|
|
6
|
+
var useSPFilePickerStyles = function (height) { return ({
|
|
7
|
+
dialogSurface: (0, css_1.css)({
|
|
8
|
+
padding: 0,
|
|
9
|
+
overflow: 'hidden',
|
|
10
|
+
}),
|
|
11
|
+
iframeWrapper: (0, css_1.css)({
|
|
12
|
+
position: 'relative',
|
|
13
|
+
width: '100%',
|
|
14
|
+
height: height,
|
|
15
|
+
minHeight: 230,
|
|
16
|
+
borderRadius: react_components_1.tokens.borderRadiusMedium,
|
|
17
|
+
overflow: 'hidden',
|
|
18
|
+
backgroundColor: react_components_1.tokens.colorNeutralBackground1,
|
|
19
|
+
}),
|
|
20
|
+
iframe: (0, css_1.css)({
|
|
21
|
+
width: '100%',
|
|
22
|
+
height: '100%',
|
|
23
|
+
border: 'none',
|
|
24
|
+
display: 'block',
|
|
25
|
+
}),
|
|
26
|
+
spinnerOverlay: (0, css_1.css)({
|
|
27
|
+
position: 'absolute',
|
|
28
|
+
inset: 0,
|
|
29
|
+
display: 'flex',
|
|
30
|
+
alignItems: 'center',
|
|
31
|
+
justifyContent: 'center',
|
|
32
|
+
backgroundColor: react_components_1.tokens.colorNeutralBackground1,
|
|
33
|
+
zIndex: 1,
|
|
34
|
+
}),
|
|
35
|
+
}); };
|
|
36
|
+
exports.useSPFilePickerStyles = useSPFilePickerStyles;
|
|
37
|
+
//# sourceMappingURL=useSPFilePickerStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSPFilePickerStyles.js","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/useSPFilePickerStyles.ts"],"names":[],"mappings":";;;AAAA,oCAAmC;AACnC,+DAAoD;AAS7C,IAAM,qBAAqB,GAAG,UAAC,MAAc,IAA0B,OAAA,CAAC;IAC7E,aAAa,EAAE,IAAA,SAAG,EAAC;QACjB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,QAAQ;KACnB,CAAC;IAEF,aAAa,EAAE,IAAA,SAAG,EAAC;QACjB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,MAAM;QACb,MAAM,QAAA;QACN,SAAS,EAAE,GAAG;QACd,YAAY,EAAE,yBAAM,CAAC,kBAAkB;QACvC,QAAQ,EAAE,QAAQ;QAClB,eAAe,EAAE,yBAAM,CAAC,uBAAuB;KAChD,CAAC;IAEF,MAAM,EAAE,IAAA,SAAG,EAAC;QACV,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,OAAO;KACjB,CAAC;IAEF,cAAc,EAAE,IAAA,SAAG,EAAC;QAClB,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,eAAe,EAAE,yBAAM,CAAC,uBAAuB;QAC/C,MAAM,EAAE,CAAC;KACV,CAAC;CACH,CAAC,EAhC4E,CAgC5E,CAAC;AAhCU,QAAA,qBAAqB,yBAgC/B"}
|
package/lib-commonjs/index.js
CHANGED
|
@@ -15,6 +15,7 @@ tslib_1.__exportStar(require("./Progress"), exports);
|
|
|
15
15
|
tslib_1.__exportStar(require("./ProgressStepsIndicator"), exports);
|
|
16
16
|
tslib_1.__exportStar(require("./DateTimePicker"), exports);
|
|
17
17
|
tslib_1.__exportStar(require("./FilePicker"), exports);
|
|
18
|
+
tslib_1.__exportStar(require("./SPFilePicker"), exports);
|
|
18
19
|
tslib_1.__exportStar(require("./FolderExplorer"), exports);
|
|
19
20
|
tslib_1.__exportStar(require("./FolderPicker"), exports);
|
|
20
21
|
tslib_1.__exportStar(require("./IconPicker"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,qDAA2B;AAC3B,wDAA8B;AAC9B,2DAAiC;AACjC,2DAAiC;AACjC,yDAA+B;AAC/B,uDAA6B;AAC7B,2DAAiC;AACjC,gEAAsC;AACtC,yDAA+B;AAC/B,qDAA2B;AAC3B,mEAAyC;AACzC,2DAAiC;AACjC,uDAA6B;AAC7B,2DAAiC;AACjC,yDAA+B;AAC/B,uDAA6B;AAC7B,uDAA6B;AAC7B,8DAAoC;AAEpC,yDAA+B;AAC/B,wDAA8B;AAC9B,mDAAyB;AACzB,sDAA4B;AAC5B,wDAA8B;AAC9B,wDAA8B;AAC9B,qEAA2C;AAC3C,kEAAwC;AACxC,8DAAoC;AACpC,kEAAwC;AACxC,gEAAsC;AACtC,8DAAoC;AACpC,kEAAwC;AACxC,8DAAoC;AACpC,+DAAqC;AACrC,6DAAmC;AACnC,8DAAoC;AACpC,sDAA4B;AAC5B,2DAAiC;AACjC,wDAA8B;AAC9B,qDAA2B;AAC3B,iEAAuC;AACvC,wDAA8B;AAC9B,wDAA8B;AAC9B,yDAA+B;AAC/B,wDAA8B;AAC9B,wDAA8B;AAC9B,qDAA2B;AAC3B,wDAA8B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,qDAA2B;AAC3B,wDAA8B;AAC9B,2DAAiC;AACjC,2DAAiC;AACjC,yDAA+B;AAC/B,uDAA6B;AAC7B,2DAAiC;AACjC,gEAAsC;AACtC,yDAA+B;AAC/B,qDAA2B;AAC3B,mEAAyC;AACzC,2DAAiC;AACjC,uDAA6B;AAC7B,yDAA+B;AAC/B,2DAAiC;AACjC,yDAA+B;AAC/B,uDAA6B;AAC7B,uDAA6B;AAC7B,8DAAoC;AAEpC,yDAA+B;AAC/B,wDAA8B;AAC9B,mDAAyB;AACzB,sDAA4B;AAC5B,wDAA8B;AAC9B,wDAA8B;AAC9B,qEAA2C;AAC3C,kEAAwC;AACxC,8DAAoC;AACpC,kEAAwC;AACxC,gEAAsC;AACtC,8DAAoC;AACpC,kEAAwC;AACxC,8DAAoC;AACpC,+DAAqC;AACrC,6DAAmC;AACnC,8DAAoC;AACpC,sDAA4B;AAC5B,2DAAiC;AACjC,wDAA8B;AAC9B,qDAA2B;AAC3B,iEAAuC;AACvC,wDAA8B;AAC9B,wDAA8B;AAC9B,yDAA+B;AAC/B,wDAA8B;AAC9B,wDAA8B;AAC9B,qDAA2B;AAC3B,wDAA8B"}
|
|
@@ -419,6 +419,11 @@ define([], function () {
|
|
|
419
419
|
ClearFilterTitle: "Clear filter",
|
|
420
420
|
ClearAllFiltersText: "Clear filters",
|
|
421
421
|
FilterOverflowAriaLabel: "More",
|
|
422
|
+
SPFilePickerButtonText: "Select from SharePoint",
|
|
423
|
+
SPFilePickerDialogTitle: "Select a file",
|
|
424
|
+
SPFilePickerMissingBaseUrlError: "A base URL is required to open the file picker.",
|
|
425
|
+
SPFilePickerPopupBlockedError: "The picker popup was blocked by the browser.",
|
|
426
|
+
SPFilePickerUnableToObtainTokenError: "Unable to obtain a token.",
|
|
422
427
|
CalendarControlDayOfWeekSunday: "Sunday",
|
|
423
428
|
CalendarControlDayOfWeekMonday: "Monday",
|
|
424
429
|
CalendarControlDayOfWeekTuesday: "Tuesday",
|