UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

77 lines (71 loc) 3.02 kB
'use strict'; var React = require('react'); var Box = require('../../Box/Box.js'); var Spinner = require('../../Spinner/Spinner.js'); var clsx = require('clsx'); var TextInputInnerVisualSlot_module = require('./TextInputInnerVisualSlot.module.css.js'); require('../../FeatureFlags/FeatureFlags.js'); var useFeatureFlag = require('../../FeatureFlags/useFeatureFlag.js'); require('../../FeatureFlags/DefaultFeatureFlags.js'); var UnstyledTextInput = require('./UnstyledTextInput.js'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var React__default = /*#__PURE__*/_interopDefault(React); function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } const TextInputInnerVisualSlot = ({ children, hasLoadingIndicator, showLoadingIndicator, visualPosition, id }) => { const enabled = useFeatureFlag.useFeatureFlag(UnstyledTextInput.TEXT_INPUT_CSS_MODULES_FEATURE_FLAG); const isLeading = visualPosition === 'leading'; if (!children && !hasLoadingIndicator || isLeading && !children && !showLoadingIndicator) { return null; } if (!hasLoadingIndicator) { return /*#__PURE__*/React__default.default.createElement("span", { className: "TextInput-icon", id: id, "aria-hidden": "true" }, children); } const boxStyleProps = enabled ? { className: clsx.clsx(showLoadingIndicator ? TextInputInnerVisualSlot_module.SpinnerHidden : TextInputInnerVisualSlot_module.SpinnerVisible) } : { sx: { visibility: showLoadingIndicator ? 'hidden' : 'visible' } }; const spinnerStyleProps = enabled ? { className: clsx.clsx(showLoadingIndicator ? TextInputInnerVisualSlot_module.SpinnerVisible : TextInputInnerVisualSlot_module.SpinnerHidden, children && TextInputInnerVisualSlot_module.Spinner, children && isLeading && TextInputInnerVisualSlot_module.SpinnerLeading) } : { sx: children ? { position: 'absolute', top: 0, height: '100%', maxWidth: '100%', visibility: showLoadingIndicator ? 'visible' : 'hidden', ...(isLeading ? { left: 0 } : { right: 0 }) } : { visibility: showLoadingIndicator ? 'visible' : 'hidden' } }; return /*#__PURE__*/React__default.default.createElement("span", { className: "TextInput-icon" }, /*#__PURE__*/React__default.default.createElement(Box, { display: "flex", position: "relative", id: id }, children && /*#__PURE__*/React__default.default.createElement(Box, boxStyleProps, children), /*#__PURE__*/React__default.default.createElement(Spinner, _extends({ srText: null }, spinnerStyleProps, { size: children ? undefined : 'small' })))); }; TextInputInnerVisualSlot.displayName = "TextInputInnerVisualSlot"; module.exports = TextInputInnerVisualSlot;