UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Microsoft 365.

227 lines • 9 kB
var _a, _b, _c; import { __assign } from "tslib"; import { HighContrastSelector, ScreenWidthMaxSmall, getScreenSelector, getGlobalClassNames, getFocusStyle, IconFontSizes, getHighContrastNoAdjustStyle, } from '../../Styling'; import { MessageBarType } from './MessageBar.types'; var GlobalClassNames = { root: 'ms-MessageBar', error: 'ms-MessageBar--error', blocked: 'ms-MessageBar--blocked', severeWarning: 'ms-MessageBar--severeWarning', success: 'ms-MessageBar--success', warning: 'ms-MessageBar--warning', multiline: 'ms-MessageBar-multiline', singleline: 'ms-MessageBar-singleline', dismissalSingleLine: 'ms-MessageBar-dismissalSingleLine', expandingSingleLine: 'ms-MessageBar-expandingSingleLine', content: 'ms-MessageBar-content', iconContainer: 'ms-MessageBar-icon', text: 'ms-MessageBar-text', innerText: 'ms-MessageBar-innerText', dismissSingleLine: 'ms-MessageBar-dismissSingleLine', expandSingleLine: 'ms-MessageBar-expandSingleLine', dismissal: 'ms-MessageBar-dismissal', expand: 'ms-MessageBar-expand', actions: 'ms-MessageBar-actions', actionsSingleline: 'ms-MessageBar-actionsSingleLine', }; var backgroundColor = (_a = {}, _a[MessageBarType.error] = 'errorBackground', _a[MessageBarType.blocked] = 'errorBackground', _a[MessageBarType.success] = 'successBackground', _a[MessageBarType.warning] = 'warningBackground', _a[MessageBarType.severeWarning] = 'severeWarningBackground', _a[MessageBarType.info] = 'infoBackground', _a); var highContrastBackgroundColor = (_b = {}, _b[MessageBarType.error] = 'rgba(255, 0, 0, 0.3)', _b[MessageBarType.blocked] = 'rgba(255, 0, 0, 0.3)', _b[MessageBarType.success] = 'rgba(48, 241, 73, 0.3)', _b[MessageBarType.warning] = 'rgba(255, 254, 57, 0.3)', _b[MessageBarType.severeWarning] = 'rgba(255, 0, 0, 0.3)', _b[MessageBarType.info] = 'Window', _b); var iconColor = (_c = {}, _c[MessageBarType.error] = 'errorIcon', _c[MessageBarType.blocked] = 'errorIcon', _c[MessageBarType.success] = 'successIcon', _c[MessageBarType.warning] = 'warningIcon', _c[MessageBarType.severeWarning] = 'severeWarningIcon', _c[MessageBarType.info] = 'infoIcon', _c); export var getStyles = function (props) { var _a, _b, _c, _d, _e; var theme = props.theme, className = props.className, onDismiss = props.onDismiss, truncated = props.truncated, isMultiline = props.isMultiline, expandSingleLine = props.expandSingleLine, _f = props.messageBarType, messageBarType = _f === void 0 ? MessageBarType.info : _f; var semanticColors = theme.semanticColors, fonts = theme.fonts; var SmallScreenSelector = getScreenSelector(0, ScreenWidthMaxSmall); var classNames = getGlobalClassNames(GlobalClassNames, theme); var dismissalAndExpandIconStyle = { fontSize: IconFontSizes.xSmall, height: 10, lineHeight: '10px', color: semanticColors.messageText, selectors: (_a = {}, _a[HighContrastSelector] = __assign(__assign({}, getHighContrastNoAdjustStyle()), { color: 'WindowText' }), _a), }; var dismissalAndExpandStyle = [ getFocusStyle(theme, { inset: 1, highContrastStyle: { outlineOffset: '-6px', outline: '1px solid Highlight', }, borderColor: 'transparent', }), { flexShrink: 0, width: 32, height: 32, padding: '8px 12px', selectors: { '& .ms-Button-icon': dismissalAndExpandIconStyle, ':hover': { backgroundColor: 'transparent', }, ':active': { backgroundColor: 'transparent', }, }, }, ]; return { root: [ classNames.root, fonts.medium, messageBarType === MessageBarType.error && classNames.error, messageBarType === MessageBarType.blocked && classNames.blocked, messageBarType === MessageBarType.severeWarning && classNames.severeWarning, messageBarType === MessageBarType.success && classNames.success, messageBarType === MessageBarType.warning && classNames.warning, isMultiline ? classNames.multiline : classNames.singleline, !isMultiline && onDismiss && classNames.dismissalSingleLine, !isMultiline && truncated && classNames.expandingSingleLine, { background: semanticColors[backgroundColor[messageBarType]], color: semanticColors.messageText, minHeight: 32, width: '100%', display: 'flex', wordBreak: 'break-word', selectors: (_b = { '.ms-Link': { color: semanticColors.messageLink, selectors: { ':hover': { color: semanticColors.messageLinkHovered, }, }, } }, _b[HighContrastSelector] = __assign(__assign({}, getHighContrastNoAdjustStyle()), { background: highContrastBackgroundColor[messageBarType], border: '1px solid WindowText', color: 'WindowText' }), _b), }, isMultiline && { flexDirection: 'column', }, className, ], content: [ classNames.content, { display: 'flex', width: '100%', lineHeight: 'normal', }, ], iconContainer: [ classNames.iconContainer, { fontSize: IconFontSizes.medium, minWidth: 16, minHeight: 16, display: 'flex', flexShrink: 0, margin: '8px 0 8px 12px', }, ], icon: { color: semanticColors[iconColor[messageBarType]], selectors: (_c = {}, _c[HighContrastSelector] = __assign(__assign({}, getHighContrastNoAdjustStyle()), { color: 'WindowText' }), _c), }, text: [ classNames.text, __assign(__assign({ minWidth: 0, display: 'flex', flexGrow: 1, margin: 8 }, fonts.small), { selectors: (_d = {}, _d[HighContrastSelector] = __assign({}, getHighContrastNoAdjustStyle()), _d) }), !onDismiss && { marginRight: 12, }, ], innerText: [ classNames.innerText, { lineHeight: 16, selectors: { '& span a': { paddingLeft: 4, }, }, }, truncated && { overflow: 'visible', whiteSpace: 'pre-wrap', }, !isMultiline && { // In high contrast this causes the top and bottom of links' focus outline to be clipped // (not sure of a good way around that while still maintaining text clipping) overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', }, !isMultiline && !truncated && { selectors: (_e = {}, _e[SmallScreenSelector] = { overflow: 'visible', whiteSpace: 'pre-wrap', }, _e), }, expandSingleLine && { overflow: 'visible', whiteSpace: 'pre-wrap', }, ], dismissSingleLine: classNames.dismissSingleLine, expandSingleLine: classNames.expandSingleLine, dismissal: [classNames.dismissal, dismissalAndExpandStyle], expand: [classNames.expand, dismissalAndExpandStyle], actions: [ isMultiline ? classNames.actions : classNames.actionsSingleline, { display: 'flex', flexGrow: 0, flexShrink: 0, flexBasis: 'auto', flexDirection: 'row-reverse', alignItems: 'center', margin: '0 12px 0 8px', selectors: { '& button:nth-child(n+2)': { marginLeft: 8, }, }, }, isMultiline && { marginBottom: 8, }, onDismiss && !isMultiline && { marginRight: 0, }, ], }; }; //# sourceMappingURL=MessageBar.styles.js.map