@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 @@
|
|
|
1
|
+
{"version":3,"file":"ISPFilePickerProps.d.ts","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/ISPFilePickerProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,yBAAyB;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,EAAE,cAAc,CAAC;IAExB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAE3B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAE1C,6DAA6D;IAC7D,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAElC,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAEhC,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAGrC,sEAAsE;IACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAE/C,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAG9C;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC,yBAAyB,CAAC,CAAC;IAElD,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ISPFilePickerProps.js","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/ISPFilePickerProps.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { ISPFilePickerProps } from './ISPFilePickerProps';
|
|
3
|
+
/**
|
|
4
|
+
* Ready-to-use SharePoint / OneDrive File Picker (SDK v8) control.
|
|
5
|
+
*
|
|
6
|
+
* Renders a trigger button that opens the Microsoft-hosted file picker inside a
|
|
7
|
+
* modal dialog (iframe) or a popup window, and returns the selected items via
|
|
8
|
+
* `onPicked`. Tokens are resolved through the SPFx `context`
|
|
9
|
+
* (`aadTokenProviderFactory`) or a custom `getToken`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <SPFilePicker
|
|
14
|
+
* context={this.context}
|
|
15
|
+
* selectionMode="multiple"
|
|
16
|
+
* fileTypes={['docx', 'pdf']}
|
|
17
|
+
* onPicked={(items) => setFiles(items)}
|
|
18
|
+
* />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare const SPFilePicker: React.FunctionComponent<ISPFilePickerProps>;
|
|
22
|
+
//# sourceMappingURL=SPFilePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SPFilePicker.d.ts","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/SPFilePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM/D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAoHpE,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Button, Dialog, DialogSurface, mergeClasses, Spinner, } from '@fluentui/react-components';
|
|
3
|
+
import { useSPFilePicker } from './hooks/useSPFilePicker';
|
|
4
|
+
import { useSPFilePickerStyles } from './useSPFilePickerStyles';
|
|
5
|
+
import * as strings from 'ControlStrings';
|
|
6
|
+
var DEFAULT_WIDTH = 1080;
|
|
7
|
+
var DEFAULT_HEIGHT = 680;
|
|
8
|
+
/**
|
|
9
|
+
* Ready-to-use SharePoint / OneDrive File Picker (SDK v8) control.
|
|
10
|
+
*
|
|
11
|
+
* Renders a trigger button that opens the Microsoft-hosted file picker inside a
|
|
12
|
+
* modal dialog (iframe) or a popup window, and returns the selected items via
|
|
13
|
+
* `onPicked`. Tokens are resolved through the SPFx `context`
|
|
14
|
+
* (`aadTokenProviderFactory`) or a custom `getToken`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* <SPFilePicker
|
|
19
|
+
* context={this.context}
|
|
20
|
+
* selectionMode="multiple"
|
|
21
|
+
* fileTypes={['docx', 'pdf']}
|
|
22
|
+
* onPicked={(items) => setFiles(items)}
|
|
23
|
+
* />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export var SPFilePicker = function (props) {
|
|
27
|
+
var _a;
|
|
28
|
+
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;
|
|
29
|
+
var resolvedBaseUrl = (_a = baseUrl !== null && baseUrl !== void 0 ? baseUrl : context.pageContext.web.absoluteUrl) !== null && _a !== void 0 ? _a : '';
|
|
30
|
+
var styles = useSPFilePickerStyles(dialogHeight);
|
|
31
|
+
var _k = useSPFilePicker({
|
|
32
|
+
context: context,
|
|
33
|
+
baseUrl: resolvedBaseUrl,
|
|
34
|
+
entry: entry,
|
|
35
|
+
selectionMode: selectionMode,
|
|
36
|
+
itemsMode: itemsMode,
|
|
37
|
+
fileTypes: fileTypes,
|
|
38
|
+
locale: locale,
|
|
39
|
+
authMode: authMode,
|
|
40
|
+
app: app,
|
|
41
|
+
scenario: scenario,
|
|
42
|
+
target: target,
|
|
43
|
+
getToken: getToken,
|
|
44
|
+
onPicked: onPicked,
|
|
45
|
+
onCancel: onCancel,
|
|
46
|
+
onError: onError,
|
|
47
|
+
}), isOpen = _k.isOpen, isLoading = _k.isLoading, iframeRef = _k.iframeRef, open = _k.open, close = _k.close, markLoaded = _k.markLoaded;
|
|
48
|
+
var renderTrigger = function () {
|
|
49
|
+
if (trigger) {
|
|
50
|
+
var triggerOnClick_1 = trigger.props.onClick;
|
|
51
|
+
return React.cloneElement(trigger, {
|
|
52
|
+
'aria-disabled': disabled || undefined,
|
|
53
|
+
className: mergeClasses(trigger.props.className, className),
|
|
54
|
+
onClick: function (event) {
|
|
55
|
+
if (disabled) {
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
triggerOnClick_1 === null || triggerOnClick_1 === void 0 ? void 0 : triggerOnClick_1(event);
|
|
60
|
+
if (!event.defaultPrevented) {
|
|
61
|
+
open();
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return (React.createElement(Button, { className: className, appearance: "primary", disabled: disabled || !resolvedBaseUrl, onClick: open }, buttonText));
|
|
67
|
+
};
|
|
68
|
+
return (React.createElement(React.Fragment, null,
|
|
69
|
+
renderTrigger(),
|
|
70
|
+
target === 'iframe' && (React.createElement(Dialog, { open: isOpen, modalType: "modal", onOpenChange: function (_event, data) {
|
|
71
|
+
if (!data.open) {
|
|
72
|
+
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
73
|
+
close();
|
|
74
|
+
}
|
|
75
|
+
} },
|
|
76
|
+
React.createElement(DialogSurface, { className: styles.dialogSurface, style: { maxWidth: dialogWidth, width: dialogWidth } },
|
|
77
|
+
React.createElement("div", { className: styles.iframeWrapper },
|
|
78
|
+
isLoading && (React.createElement("div", { className: styles.spinnerOverlay },
|
|
79
|
+
React.createElement(Spinner, { size: "large" }))),
|
|
80
|
+
React.createElement("iframe", { ref: iframeRef, className: styles.iframe, title: dialogTitle, onLoad: markLoaded })))))));
|
|
81
|
+
};
|
|
82
|
+
SPFilePicker.displayName = 'SPFilePicker';
|
|
83
|
+
//# sourceMappingURL=SPFilePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SPFilePicker.js","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/SPFilePicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ISPFilePickerEntry, ISPFilePickerRawConfiguration, SPFilePickerAuthMode, SPFilePickerItemsMode, SPFilePickerSelectionMode } from '../ISPFilePicker.types';
|
|
2
|
+
export interface IBuildSPFilePickerConfigurationOptions {
|
|
3
|
+
channelId: string;
|
|
4
|
+
parentOrigin: string;
|
|
5
|
+
entry?: ISPFilePickerEntry;
|
|
6
|
+
selectionMode: SPFilePickerSelectionMode;
|
|
7
|
+
itemsMode: SPFilePickerItemsMode;
|
|
8
|
+
fileTypes?: string[];
|
|
9
|
+
authMode: SPFilePickerAuthMode;
|
|
10
|
+
raw?: Partial<ISPFilePickerRawConfiguration>;
|
|
11
|
+
}
|
|
12
|
+
export interface ISPFilePickerInitializeEvent {
|
|
13
|
+
data: unknown;
|
|
14
|
+
origin: string;
|
|
15
|
+
source: MessageEvent['source'];
|
|
16
|
+
}
|
|
17
|
+
export declare function buildSPFilePickerConfiguration(options: IBuildSPFilePickerConfigurationOptions): ISPFilePickerRawConfiguration;
|
|
18
|
+
export declare function isExpectedPickerInitializeEvent(event: ISPFilePickerInitializeEvent, pickerWindow: Window, channelId: string, expectedOrigin: string): boolean;
|
|
19
|
+
export declare function requireAccessToken(accessToken: string, errorMessage: string): string;
|
|
20
|
+
//# sourceMappingURL=SPFilePicker.helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SPFilePicker.helpers.d.ts","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/SPFilePicker.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,sCAAsC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,aAAa,EAAE,yBAAyB,CAAC;IACzC,SAAS,EAAE,qBAAqB,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CAChC;AAQD,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,sCAAsC,GAC9C,6BAA6B,CA6B/B;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,4BAA4B,EACnC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,OAAO,CAWT;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAMpF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
|
+
var SDK_VERSION = '8.0';
|
|
3
|
+
function isInitializeMessageData(value) {
|
|
4
|
+
return typeof value === 'object' && value !== null;
|
|
5
|
+
}
|
|
6
|
+
export function buildSPFilePickerConfiguration(options) {
|
|
7
|
+
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;
|
|
8
|
+
var useCookies = authMode === 'cookie';
|
|
9
|
+
var configuration = __assign(__assign({ sdk: SDK_VERSION, entry: entry !== null && entry !== void 0 ? entry : { sharePoint: {} } }, (useCookies ? {} : { authentication: {} })), { messaging: __assign({ origin: parentOrigin, channelId: channelId }, (useCookies ? { identifyParent: true } : {})), selection: { mode: selectionMode }, typesAndSources: __assign({ mode: itemsMode }, (fileTypes && fileTypes.length > 0 ? { filters: fileTypes } : {})) });
|
|
10
|
+
return Object.assign(configuration, raw !== null && raw !== void 0 ? raw : {});
|
|
11
|
+
}
|
|
12
|
+
export function isExpectedPickerInitializeEvent(event, pickerWindow, channelId, expectedOrigin) {
|
|
13
|
+
if (!isInitializeMessageData(event.data)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return (event.origin === expectedOrigin &&
|
|
17
|
+
event.source === pickerWindow &&
|
|
18
|
+
event.data.type === 'initialize' &&
|
|
19
|
+
event.data.channelId === channelId);
|
|
20
|
+
}
|
|
21
|
+
export function requireAccessToken(accessToken, errorMessage) {
|
|
22
|
+
if (!accessToken) {
|
|
23
|
+
throw new Error(errorMessage);
|
|
24
|
+
}
|
|
25
|
+
return accessToken;
|
|
26
|
+
}
|
|
27
|
+
//# 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":";AAQA,IAAM,WAAW,GAAG,KAAK,CAAC;AAmB1B,SAAS,uBAAuB,CAC9B,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,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,uBACjB,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,aACP,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,aACb,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,MAAM,UAAU,+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,MAAM,UAAU,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 @@
|
|
|
1
|
+
{"version":3,"file":"SPFilePicker.helpers.test.d.ts","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/SPFilePicker.helpers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return value of {@link useLogging}.
|
|
3
|
+
*/
|
|
4
|
+
export interface IUseLoggingReturn {
|
|
5
|
+
/** Logs an informational message. */
|
|
6
|
+
info: (message: string) => void;
|
|
7
|
+
/** Logs a warning message. */
|
|
8
|
+
warn: (message: string) => void;
|
|
9
|
+
/** Logs an error (string message or `Error`). */
|
|
10
|
+
error: (message: string | Error) => void;
|
|
11
|
+
/** Logs a verbose/debug message. */
|
|
12
|
+
verbose: (message: string) => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Thin logging hook built on the SPFx {@link Log} API. It provides a stable,
|
|
16
|
+
* memoized logger scoped to a source name, with no external dependencies.
|
|
17
|
+
*
|
|
18
|
+
* @param source - Log source shown in the SPFx diagnostics. Defaults to `SPFilePicker`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const { info, error } = useLogging();
|
|
23
|
+
* info('picker launched');
|
|
24
|
+
* error(new Error('token failed'));
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function useLogging(source?: string): IUseLoggingReturn;
|
|
28
|
+
//# sourceMappingURL=useLogging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLogging.d.ts","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/useLogging.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC,8BAA8B;IAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC,iDAAiD;IACjD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IAEzC,oCAAoC;IACpC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,MAAM,GAAE,MAAuB,GAAG,iBAAiB,CAW7E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { Log } from '@microsoft/sp-core-library';
|
|
3
|
+
var DEFAULT_SOURCE = 'SPFilePicker';
|
|
4
|
+
/**
|
|
5
|
+
* Thin logging hook built on the SPFx {@link Log} API. It provides a stable,
|
|
6
|
+
* memoized logger scoped to a source name, with no external dependencies.
|
|
7
|
+
*
|
|
8
|
+
* @param source - Log source shown in the SPFx diagnostics. Defaults to `SPFilePicker`.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const { info, error } = useLogging();
|
|
13
|
+
* info('picker launched');
|
|
14
|
+
* error(new Error('token failed'));
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export function useLogging(source) {
|
|
18
|
+
if (source === void 0) { source = DEFAULT_SOURCE; }
|
|
19
|
+
return useMemo(function () { return ({
|
|
20
|
+
info: function (message) { return Log.info(source, message); },
|
|
21
|
+
warn: function (message) { return Log.warn(source, message); },
|
|
22
|
+
error: function (message) {
|
|
23
|
+
return Log.error(source, message instanceof Error ? message : new Error(message));
|
|
24
|
+
},
|
|
25
|
+
verbose: function (message) { return Log.verbose(source, message); },
|
|
26
|
+
}); }, [source]);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=useLogging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLogging.js","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/useLogging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAEjD,IAAM,cAAc,GAAG,cAAc,CAAC;AAmBtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,MAA+B;IAA/B,uBAAA,EAAA,uBAA+B;IACxD,OAAO,OAAO,CACZ,cAAM,OAAA,CAAC;QACL,IAAI,EAAE,UAAC,OAAe,IAAK,OAAA,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAzB,CAAyB;QACpD,IAAI,EAAE,UAAC,OAAe,IAAK,OAAA,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAzB,CAAyB;QACpD,KAAK,EAAE,UAAC,OAAuB;YAC7B,OAAA,GAAG,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,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAA5B,CAA4B;KAC3D,CAAC,EANI,CAMJ,EACF,CAAC,MAAM,CAAC,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { WebPartContext } from '@microsoft/sp-webpart-base';
|
|
2
|
+
import type { ISPFilePickerConfig, ISPFilePickerError, ISPFilePickerItem, SPFilePickerTarget, SPFilePickerTokenResolver } from '../ISPFilePicker.types';
|
|
3
|
+
/**
|
|
4
|
+
* Options accepted by {@link useSPFilePicker}.
|
|
5
|
+
*/
|
|
6
|
+
export interface IUseSPFilePickerOptions extends ISPFilePickerConfig {
|
|
7
|
+
/** The SPFx web part context used for token acquisition. */
|
|
8
|
+
context: WebPartContext;
|
|
9
|
+
/** Where the picker is hosted. Defaults to `iframe`. */
|
|
10
|
+
target?: SPFilePickerTarget;
|
|
11
|
+
/**
|
|
12
|
+
* Optional custom token resolver. When omitted, the hook uses the SPFx
|
|
13
|
+
* `aadTokenProviderFactory` from `context` to acquire a token for the
|
|
14
|
+
* SharePoint host origin.
|
|
15
|
+
*/
|
|
16
|
+
getToken?: SPFilePickerTokenResolver;
|
|
17
|
+
/** Fired with the picked items when the user confirms a selection. */
|
|
18
|
+
onPicked?: (items: ISPFilePickerItem[]) => void;
|
|
19
|
+
/** Fired when the picker is cancelled / closed without a selection. */
|
|
20
|
+
onCancel?: () => void;
|
|
21
|
+
/** Fired when an error occurs during the picker workflow. */
|
|
22
|
+
onError?: (error: ISPFilePickerError) => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Return value of {@link useSPFilePicker}.
|
|
26
|
+
*/
|
|
27
|
+
export interface IUseSPFilePickerReturn {
|
|
28
|
+
/** Whether the picker surface is currently open. */
|
|
29
|
+
isOpen: boolean;
|
|
30
|
+
/** Whether the picker is currently being launched / loading. */
|
|
31
|
+
isLoading: boolean;
|
|
32
|
+
/** The last error, if any. */
|
|
33
|
+
error: ISPFilePickerError | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Ref to attach to the hosting `<iframe>` element when `target === 'iframe'`.
|
|
36
|
+
* The consumer must render the iframe (e.g. inside a dialog) while `isOpen`.
|
|
37
|
+
*/
|
|
38
|
+
iframeRef: React.RefObject<HTMLIFrameElement>;
|
|
39
|
+
/** Opens the picker. */
|
|
40
|
+
open: () => void;
|
|
41
|
+
/** Closes the picker and tears down messaging. */
|
|
42
|
+
close: () => void;
|
|
43
|
+
/**
|
|
44
|
+
* Clears the loading state. Attach to the hosting `<iframe onLoad>` so the
|
|
45
|
+
* loading overlay is removed once the picker page has loaded.
|
|
46
|
+
*/
|
|
47
|
+
markLoaded: () => void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Reusable engine hook that drives the SharePoint / OneDrive File Picker (v8).
|
|
51
|
+
*
|
|
52
|
+
* It encapsulates the full workflow — building the configuration, POSTing the
|
|
53
|
+
* form into the iframe (or popup), establishing the `MessageChannel`, and
|
|
54
|
+
* responding to the `authenticate`, `pick` and `close` commands — so any
|
|
55
|
+
* control can offer a SharePoint file picker with just a few lines.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```tsx
|
|
59
|
+
* const { isOpen, open, close, iframeRef } = useSPFilePicker({
|
|
60
|
+
* baseUrl: context.pageContext.web.absoluteUrl,
|
|
61
|
+
* selectionMode: 'multiple',
|
|
62
|
+
* fileTypes: ['docx', 'pdf'],
|
|
63
|
+
* onPicked: (items) => console.info(items),
|
|
64
|
+
* });
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function useSPFilePicker(options: IUseSPFilePickerOptions): IUseSPFilePickerReturn;
|
|
68
|
+
//# sourceMappingURL=useSPFilePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSPFilePicker.d.ts","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/useSPFilePicker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAC;AAShC;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,4DAA4D;IAC5D,OAAO,EAAE,cAAc,CAAC;IAExB,wDAAwD;IACxD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAErC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEhD,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,MAAM,EAAE,OAAO,CAAC;IAEhB,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;IAEnB,8BAA8B;IAC9B,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAEtC;;;OAGG;IACH,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAE9C,wBAAwB;IACxB,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB,kDAAkD;IAClD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB;;;OAGG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAoBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CAiWxF"}
|