UNPKG

@focuson/form_components

Version:

Components that can be used by @focuson/forms

41 lines (40 loc) 2.76 kB
"use strict"; 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;