@focuson/form_components
Version:
Components that can be used by @focuson/forms
41 lines (40 loc) • 2.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LabelAndTextarea = exports.TextAreaInput = exports.cleanTextareaProps = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const state_1 = require("@focuson/state");
const utils_1 = require("@focuson/utils");
const label_1 = require("./label");
const labelAndInput_1 = require("./labelAndInput");
const makeButtons_1 = require("./makeButtons");
const CustomError_1 = require("./CustomError");
const cleanTextareaProps = (p) => {
const result = Object.assign({}, p);
delete result.label;
delete result.allButtons;
delete result.state;
delete result.errorMessage;
delete result.readOnly;
delete result.enabledBy;
delete result.parentState;
delete result.scrollAfter;
delete result.noLabel;
delete result.maxLength;
delete result.maxlength;
return result;
};
exports.cleanTextareaProps = cleanTextareaProps;
function TextAreaInput(props) {
const { id, state, mode, readonly, scrollAfter, parentState, onChange, enabledBy, errorMessage, maxlength } = props;
return ((0, jsx_runtime_1.jsx)("textarea", Object.assign({ style: scrollAfter ? { height: scrollAfter, overflow: 'auto' } : undefined }, (0, exports.cleanTextareaProps)(props), { maxLength: maxlength, "data-errormessage": errorMessage, onChange: (e) => {
var _a;
(0, CustomError_1.setEdited)(e === null || e === void 0 ? void 0 : e.target, (_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.value);
state.massTransform((0, state_1.reasonFor)('TextAreaInput', 'onChange', id))([state.optional, () => e.target.value], ...(0, labelAndInput_1.makeInputChangeTxs)(id, parentState, onChange));
}, readOnly: mode === 'view' || readonly || (0, utils_1.disabledFrom)(enabledBy), value: `${state.optJsonOr('')}`, className: "input" })));
}
exports.TextAreaInput = TextAreaInput;
function LabelAndTextarea(props) {
const { id, label, name, state, labelPosition, buttons, noLabel, errorMessage } = props;
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: `labelValueButton ${labelPosition == 'Horizontal' ? 'd-flex-inline' : ''}` }, { children: [noLabel ? '' : (0, jsx_runtime_1.jsx)(label_1.Label, { state: state, htmlFor: id, label: label }), (0, jsx_runtime_1.jsxs)("div", Object.assign({ className: `${buttons && buttons.length > 0 ? 'inputAndButtons' : ''}` }, { children: [(0, jsx_runtime_1.jsx)(TextAreaInput, Object.assign({}, props)), (0, makeButtons_1.makeButtons)(props), " "] })), (0, jsx_runtime_1.jsx)(CustomError_1.CustomError, { id: props.id, validationMessage: errorMessage })] })));
}
exports.LabelAndTextarea = LabelAndTextarea;