UNPKG

@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
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