@sap-ux/ui-components
Version:
SAP UI Components Library
73 lines • 2.4 kB
JavaScript
import React from 'react';
import { Spinner, Overlay, SpinnerSize } from '@fluentui/react';
import './UILoader.scss';
export { SpinnerSize as UISpinnerSize };
/**
* UILoader component
* based on https://developer.microsoft.com/en-us/fluentui#/controls/web/spinner
*
* @exports
* @class UILoader
* @extends {React.Component<ISpinnerProps, {}>}
*/
export class UILoader extends React.Component {
/**
* Initializes component properties.
*
* @param {UILoaderProps} props
*/
constructor(props) {
super(props);
}
/**
* @returns {JSX.Element}
*/
render() {
const { blockDOM, delayed } = this.props;
const loaderStyles = () => ({
...{
root: {
...(blockDOM && { height: '100%' })
},
circle: [
{
borderColor: 'var(--vscode-progressBar-background) var(--vscode-terminal-ansiBrightWhite) var(--vscode-terminal-ansiBrightWhite)',
borderWidth: 2,
zIndex: 1
}
],
label: {
color: 'var(--vscode-foreground)',
fontSize: 14,
fontWeight: 'bold',
zIndex: 1
}
}
});
const spinner = React.createElement(Spinner, { ...this.props, styles: loaderStyles });
if (!blockDOM) {
return spinner;
}
else {
const overlayStyles = () => ({
...{
root: {
backgroundColor: 'transparent',
selectors: {
'&:before': {
content: '""',
position: 'absolute',
inset: 0,
backgroundColor: 'var(--vscode-editor-background)',
opacity: 0.6,
zIndex: 1
}
}
}
}
});
return (React.createElement(Overlay, { className: `ui-loader-blocker${delayed ? ' ui-loader--delayed' : ''}`, styles: overlayStyles }, spinner));
}
}
}
//# sourceMappingURL=UILoader.js.map