UNPKG

react-lightning-design-system

Version:

Salesforce Lightning Design System components built with React

77 lines (75 loc) 2.97 kB
import _extends from "@babel/runtime/helpers/extends"; import _typeof from "@babel/runtime/helpers/typeof"; import React, { useContext, useMemo, useRef, useCallback } from 'react'; import classnames from 'classnames'; import { FieldSetColumnContext } from './FieldSet'; import { createFC } from './common'; import { TooltipContent } from './TooltipContent'; /** * */ /** * */ export var FormElement = createFC(function (props) { var id = props.id, className = props.className, controlId = props.controlId, _props$cols = props.cols, cols = _props$cols === void 0 ? 1 : _props$cols, elementRef = props.elementRef, label = props.label, required = props.required, error = props.error, errorId = props.errorId, dropdown = props.dropdown, children = props.children, readOnly = props.readOnly, tooltip = props.tooltip, tooltipIcon = props.tooltipIcon; var controlElRef = useRef(null); var _useContext = useContext(FieldSetColumnContext), totalCols = _useContext.totalCols; var errorMessage = error ? typeof error === 'string' ? error : _typeof(error) === 'object' ? error.message : undefined : undefined; var formElementClassNames = classnames('slds-form-element', readOnly ? 'slds-form-element_readonly' : null, error ? 'slds-has-error' : null, typeof totalCols === 'number' ? "slds-size_".concat(cols, "-of-").concat(totalCols) : null, className); var onClickLabel = useCallback(function () { if (controlElRef.current) { var inputEl = controlElRef.current.querySelector('input,select,button'); inputEl === null || inputEl === void 0 || inputEl.focus(); } }, []); var emptyCtx = useMemo(function () { return {}; }, []); var LabelTag = readOnly ? 'span' : 'label'; return /*#__PURE__*/React.createElement(FieldSetColumnContext.Provider, { value: emptyCtx }, /*#__PURE__*/React.createElement("div", { ref: elementRef, className: formElementClassNames }, label ? /*#__PURE__*/React.createElement(LabelTag, _extends({ id: id, className: "slds-form-element__label" }, LabelTag === 'label' ? { htmlFor: controlId } : {}, { onClick: id ? undefined : onClickLabel }), required ? /*#__PURE__*/React.createElement("abbr", { className: "slds-required", title: "required", "aria-hidden": "true" }, "*") : undefined, label) : null, tooltip ? /*#__PURE__*/React.createElement(TooltipContent, { icon: tooltipIcon }, tooltip) : null, /*#__PURE__*/React.createElement("div", { ref: controlElRef, className: "slds-form-element__control" }, readOnly ? /*#__PURE__*/React.createElement("div", { className: "slds-form-element__static" }, children) : children, dropdown, errorMessage ? /*#__PURE__*/React.createElement("span", { className: "slds-form-element__help", id: error ? errorId : undefined }, errorMessage) : undefined))); }, { isFormElement: true }); //# sourceMappingURL=FormElement.js.map