@sanity/form-builder
Version:
Sanity form builder
95 lines (94 loc) • 5.85 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.UnknownFields = UnknownFields;
var _react = _interopRequireWildcard(require("react"));
var _ui = require("@sanity/ui");
var _icons = require("@sanity/icons");
var _Details = require("../../components/Details");
var _PatchEvent = _interopRequireWildcard(require("../../PatchEvent"));
var _Alert = require("../../components/Alert");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function UnknownFields(props) {
var fieldNames = props.fieldNames,
onChange = props.onChange,
readOnly = props.readOnly,
value = props.value;
var fieldsLen = fieldNames.length;
var handleUnsetClick = (0, _react.useCallback)(fieldName => {
if (onChange) {
onChange(_PatchEvent.default.from((0, _PatchEvent.unset)([fieldName])));
}
}, [onChange]);
return /*#__PURE__*/_react.default.createElement(_Alert.Alert, {
status: "warning",
title: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, fieldsLen === 1 && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Unknown field found"), fieldsLen > 1 && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Unknown fields found"))
}, /*#__PURE__*/_react.default.createElement(_ui.Text, {
as: "p",
muted: true,
size: 1
}, fieldsLen === 1 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Encountered a field that is not defined in the schema.") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Encountered ", fieldsLen, " fields that are not defined in the schema.")), /*#__PURE__*/_react.default.createElement(_Details.Details, {
marginTop: 4,
open: __DEV__,
title: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Developer info")
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
marginBottom: 3
}, /*#__PURE__*/_react.default.createElement(_ui.Text, {
as: "p",
muted: true,
size: 1
}, fieldsLen === 1 ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "This field is not defined in the schema, which could mean that the field definition has been removed or that someone else has added it to their own local project and have not deployed their changes yet.") : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "These fields are not defined in the document\u2019s schema, which could mean that the field definitions have been removed or that someone else has added them to their own local project and have not deployed their changes yet."))), /*#__PURE__*/_react.default.createElement(_ui.Stack, {
as: "ul",
space: 3
}, fieldNames.map(fieldName => {
return /*#__PURE__*/_react.default.createElement(UnknownField, {
key: fieldName,
fieldName: fieldName,
onUnsetClick: handleUnsetClick,
readOnly: readOnly,
value: value === null || value === void 0 ? void 0 : value[fieldName]
});
}))));
}
function UnknownField(_ref) {
var fieldName = _ref.fieldName,
onUnsetClick = _ref.onUnsetClick,
readOnly = _ref.readOnly,
value = _ref.value;
var handleUnsetClick = (0, _react.useCallback)(() => {
onUnsetClick(fieldName);
}, [fieldName, onUnsetClick]);
return /*#__PURE__*/_react.default.createElement(_ui.Card, {
as: "li",
padding: 3,
radius: 2,
shadow: 1,
tone: "caution"
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
space: 2
}, /*#__PURE__*/_react.default.createElement(_ui.Card, {
border: true,
radius: 1
}, /*#__PURE__*/_react.default.createElement(_ui.Card, {
borderBottom: true,
padding: 3
}, /*#__PURE__*/_react.default.createElement(_ui.Code, {
weight: "medium"
}, fieldName)), /*#__PURE__*/_react.default.createElement(_ui.Box, {
overflow: "auto",
padding: 3
}, /*#__PURE__*/_react.default.createElement(_ui.Code, {
language: "json"
}, JSON.stringify(value, null, 2)))), readOnly && /*#__PURE__*/_react.default.createElement(_ui.Text, {
as: "p",
muted: true,
size: 1
}, "This field is ", /*#__PURE__*/_react.default.createElement("strong", null, "read only"), " according to the document\u2019s schema and cannot be unset. If you want to be able to unset this in Studio, make sure you remove the", ' ', /*#__PURE__*/_react.default.createElement("code", null, "readOnly"), " field from the enclosing type in the schema."), !readOnly && /*#__PURE__*/_react.default.createElement(_ui.Button, {
icon: _icons.TrashIcon,
onClick: handleUnsetClick,
tone: "critical",
text: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "Remove field")
})));
}