@excentone/spfx-react
Version:
Contains custom ReactJs components and hooks intended to use when developing SharePoint Framework (SPFx) Web components.
43 lines (41 loc) • 1.89 kB
JavaScript
import { upperCase } from "lodash";
import React, { useState, useCallback } from "react";
import { MessageBarType as messageType } from "@fluentui/react";
export const useMessageBar = (defaultProps) => {
const [props, setProps] = useState(null);
const hide = useCallback(() => setProps(null), [setProps]);
const show = useCallback((args) => {
const { type, title, message, onDismiss, dismissAfter, ...nativeProps } = args;
let timeout = null;
const dismiss = () => {
hide();
if (onDismiss)
onDismiss();
if (timeout)
clearTimeout(timeout);
};
if (dismissAfter)
timeout = setTimeout(dismiss, dismissAfter);
setProps({
...defaultProps,
...nativeProps,
ariaLabel: title,
onDismiss: dismiss,
dismissButtonAriaLabel: 'Dismiss',
messageBarType: messageType[type],
children: React.createElement(React.Fragment, null,
title && React.createElement("strong", null,
upperCase(title),
": "),
message)
});
}, [setProps, defaultProps]);
const info = useCallback((args) => show({ type: 'info', ...args }), [show]);
const success = useCallback((args) => show({ type: 'success', ...args }), [show]);
const error = useCallback((args) => show({ type: 'error', ...args }), [show]);
const blocked = useCallback((args) => show({ type: 'blocked', ...args }), [show]);
const warning = useCallback((args) => show({ type: 'warning', ...args }), [show]);
const severeWarning = useCallback((args) => show({ type: 'severeWarning', ...args }), [show]);
return [props, { show, hide, info, success, error, blocked, warning, severeWarning }];
};
//# sourceMappingURL=useMessageBar.js.map