UNPKG

material-ui

Version:

React Components that Implement Google's Material Design.

117 lines (98 loc) 2.93 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _simpleAssign = require('simple-assign'); var _simpleAssign2 = _interopRequireDefault(_simpleAssign); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _transitions = require('../styles/transitions'); var _transitions2 = _interopRequireDefault(_transitions); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getStyles(props) { var defaultStyles = { position: 'absolute', lineHeight: '22px', top: 38, transition: _transitions2.default.easeOut(), zIndex: 1, // Needed to display label above Chrome's autocomplete field background transform: 'scale(1) translate(0, 0)', transformOrigin: 'left top', pointerEvents: 'auto', userSelect: 'none' }; var shrinkStyles = props.shrink ? (0, _simpleAssign2.default)({ transform: 'scale(0.75) translate(0, -28px)', pointerEvents: 'none' }, props.shrinkStyle) : null; return { root: (0, _simpleAssign2.default)(defaultStyles, props.style, shrinkStyles) }; } var TextFieldLabel = function TextFieldLabel(props) { var muiTheme = props.muiTheme, className = props.className, children = props.children, htmlFor = props.htmlFor, onClick = props.onClick; var prepareStyles = muiTheme.prepareStyles; var styles = getStyles(props); return _react2.default.createElement( 'label', { className: className, style: prepareStyles(styles.root), htmlFor: htmlFor, onClick: onClick }, children ); }; TextFieldLabel.propTypes = process.env.NODE_ENV !== "production" ? { /** * The label contents. */ children: _propTypes2.default.node, /** * The css class name of the root element. */ className: _propTypes2.default.string, /** * Disables the label if set to true. */ disabled: _propTypes2.default.bool, /** * The id of the target element that this label should refer to. */ htmlFor: _propTypes2.default.string, /** * @ignore * The material-ui theme applied to this component. */ muiTheme: _propTypes2.default.object.isRequired, /** * Callback function for when the label is selected via a click. * * @param {object} event Click event targeting the text field label. */ onClick: _propTypes2.default.func, /** * True if the floating label should shrink. */ shrink: _propTypes2.default.bool, /** * Override the inline-styles of the root element when shrunk. */ shrinkStyle: _propTypes2.default.object, /** * Override the inline-styles of the root element. */ style: _propTypes2.default.object } : {}; TextFieldLabel.defaultProps = { disabled: false, shrink: false }; exports.default = TextFieldLabel;