UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Microsoft 365.

207 lines • 7.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Styling_1 = require("../../Styling"); var Utilities_1 = require("../../Utilities"); var GlobalClassNames = { root: 'ms-SearchBox', iconContainer: 'ms-SearchBox-iconContainer', icon: 'ms-SearchBox-icon', clearButton: 'ms-SearchBox-clearButton', field: 'ms-SearchBox-field', }; function getStyles(props) { var _a, _b, _c, _d; var theme = props.theme, underlined = props.underlined, disabled = props.disabled, hasFocus = props.hasFocus, className = props.className, hasInput = props.hasInput, disableAnimation = props.disableAnimation; var palette = theme.palette, fonts = theme.fonts, semanticColors = theme.semanticColors, effects = theme.effects; var classNames = Styling_1.getGlobalClassNames(GlobalClassNames, theme); // placeholder style constants var placeholderStyles = { color: semanticColors.inputPlaceholderText, opacity: 1, }; var inputIconAlt = palette.neutralSecondary; var inputIconAltHovered = palette.neutralPrimary; var inputBorderDisabled = palette.neutralLighter; var inputBackgroundHovered = palette.neutralLighter; var inputBackgroundDisabled = palette.neutralLighter; return { root: [ classNames.root, fonts.medium, Styling_1.normalize, { color: semanticColors.inputText, backgroundColor: semanticColors.inputBackground, display: 'flex', flexDirection: 'row', flexWrap: 'nowrap', alignItems: 'stretch', // The 1px top and bottom padding ensure the input field does not overlap the border padding: '1px 0 1px 4px', borderRadius: effects.roundedCorner2, border: "1px solid " + semanticColors.inputBorder, height: 32, selectors: (_a = {}, _a[Styling_1.HighContrastSelector] = { borderColor: 'WindowText', }, _a[':hover'] = { borderColor: semanticColors.inputBorderHovered, selectors: (_b = {}, _b[Styling_1.HighContrastSelector] = { borderColor: 'Highlight', }, _b), }, _a[":hover ." + classNames.iconContainer] = { color: semanticColors.inputIconHovered, }, _a), }, !hasFocus && hasInput && { selectors: (_c = {}, _c[":hover ." + classNames.iconContainer] = { width: 4, }, _c[":hover ." + classNames.icon] = { opacity: 0, pointerEvents: 'none', }, _c), }, hasFocus && [ 'is-active', { position: 'relative', }, Styling_1.getInputFocusStyle(semanticColors.inputFocusBorderAlt, underlined ? 0 : effects.roundedCorner2, underlined ? 'borderBottom' : 'border'), ], disabled && [ 'is-disabled', { borderColor: inputBorderDisabled, backgroundColor: inputBackgroundDisabled, pointerEvents: 'none', cursor: 'default', selectors: (_d = {}, _d[Styling_1.HighContrastSelector] = { borderColor: 'GrayText', }, _d), }, ], underlined && [ 'is-underlined', { borderWidth: '0 0 1px 0', borderRadius: 0, // Underlined SearchBox has a larger padding left to vertically align with the waffle in product padding: '1px 0 1px 8px', }, ], underlined && disabled && { backgroundColor: 'transparent', }, hasInput && 'can-clear', className, ], iconContainer: [ classNames.iconContainer, { display: 'flex', flexDirection: 'column', justifyContent: 'center', flexShrink: 0, fontSize: 16, width: 32, textAlign: 'center', color: semanticColors.inputIcon, cursor: 'text', }, hasFocus && { width: 4, }, disabled && { color: semanticColors.inputIconDisabled, }, !disableAnimation && { transition: "width " + Styling_1.AnimationVariables.durationValue1, }, ], icon: [ classNames.icon, { opacity: 1, }, hasFocus && { opacity: 0, pointerEvents: 'none', }, !disableAnimation && { transition: "opacity " + Styling_1.AnimationVariables.durationValue1 + " 0s", }, ], clearButton: [ classNames.clearButton, { display: 'flex', flexDirection: 'row', alignItems: 'stretch', cursor: 'pointer', flexBasis: '32px', flexShrink: 0, padding: 0, margin: '-1px 0px', selectors: { '&:hover .ms-Button': { backgroundColor: inputBackgroundHovered, }, '&:hover .ms-Button-icon': { color: inputIconAltHovered, }, '.ms-Button': { borderRadius: Utilities_1.getRTL(theme) ? '1px 0 0 1px' : '0 1px 1px 0', }, '.ms-Button-icon': { color: inputIconAlt, }, }, }, ], field: [ classNames.field, Styling_1.normalize, Styling_1.getPlaceholderStyles(placeholderStyles), { backgroundColor: 'transparent', border: 'none', outline: 'none', fontWeight: 'inherit', fontFamily: 'inherit', fontSize: 'inherit', color: semanticColors.inputText, flex: '1 1 0px', // The default implicit value of 'auto' prevents the input from shrinking. Setting min-width to // 0px allows the input element to shrink to fit the container. minWidth: '0px', overflow: 'hidden', textOverflow: 'ellipsis', // This padding forces the text placement to round up. paddingBottom: 0.5, // This removes the IE specific clear button in the input since we implimented our own selectors: { '::-ms-clear': { display: 'none', }, }, }, disabled && { color: semanticColors.disabledText, }, ], }; } exports.getStyles = getStyles; //# sourceMappingURL=SearchBox.styles.js.map