@wix/design-system
Version:
@wix/design-system
89 lines (88 loc) • 3.57 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _Text = _interopRequireDefault(require("../Text"));
var _LabelledElementSt = require("./LabelledElement.st.css.js");
var _LabelledElement = require("./LabelledElement.constants");
var _generateId = require("../utils/generateId");
var _jsxFileName = "/home/builduser/work/57e038ea7326c1ec/packages/wix-design-system/dist/cjs/LabelledElement/LabelledElement.tsx";
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
var LabelledElement = _ref => {
var {
dataHook,
label,
value,
topLabelGray,
disabled,
children
} = _ref;
var [hasFocus, setHasFocus] = (0, _react.useState)(false);
var [inputValue, setInputValue] = (0, _react.useState)();
var inputId = "labelled-element-".concat((0, _generateId.generateID)());
var isInputControlled = typeof value !== 'undefined';
var isInputEmpty = isInputControlled ? !value : !inputValue;
var hasTopLabel = hasFocus || !isInputEmpty;
var handleOnChange = event => {
if (!isInputControlled) {
setInputValue(event.target.value);
}
};
return /*#__PURE__*/_react.default.createElement("div", {
className: _LabelledElementSt.classes.root,
"data-hook": dataHook,
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 31,
columnNumber: 5
}
}, /*#__PURE__*/_react.default.createElement("label", {
"data-hook": _LabelledElement.DATA_HOOKS.label,
"data-top": hasTopLabel,
htmlFor: inputId,
className: (0, _LabelledElementSt.st)(_LabelledElementSt.classes.label, {
labelTop: hasTopLabel,
topLabelGray,
disabled
}),
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 32,
columnNumber: 7
}
}, /*#__PURE__*/_react.default.createElement(_Text.default, {
size: "medium",
light: !hasTopLabel,
secondary: !hasTopLabel,
weight: "thin",
className: _LabelledElementSt.classes.labelText,
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 42,
columnNumber: 9
}
}, label)), children && /*#__PURE__*/_react.default.createElement("div", {
"data-hook": _LabelledElement.DATA_HOOKS.childrenWrapper,
__self: void 0,
__source: {
fileName: _jsxFileName,
lineNumber: 53,
columnNumber: 9
}
}, children({
id: inputId,
onFocus: () => setHasFocus(true),
onBlur: () => setHasFocus(false),
onChange: handleOnChange,
/** should have a different height than regular large input */
className: _LabelledElementSt.classes.inputContainer,
getPlaceholder: placeholder => hasTopLabel ? placeholder : ''
})));
};
LabelledElement.displayName = 'LabelledElement';
var _default = exports.default = LabelledElement;
//# sourceMappingURL=LabelledElement.js.map