UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Microsoft 365.

410 lines • 14.5 kB
import { __assign } from "tslib"; import { AnimationClassNames, getGlobalClassNames, getInputFocusStyle, HighContrastSelector, normalize, getPlaceholderStyles, IconFontSizes, getHighContrastNoAdjustStyle, } from '../../Styling'; var globalClassNames = { root: 'ms-TextField', description: 'ms-TextField-description', errorMessage: 'ms-TextField-errorMessage', field: 'ms-TextField-field', fieldGroup: 'ms-TextField-fieldGroup', prefix: 'ms-TextField-prefix', suffix: 'ms-TextField-suffix', wrapper: 'ms-TextField-wrapper', revealButton: 'ms-TextField-reveal', multiline: 'ms-TextField--multiline', borderless: 'ms-TextField--borderless', underlined: 'ms-TextField--underlined', unresizable: 'ms-TextField--unresizable', required: 'is-required', disabled: 'is-disabled', active: 'is-active', }; function getLabelStyles(props) { var underlined = props.underlined, disabled = props.disabled, focused = props.focused, theme = props.theme; var palette = theme.palette, fonts = theme.fonts; return function () { var _a; return ({ root: [ underlined && disabled && { color: palette.neutralTertiary, }, underlined && { fontSize: fonts.medium.fontSize, marginRight: 8, paddingLeft: 12, paddingRight: 0, lineHeight: '22px', height: 32, }, underlined && focused && { selectors: (_a = {}, _a[HighContrastSelector] = { height: 31, }, _a), }, ], }); }; } export function getStyles(props) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; var theme = props.theme, className = props.className, disabled = props.disabled, focused = props.focused, required = props.required, multiline = props.multiline, hasLabel = props.hasLabel, borderless = props.borderless, underlined = props.underlined, hasIcon = props.hasIcon, resizable = props.resizable, hasErrorMessage = props.hasErrorMessage, inputClassName = props.inputClassName, autoAdjustHeight = props.autoAdjustHeight, hasRevealButton = props.hasRevealButton; var semanticColors = theme.semanticColors, effects = theme.effects, fonts = theme.fonts; var classNames = getGlobalClassNames(globalClassNames, theme); var fieldPrefixSuffix = { // Suffix/Prefix are not editable so the disabled slot perfectly fits. background: semanticColors.disabledBackground, color: !disabled ? semanticColors.inputPlaceholderText : semanticColors.disabledText, display: 'flex', alignItems: 'center', padding: '0 10px', lineHeight: 1, whiteSpace: 'nowrap', flexShrink: 0, selectors: (_a = {}, _a[HighContrastSelector] = { background: 'Window', color: disabled ? 'GrayText' : 'WindowText', }, _a), }; // placeholder style constants var placeholderStyles = [ fonts.medium, { color: semanticColors.inputPlaceholderText, opacity: 1, selectors: (_b = {}, _b[HighContrastSelector] = { color: 'GrayText', }, _b), }, ]; var disabledPlaceholderStyles = { color: semanticColors.disabledText, selectors: (_c = {}, _c[HighContrastSelector] = { color: 'GrayText', }, _c), }; return { root: [ classNames.root, fonts.medium, required && classNames.required, disabled && classNames.disabled, focused && classNames.active, multiline && classNames.multiline, borderless && classNames.borderless, underlined && classNames.underlined, normalize, { position: 'relative', }, className, ], wrapper: [ classNames.wrapper, underlined && [ { display: 'flex', borderBottom: "1px solid " + (!hasErrorMessage ? semanticColors.inputBorder : semanticColors.errorText), width: '100%', }, disabled && { borderBottomColor: semanticColors.disabledBackground, selectors: (_d = {}, _d[HighContrastSelector] = __assign({ borderColor: 'GrayText' }, getHighContrastNoAdjustStyle()), _d), }, !disabled && { selectors: { ':hover': { borderBottomColor: !hasErrorMessage ? semanticColors.inputBorderHovered : semanticColors.errorText, selectors: (_e = {}, _e[HighContrastSelector] = __assign({ borderBottomColor: 'Highlight' }, getHighContrastNoAdjustStyle()), _e), }, }, }, focused && [ { position: 'relative', }, getInputFocusStyle(!hasErrorMessage ? semanticColors.inputFocusBorderAlt : semanticColors.errorText, 0, 'borderBottom'), ], ], ], fieldGroup: [ classNames.fieldGroup, normalize, { border: "1px solid " + semanticColors.inputBorder, borderRadius: effects.roundedCorner2, background: semanticColors.inputBackground, cursor: 'text', height: 32, display: 'flex', flexDirection: 'row', alignItems: 'stretch', position: 'relative', }, multiline && { minHeight: '60px', height: 'auto', display: 'flex', }, !focused && !disabled && { selectors: { ':hover': { borderColor: semanticColors.inputBorderHovered, selectors: (_f = {}, _f[HighContrastSelector] = __assign({ borderColor: 'Highlight' }, getHighContrastNoAdjustStyle()), _f), }, }, }, focused && !underlined && getInputFocusStyle(!hasErrorMessage ? semanticColors.inputFocusBorderAlt : semanticColors.errorText, effects.roundedCorner2), disabled && { borderColor: semanticColors.disabledBackground, selectors: (_g = {}, _g[HighContrastSelector] = __assign({ borderColor: 'GrayText' }, getHighContrastNoAdjustStyle()), _g), cursor: 'default', }, borderless && { border: 'none', }, borderless && focused && { border: 'none', selectors: { ':after': { border: 'none', }, }, }, underlined && { flex: '1 1 0px', border: 'none', textAlign: 'left', }, underlined && disabled && { backgroundColor: 'transparent', }, hasErrorMessage && !underlined && { borderColor: semanticColors.errorText, selectors: { '&:hover': { borderColor: semanticColors.errorText, }, }, }, !hasLabel && required && { selectors: (_h = { ':before': { content: "'*'", color: semanticColors.errorText, position: 'absolute', top: -5, right: -10, } }, _h[HighContrastSelector] = { selectors: { ':before': { color: 'WindowText', right: -14, }, }, }, _h), }, ], field: [ fonts.medium, classNames.field, normalize, { borderRadius: 0, border: 'none', background: 'none', backgroundColor: 'transparent', color: semanticColors.inputText, padding: '0 8px', width: '100%', minWidth: 0, textOverflow: 'ellipsis', outline: 0, selectors: (_j = { '&:active, &:focus, &:hover': { outline: 0 }, '::-ms-clear': { display: 'none', } }, _j[HighContrastSelector] = { background: 'Window', color: disabled ? 'GrayText' : 'WindowText', }, _j), }, getPlaceholderStyles(placeholderStyles), multiline && !resizable && [ classNames.unresizable, { resize: 'none', }, ], multiline && { minHeight: 'inherit', lineHeight: 17, flexGrow: 1, paddingTop: 6, paddingBottom: 6, overflow: 'auto', width: '100%', }, multiline && autoAdjustHeight && { overflow: 'hidden', }, hasIcon && !hasRevealButton && { paddingRight: 24, }, multiline && hasIcon && { paddingRight: 40, }, disabled && [ { backgroundColor: semanticColors.disabledBackground, color: semanticColors.disabledText, borderColor: semanticColors.disabledBackground, }, getPlaceholderStyles(disabledPlaceholderStyles), ], underlined && { textAlign: 'left', }, focused && !borderless && { selectors: (_k = {}, _k[HighContrastSelector] = { paddingLeft: 11, paddingRight: 11, }, _k), }, focused && multiline && !borderless && { selectors: (_l = {}, _l[HighContrastSelector] = { paddingTop: 4, }, _l), }, inputClassName, ], icon: [ multiline && { paddingRight: 24, alignItems: 'flex-end', }, { pointerEvents: 'none', position: 'absolute', bottom: 6, right: 8, top: 'auto', fontSize: IconFontSizes.medium, lineHeight: 18, }, disabled && { color: semanticColors.disabledText, }, ], description: [ classNames.description, { color: semanticColors.bodySubtext, fontSize: fonts.xSmall.fontSize, }, ], errorMessage: [ classNames.errorMessage, AnimationClassNames.slideDownIn20, fonts.small, { color: semanticColors.errorText, margin: 0, paddingTop: 5, display: 'flex', alignItems: 'center', }, ], prefix: [classNames.prefix, fieldPrefixSuffix], suffix: [classNames.suffix, fieldPrefixSuffix], revealButton: [ classNames.revealButton, 'ms-Button', 'ms-Button--icon', { height: 30, width: 32, border: 'none', padding: '0px 4px', backgroundColor: 'transparent', color: semanticColors.link, selectors: { ':hover': { outline: 0, color: semanticColors.primaryButtonBackgroundHovered, backgroundColor: semanticColors.buttonBackgroundHovered, selectors: (_m = {}, _m[HighContrastSelector] = { borderColor: 'Highlight', color: 'Highlight', }, _m), }, ':focus': { outline: 0 }, }, }, hasIcon && { marginRight: 28, }, ], revealSpan: { display: 'flex', height: '100%', alignItems: 'center', }, revealIcon: { margin: '0px 4px', pointerEvents: 'none', bottom: 6, right: 8, top: 'auto', fontSize: IconFontSizes.medium, lineHeight: 18, }, subComponentStyles: { label: getLabelStyles(props), }, }; } //# sourceMappingURL=TextField.styles.js.map