@yamada-ui/react
Version:
React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion
74 lines (70 loc) • 2.54 kB
JavaScript
"use client";
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
const require_children = require('../../utils/children.cjs');
const require_utils_index = require('../../utils/index.cjs');
const require_use_field_props = require('../field/use-field-props.cjs');
const require_input = require('./input.cjs');
const require_input_addon = require('./input-addon.cjs');
const require_input_element = require('./input-element.cjs');
const require_group = require('../group/group.cjs');
let react = require("react");
react = require_rolldown_runtime.__toESM(react);
let react_jsx_runtime = require("react/jsx-runtime");
react_jsx_runtime = require_rolldown_runtime.__toESM(react_jsx_runtime);
//#region src/components/input/input-group.tsx
const InputGroupRoot = ((props) => {
const { props: { id: _id, size, variant, children, disabled, errorBorderColor, focusBorderColor, readOnly, required,...rest }, dataProps } = require_use_field_props.useFieldProps(props);
const validChildren = require_children.useValidChildren(children);
const cloneChildren = (0, react.useMemo)(() => validChildren.map((child, index) => {
const first = !index;
if (require_children.isSomeElement(child.type, require_input_element.InputElement)) return (0, react.cloneElement)(child, {
"data-ungrouped": "",
placement: first ? "start" : "end",
...child.props
});
else return child;
}), [validChildren]);
const sharedContext = (0, react.useMemo)(() => ({
size,
variant,
errorBorderColor,
focusBorderColor,
...dataProps
}), [
size,
variant,
errorBorderColor,
focusBorderColor,
dataProps
]);
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_input.InputPropsContext, {
value: (0, react.useMemo)(() => ({
...sharedContext,
disabled,
invalid: (0, require_utils_index.utils_exports.isTruthyDataAttr)(sharedContext["data-invalid"]),
readOnly,
required
}), [
sharedContext,
disabled,
readOnly,
required
]),
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_input_addon.InputAddonPropsContext, {
value: sharedContext,
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_input_element.InputElementPropsContext, {
value: sharedContext,
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_group.Group, {
attached: true,
minW: "0",
w: "full",
...rest,
children: cloneChildren
})
})
})
});
});
//#endregion
exports.InputGroupRoot = InputGroupRoot;
//# sourceMappingURL=input-group.cjs.map