UNPKG

@talend/react-forms

Version:

React forms library based on json schema form.

108 lines (107 loc) 3.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Widget; var _propTypes = _interopRequireDefault(require("prop-types")); var _designSystem = require("@talend/design-system"); var _jsonSchemaFormCore = require("@talend/json-schema-form-core"); var _context = require("../context"); var _condition = _interopRequireDefault(require("../utils/condition")); var _errors = require("../utils/errors"); var _properties = require("../utils/properties"); var _WidgetComponentModule = _interopRequireDefault(require("./Widget.component.module.scss")); var _reactComponents = require("@talend/react-components"); var _jsxRuntime = require("react/jsx-runtime"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } // eslint-disable-next-line @typescript-eslint/default-param-last function isUpdating(updatingKeys = [], key) { if (updatingKeys.length === 0 || !key) { return false; } // we need to support current and parent path const serializedKey = key.join('.'); return updatingKeys.some(path => serializedKey.startsWith(path)); } function Widget(props) { const { condition, key, options, type, validationMessage, widget, displayMode, tooltip, tooltipPlacement } = props.schema; const widgetId = widget || type; const { widgets, WidgetImpl } = (0, _context.useWidget)(widgetId, props.displayMode || displayMode); if (widgetId === 'hidden' || !(0, _condition.default)(condition, props.properties, key)) { return null; } if (!WidgetImpl) { return /*#__PURE__*/(0, _jsxRuntime.jsx)(_designSystem.InlineMessageDestructive, { description: `Widget not found ${widgetId}` }); } const id = _jsonSchemaFormCore.sfPath.name(key, props.idSeparator || '_', props.id); const error = (0, _errors.getError)(props.errors, props.schema); const errorMessage = validationMessage || error; const all = { ...props, id, key: id, options, errorMessage, isValid: !error, value: (0, _properties.getValue)(props.properties, props.schema), valueIsUpdating: isUpdating(props.updating, props.schema.key), widgets }; if (tooltip) { return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactComponents.TooltipTrigger, { className: _WidgetComponentModule.default.tooltip, label: tooltip, tooltipPlacement: tooltipPlacement || 'left', children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", { children: /*#__PURE__*/(0, _jsxRuntime.jsx)(WidgetImpl, { ...all }) }) }); } return /*#__PURE__*/(0, _jsxRuntime.jsx)(WidgetImpl, { ...all }); } if (process.env.NODE_ENV !== 'production') { Widget.propTypes = { displayMode: _propTypes.default.string, errors: _propTypes.default.object, id: _propTypes.default.string, idSeparator: _propTypes.default.string, properties: _propTypes.default.object, schema: _propTypes.default.shape({ condition: _propTypes.default.object, displayMode: _propTypes.default.string, key: _propTypes.default.array, options: _propTypes.default.object, tooltip: _propTypes.default.string, tooltipPlacement: _propTypes.default.string, type: _propTypes.default.string, validationMessage: _propTypes.default.string, widget: _propTypes.default.string }).isRequired, updating: _propTypes.default.arrayOf(_propTypes.default.string), widgets: _propTypes.default.object }; } Widget.defaultProps = { widgets: {} }; Widget.displayName = 'Widget'; //# sourceMappingURL=Widget.component.js.map