Update with new Feature Search Files in Drive Library.
This commit is contained in:
parent
583d1a6ce1
commit
f48c174ad3
Binary file not shown.
Before Width: | Height: | Size: 798 KiB After Width: | Height: | Size: 840 KiB |
|
@ -14,7 +14,7 @@ This sample access drives from OneDrive and navigate between his content using *
|
||||||
|
|
||||||
![Demo](./Assets/OneDrivefinderSample2.PNG)
|
![Demo](./Assets/OneDrivefinderSample2.PNG)
|
||||||
|
|
||||||
### Navigate and filter extensions
|
### Navigate, search Files and filter extensions
|
||||||
|
|
||||||
![Demo](./Assets/OneDrivefinderSample3.gif)
|
![Demo](./Assets/OneDrivefinderSample3.gif)
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ react-onedrive-finder | [André Lage](http://aaclage.blogspot.com) ([@aaclage](h
|
||||||
|
|
||||||
Version|Date|Comments
|
Version|Date|Comments
|
||||||
-------|----|--------
|
-------|----|--------
|
||||||
1.2|April 29, 2021|Minimal style change
|
1.2|April 30, 2021|Include content Search on Drive Library and Minimal style change
|
||||||
1.1|April 24, 2021|Fixes, optimization, Styling and extension filter included
|
1.1|April 24, 2021|Fixes, optimization, Styling and extension filter included
|
||||||
1.0|April 16, 2021|Initial release
|
1.0|April 16, 2021|Initial release
|
||||||
|
|
||||||
|
|
|
@ -10,4 +10,5 @@ export interface IOneDriveFinderState {
|
||||||
siteItems: IDropdownOption[];
|
siteItems: IDropdownOption[];
|
||||||
fileExtensions: string[];
|
fileExtensions: string[];
|
||||||
customStyle: string;
|
customStyle: string;
|
||||||
|
searchDrive: string;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,8 @@ import { Dropdown, IDropdownOption, IDropdownProps } from 'office-ui-fabric-reac
|
||||||
import { AadHttpClient } from "@microsoft/sp-http";
|
import { AadHttpClient } from "@microsoft/sp-http";
|
||||||
import { ITheme, mergeStyleSets, getTheme } from 'office-ui-fabric-react/lib/Styling';
|
import { ITheme, mergeStyleSets, getTheme } from 'office-ui-fabric-react/lib/Styling';
|
||||||
import { Icon } from 'office-ui-fabric-react/lib/Icon';
|
import { Icon } from 'office-ui-fabric-react/lib/Icon';
|
||||||
|
import { SearchBox } from 'office-ui-fabric-react/lib/SearchBox';
|
||||||
|
import { Stack, IStackTokens } from 'office-ui-fabric-react/lib/Stack';
|
||||||
|
|
||||||
const theme: ITheme = getTheme();
|
const theme: ITheme = getTheme();
|
||||||
const { palette, fonts } = theme;
|
const { palette, fonts } = theme;
|
||||||
|
@ -39,6 +41,8 @@ const onRenderCaretDown = (): JSX.Element => {
|
||||||
return <Icon iconName="PageRight" />;
|
return <Icon iconName="PageRight" />;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const stackTokens: Partial<IStackTokens> = { childrenGap: 20 };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param option
|
* @param option
|
||||||
|
@ -107,7 +111,8 @@ export default class OneDriveFinder extends React.Component<IOneDriveFinderProps
|
||||||
siteItems: [],
|
siteItems: [],
|
||||||
itemID: "",
|
itemID: "",
|
||||||
fileExtensions: [],
|
fileExtensions: [],
|
||||||
customStyle:""
|
customStyle: "",
|
||||||
|
searchDrive: "",
|
||||||
};
|
};
|
||||||
this.getDomainData();
|
this.getDomainData();
|
||||||
}
|
}
|
||||||
|
@ -132,7 +137,7 @@ export default class OneDriveFinder extends React.Component<IOneDriveFinderProps
|
||||||
this.getDrives(selectedOption);
|
this.getDrives(selectedOption);
|
||||||
};
|
};
|
||||||
|
|
||||||
const CheckPageSize= (event: React.FormEvent<HTMLDivElement>, selectedOption: IDropdownOption) => {
|
const CheckPageSize = (event: React.FormEvent<HTMLDivElement>, selectedOption: IDropdownOption) => {
|
||||||
let fileListpageSize: number;
|
let fileListpageSize: number;
|
||||||
fileListpageSize = +selectedOption.key;
|
fileListpageSize = +selectedOption.key;
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -146,7 +151,7 @@ export default class OneDriveFinder extends React.Component<IOneDriveFinderProps
|
||||||
fileExtensions.push(selectedOption.key.toString());
|
fileExtensions.push(selectedOption.key.toString());
|
||||||
fileExtensions = [...fileExtensions,...this.state.fileExtensions];
|
fileExtensions = [...fileExtensions,...this.state.fileExtensions];
|
||||||
} else {
|
} else {
|
||||||
fileExtensions = this.state.fileExtensions.filter(e => e !== selectedOption.key );
|
fileExtensions = this.state.fileExtensions.filter(e => e !== selectedOption.key);
|
||||||
}
|
}
|
||||||
this.setState({
|
this.setState({
|
||||||
fileExtensions: [...fileExtensions]
|
fileExtensions: [...fileExtensions]
|
||||||
|
@ -164,8 +169,30 @@ export default class OneDriveFinder extends React.Component<IOneDriveFinderProps
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const { siteID, itemID, pageSize, breadcrumbItem, siteItems, fileExtensions, customStyle } = this.state;
|
const checkSearchDrive = (SearchQuery: string) => {
|
||||||
|
if (this.state.siteID != "") {
|
||||||
|
this.setState({
|
||||||
|
searchDrive: "/sites/" + this.state.siteID + "/drive/root/search(q='" + SearchQuery + "')"
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.setState({
|
||||||
|
searchDrive: "/me/drive/root/search(q='" + SearchQuery + "')"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const checkClear = (ev: any) => {
|
||||||
|
this.setState({
|
||||||
|
searchDrive: ""
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const selectFile = (selectedFile: any) => {
|
||||||
|
if (selectedFile.detail.folder == undefined) {
|
||||||
|
window.open(selectedFile.detail.webUrl, '_blank');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const { siteID, itemID, pageSize, breadcrumbItem, siteItems, fileExtensions, searchDrive, customStyle } = this.state;
|
||||||
this._itemID = itemID;
|
this._itemID = itemID;
|
||||||
this._siteID = siteID;
|
this._siteID = siteID;
|
||||||
this._breadcrumbItem = breadcrumbItem;
|
this._breadcrumbItem = breadcrumbItem;
|
||||||
|
@ -251,7 +278,12 @@ export default class OneDriveFinder extends React.Component<IOneDriveFinderProps
|
||||||
ariaLabel="Breadcrumb with items rendered as buttons"
|
ariaLabel="Breadcrumb with items rendered as buttons"
|
||||||
overflowAriaLabel="More links"
|
overflowAriaLabel="More links"
|
||||||
/>
|
/>
|
||||||
{(this.state.itemID != "") &&
|
{(this.state.breadcrumbItem.length > 0) &&
|
||||||
|
<Stack tokens={stackTokens}>
|
||||||
|
<SearchBox placeholder="Search Drive" onSearch={checkSearchDrive} onClear={checkClear} />
|
||||||
|
</Stack>
|
||||||
|
}
|
||||||
|
{(this.state.itemID != "" && this.state.searchDrive == "") &&
|
||||||
<FileList
|
<FileList
|
||||||
className={this._customStyle}
|
className={this._customStyle}
|
||||||
fileExtensions={this._fileExtensions}
|
fileExtensions={this._fileExtensions}
|
||||||
|
@ -261,18 +293,26 @@ export default class OneDriveFinder extends React.Component<IOneDriveFinderProps
|
||||||
itemClick={this.manageFolder}
|
itemClick={this.manageFolder}
|
||||||
></FileList>
|
></FileList>
|
||||||
}
|
}
|
||||||
|
{(this.state.searchDrive != "") &&
|
||||||
|
<FileList
|
||||||
|
className={this._customStyle}
|
||||||
|
fileExtensions={this._fileExtensions}
|
||||||
|
pageSize={this._pageSize}
|
||||||
|
fileListQuery={searchDrive}
|
||||||
|
itemClick={selectFile}
|
||||||
|
></FileList>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param e
|
* @param e
|
||||||
* Capture file or folder and manages breadcrumb
|
* Capture file or folder and manages breadcrumb
|
||||||
*/
|
*/
|
||||||
private manageFolder = (e: any) => {
|
private manageFolder = (e: any) => {
|
||||||
|
|
||||||
if (e.detail.folder != undefined) {
|
if (e.detail.folder != undefined) {
|
||||||
this._breadcrumbItem.push({
|
this._breadcrumbItem.push({
|
||||||
text: e.detail.name,
|
text: e.detail.name,
|
||||||
|
|
Loading…
Reference in New Issue