UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

368 lines • 13.1 kB
import { AnimationClassNames, getGlobalClassNames, HighContrastSelector, normalize, getPlaceholderStyles, IconFontSizes } 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', 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 // -1px to prevent jumpiness in HC with the increased border-width to 2px }, _a) } ] }); }; } export function getStyles(props) { var _a, _b, _c, _d, _e, _f, _g; 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; var semanticColors = theme.semanticColors, effects = theme.effects, fonts = theme.fonts; var classNames = getGlobalClassNames(globalClassNames, theme); var fieldPrefixSuffix = { background: semanticColors.disabledBackground, color: !disabled ? semanticColors.inputPlaceholderText : semanticColors.disabledText, display: 'flex', alignItems: 'center', padding: '0 10px', lineHeight: 1, whiteSpace: 'nowrap', flexShrink: 0 }; // placeholder style constants var placeholderStyles = [ fonts.medium, { color: semanticColors.inputPlaceholderText, opacity: 1 } ]; var disabledPlaceholderStyles = { color: semanticColors.disabledText }; var getFocusBorder = function (color, borderType) { var _a, _b, _c; if (borderType === void 0) { borderType = 'border'; } return ({ borderColor: color, selectors: { ':after': (_a = { pointerEvents: 'none', content: "''", position: 'absolute', left: -1, top: -1, bottom: -1, right: -1 }, _a[borderType] = '2px solid ' + color, _a.borderRadius = effects.roundedCorner2, _a.width = borderType === 'borderBottom' ? '100%' : undefined, _a.selectors = (_b = {}, _b[HighContrastSelector] = (_c = {}, _c[borderType === 'border' ? 'borderColor' : 'borderBottomColor'] = 'Highlight', _c), _b), _a) } }); }; 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: (_a = {}, _a[HighContrastSelector] = { borderColor: 'GrayText' }, _a) }, !disabled && { selectors: { ':hover': { borderBottomColor: !hasErrorMessage ? semanticColors.inputBorderHovered : semanticColors.errorText, selectors: (_b = {}, _b[HighContrastSelector] = { borderBottomColor: 'Highlight' }, _b) } } }, focused && getFocusBorder(!hasErrorMessage ? semanticColors.inputFocusBorderAlt : semanticColors.errorText, '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: (_c = {}, _c[HighContrastSelector] = { borderColor: 'Highlight' }, _c) } } }, focused && !underlined && getFocusBorder(!hasErrorMessage ? semanticColors.inputFocusBorderAlt : semanticColors.errorText), disabled && { borderColor: semanticColors.disabledBackground, selectors: (_d = {}, _d[HighContrastSelector] = { borderColor: 'GrayText' }, _d), 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: (_e = { ':before': { content: "'*'", color: semanticColors.errorText, position: 'absolute', top: -5, right: -10 } }, _e[HighContrastSelector] = { selectors: { ':before': { right: -14 // moving the * 4 pixel to right to alleviate border clipping in HC mode. } } }, _e) } ], 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: { '&:active, &:focus, &:hover': { outline: 0 }, '::-ms-clear': { display: 'none' } } }, 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 && { paddingRight: 24 }, multiline && hasIcon && { paddingRight: 40 }, disabled && [ { backgroundColor: semanticColors.disabledBackground, color: semanticColors.disabledText, borderColor: semanticColors.disabledBackground }, getPlaceholderStyles(disabledPlaceholderStyles) ], underlined && { textAlign: 'left' }, focused && !borderless && { selectors: (_f = {}, _f[HighContrastSelector] = { paddingLeft: 11, paddingRight: 11 }, _f) }, focused && multiline && !borderless && { selectors: (_g = {}, _g[HighContrastSelector] = { paddingTop: 4 // take into consideration the 2px increased border-width (not when borderless). }, _g) }, 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], subComponentStyles: { label: getLabelStyles(props) } }; } //# sourceMappingURL=TextField.styles.js.map