UNPKG

@arudovwen/react-form-builder

Version:
72 lines (71 loc) 3.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (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 (const 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); } const DynamicInputOptionList = ({ initialFields = [], onChange }) => { const [fields, setFields] = (0, _react.useState)(initialFields); const handleChange = (index, field, newValue) => { const updated = [...fields]; updated[index][field] = newValue; setFields(updated); }; const addField = () => { setFields([...fields, { key: '', label: '', value: '', type: 'text' }]); }; const removeField = index => { setFields(fields.filter((_, i) => i !== index)); }; (0, _react.useEffect)(() => { onChange(fields); }, [fields]); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", { className: "mb-6" }, fields.map((field, index) => /*#__PURE__*/_react.default.createElement("div", { key: index, className: "flex gap-x-[10px] mb-2" }, /*#__PURE__*/_react.default.createElement("input", { placeholder: "Enter Key", value: field.key, onChange: e => handleChange(index, 'key', e.target.value), className: "input-style" }), /*#__PURE__*/_react.default.createElement("input", { placeholder: "Enter Label", value: field.label, onChange: e => handleChange(index, 'label', e.target.value), className: "input-style" }), /*#__PURE__*/_react.default.createElement("select", { onChange: e => handleChange(index, 'type', e.target.value), className: "input-style" }, /*#__PURE__*/_react.default.createElement("option", { value: "text" }, "Text"), /*#__PURE__*/_react.default.createElement("option", { value: "number" }, "Number"), /*#__PURE__*/_react.default.createElement("option", { value: "date" }, "Date")), /*#__PURE__*/_react.default.createElement("button", { type: "button", onClick: () => removeField(index), className: "ml-1 text-xs outline-none" }, "Remove"))), /*#__PURE__*/_react.default.createElement("button", { type: "button", className: "text-xs outline-none", onClick: addField }, "Add Field")), /*#__PURE__*/_react.default.createElement("pre", { style: { fontSize: '8px' }, className: "text-[8px]" }, JSON.stringify(fields, null, 2))); }; var _default = exports.default = DynamicInputOptionList;