Skip to content

Commit 2e7b9c2

Browse files
committed
grid mode & upload-editor fix break on value is object
1 parent 2ce5e8a commit 2e7b9c2

File tree

12 files changed

+291
-82
lines changed

12 files changed

+291
-82
lines changed

build/components/schema-form.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export interface ISchemaFormProps {
1515
className?: string;
1616
changeOnBlur?: boolean;
1717
collapsible?: boolean;
18+
gridMode?: boolean;
1819
componentContext?: object;
1920
schemaResolver?(address: string): object;
2021
}

build/index.es.js

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18146,23 +18146,31 @@ var utc = createCommonjsModule(function (module, exports) {
1814618146
dayjs_min.extend(customParseFormat);
1814718147
dayjs_min.extend(utc);
1814818148
var SchemaFormComponentWrapper = function (_a) {
18149-
var errors = _a.errors, caption = _a.caption, children = _a.children, schema = _a.schema, isRequired = _a.isRequired;
18149+
var errors = _a.errors, caption = _a.caption, children = _a.children, schema = _a.schema, isRequired = _a.isRequired, context = _a.context;
1815018150
var isError = errors.length > 0;
1815118151
var errorClass = isError ? "sf-has-error " : "";
18152-
var requiredClass = isRequired ? "sf-required" : "";
18152+
var requiredClass = isRequired ? "sf-required " : "";
1815318153
var outerClass = schema['className'] ? "sf-row " + schema['className'] : "sf-row";
1815418154
var outerErrorClass = schema['className'] ? "sf-row sf-error-row " + schema["className"] + "-error" : "sf-row sf-error-row";
18155+
var gridMode = context && context['gridMode'];
18156+
var innerClass = gridMode && schema['className'] ? schema["className"] + ' ' : '';
18157+
var mainField = function () { return (React.createElement(React.Fragment, null,
18158+
caption && React.createElement("label", { className: "sf-caption " + errorClass + requiredClass + innerClass },
18159+
caption,
18160+
schema['description'] && (React.createElement(React.Fragment, null,
18161+
React.createElement("br", null),
18162+
React.createElement("span", { className: "sf-description " + errorClass }, schema['description'])))),
18163+
children)); };
18164+
var errorField = function () { return (React.createElement(React.Fragment, null,
18165+
React.createElement("label", { className: "sf-caption" }),
18166+
errors.map(function (err, idx) { return (React.createElement("span", { key: idx, className: "sf-error" }, err.message)); }))); };
1815518167
return (React.createElement(React.Fragment, null,
18156-
React.createElement("div", { className: outerClass },
18157-
caption && React.createElement("label", { htmlFor: name, className: "sf-caption " + errorClass + requiredClass },
18158-
caption,
18159-
schema['description'] && (React.createElement(React.Fragment, null,
18160-
React.createElement("br", null),
18161-
React.createElement("span", { className: "sf-description " + errorClass }, schema['description'])))),
18162-
children),
18163-
isError && React.createElement("div", { className: outerErrorClass },
18164-
React.createElement("label", { className: "sf-caption" }),
18165-
errors.map(function (err, idx) { return (React.createElement("label", { key: idx, className: "sf-error", htmlFor: name }, err.message)); }))));
18168+
gridMode
18169+
? mainField()
18170+
: React.createElement("div", { className: outerClass }, mainField()),
18171+
isError && (gridMode
18172+
? errorField()
18173+
: React.createElement("div", { className: outerErrorClass }, errorField()))));
1816618174
};
1816718175
var stringFilters = {
1816818176
"html-newlines": {
@@ -18275,6 +18283,8 @@ function SchemaFormComponent(props) {
1827518283
var commonProps = __assign(__assign({}, baseProps), { value: (value || '').toString(), onChange: function () { }, onInput: handleChange });
1827618284
var selectProps = __assign(__assign({}, baseProps), { value: (value || '').toString(), onChange: handleChange });
1827718285
switch (fieldType(schema)) {
18286+
case "null":
18287+
return React.createElement(React.Fragment, null);
1827818288
case "string":
1827918289
return (React.createElement("input", __assign({}, commonProps, { value: uiValue(value), onInput: handleTextChange, type: "text", className: classes("sf-string") })));
1828018290
case "boolean":
@@ -20820,7 +20830,7 @@ function UploadEditor(props) {
2082020830
if (acceptedFiles.length === 0)
2082120831
return;
2082220832
var sendFilePromises = acceptedFiles.map(function (file) {
20823-
var absUrl = uploadContext.getFileUrl(file, path, schema).toLowerCase();
20833+
var absUrl = uploadContext.getFileUrl(file, path, schema);
2082420834
return uploadContext.sendFile(absUrl, file, function (pc) { return updateProgress(file, pc); })
2082520835
.then(function () { return encodeURI(absUrl); });
2082620836
});
@@ -28152,14 +28162,19 @@ function OneOfRadioEditor(props) {
2815228162
var readOnly = schema['readOnly'] || false;
2815328163
var baseProps = { name: name, readOnly: readOnly, onFocus: handleFocus, onBlur: handleBlur };
2815428164
var opts = oneOf && oneOf.map(function (subschema, i) { return subschema['title'] || 'option ' + i.toString(); });
28165+
var gridMode = context && context['gridMode'];
2815528166
if (!opts) {
2815628167
throw ("In schema " + JSON.stringify(schema) + ", editor: oneOfRadioEditor must be a subschema with an oneOf property");
2815728168
}
2815828169
return (React.createElement("div", { className: 'sf-row sf-schema-selector' },
2815928170
React.createElement("div", { className: classes }, opts.map(function (opt, idx) {
28160-
return React.createElement("span", { className: "sf-radio", key: opt },
28161-
React.createElement("input", __assign({}, baseProps, { id: name + '_' + idx, type: "radio", checked: idx === currentIdx, className: "sf-radio-button", onChange: handleCheckChange(idx), value: idx })),
28162-
React.createElement("label", { htmlFor: name + '_' + idx }, opt));
28171+
return React.createElement(React.Fragment, null, gridMode
28172+
? React.createElement(React.Fragment, null,
28173+
React.createElement("input", __assign({}, baseProps, { id: name + '_' + idx, type: "radio", checked: idx === currentIdx, className: "sf-radio-button", onChange: handleCheckChange(idx), value: idx })),
28174+
React.createElement("label", { htmlFor: name + '_' + idx }, opt))
28175+
: React.createElement("span", { className: "sf-radio", key: opt },
28176+
React.createElement("input", __assign({}, baseProps, { id: name + '_' + idx, type: "radio", checked: idx === currentIdx, className: "sf-radio-button", onChange: handleCheckChange(idx), value: idx })),
28177+
React.createElement("label", { htmlFor: name + '_' + idx }, opt)));
2816328178
}))));
2816428179
}
2816528180
var isError = errors.length > 0;
@@ -28171,6 +28186,7 @@ function OneOfRadioEditor(props) {
2817128186
}
2817228187

2817328188
var defaultComponentMap = {
28189+
"null": SchemaFormComponent,
2817428190
"string": SchemaFormComponent,
2817528191
"number": SchemaFormComponent,
2817628192
"enum": SchemaFormComponent,
@@ -28193,7 +28209,7 @@ var defaultContainerMap = {
2819328209
"oneOfRadio": OneOfRadioEditor
2819428210
};
2819528211
function SchemaForm(props) {
28196-
var value = props.value, schema = props.schema, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onEditor = props.onEditor, showErrors = props.showErrors, className = props.className, changeOnBlur = props.changeOnBlur, collapsible = props.collapsible, componentContext = props.componentContext, components = props.components, containers = props.containers;
28212+
var value = props.value, schema = props.schema, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onEditor = props.onEditor, showErrors = props.showErrors, className = props.className, changeOnBlur = props.changeOnBlur, collapsible = props.collapsible, gridMode = props.gridMode, componentContext = props.componentContext, components = props.components, containers = props.containers;
2819728213
var _a = useState(true), isPropsChange = _a[0], setIsPropsChange = _a[1];
2819828214
var context = {
2819928215
components: Object.assign(defaultComponentMap, components || {}),
@@ -28269,6 +28285,9 @@ function SchemaForm(props) {
2826928285
if (schema && schema['currencySymbol']) {
2827028286
context.componentContext = __assign(__assign({}, (context.componentContext || {})), { currencySymbol: schema['currencySymbol'] });
2827128287
}
28288+
if (gridMode !== undefined) {
28289+
context.componentContext = __assign(__assign({}, (context.componentContext || {})), { gridMode: gridMode });
28290+
}
2827228291
//console.log('FORM rendering ' + JSON.stringify(currentValue));
2827328292
if (!schema) {
2827428293
return (React.createElement(React.Fragment, null));

build/index.es.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/index.js

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18153,23 +18153,31 @@ var utc = createCommonjsModule(function (module, exports) {
1815318153
dayjs_min.extend(customParseFormat);
1815418154
dayjs_min.extend(utc);
1815518155
var SchemaFormComponentWrapper = function (_a) {
18156-
var errors = _a.errors, caption = _a.caption, children = _a.children, schema = _a.schema, isRequired = _a.isRequired;
18156+
var errors = _a.errors, caption = _a.caption, children = _a.children, schema = _a.schema, isRequired = _a.isRequired, context = _a.context;
1815718157
var isError = errors.length > 0;
1815818158
var errorClass = isError ? "sf-has-error " : "";
18159-
var requiredClass = isRequired ? "sf-required" : "";
18159+
var requiredClass = isRequired ? "sf-required " : "";
1816018160
var outerClass = schema['className'] ? "sf-row " + schema['className'] : "sf-row";
1816118161
var outerErrorClass = schema['className'] ? "sf-row sf-error-row " + schema["className"] + "-error" : "sf-row sf-error-row";
18162+
var gridMode = context && context['gridMode'];
18163+
var innerClass = gridMode && schema['className'] ? schema["className"] + ' ' : '';
18164+
var mainField = function () { return (React__default.createElement(React__default.Fragment, null,
18165+
caption && React__default.createElement("label", { className: "sf-caption " + errorClass + requiredClass + innerClass },
18166+
caption,
18167+
schema['description'] && (React__default.createElement(React__default.Fragment, null,
18168+
React__default.createElement("br", null),
18169+
React__default.createElement("span", { className: "sf-description " + errorClass }, schema['description'])))),
18170+
children)); };
18171+
var errorField = function () { return (React__default.createElement(React__default.Fragment, null,
18172+
React__default.createElement("label", { className: "sf-caption" }),
18173+
errors.map(function (err, idx) { return (React__default.createElement("span", { key: idx, className: "sf-error" }, err.message)); }))); };
1816218174
return (React__default.createElement(React__default.Fragment, null,
18163-
React__default.createElement("div", { className: outerClass },
18164-
caption && React__default.createElement("label", { htmlFor: name, className: "sf-caption " + errorClass + requiredClass },
18165-
caption,
18166-
schema['description'] && (React__default.createElement(React__default.Fragment, null,
18167-
React__default.createElement("br", null),
18168-
React__default.createElement("span", { className: "sf-description " + errorClass }, schema['description'])))),
18169-
children),
18170-
isError && React__default.createElement("div", { className: outerErrorClass },
18171-
React__default.createElement("label", { className: "sf-caption" }),
18172-
errors.map(function (err, idx) { return (React__default.createElement("label", { key: idx, className: "sf-error", htmlFor: name }, err.message)); }))));
18175+
gridMode
18176+
? mainField()
18177+
: React__default.createElement("div", { className: outerClass }, mainField()),
18178+
isError && (gridMode
18179+
? errorField()
18180+
: React__default.createElement("div", { className: outerErrorClass }, errorField()))));
1817318181
};
1817418182
var stringFilters = {
1817518183
"html-newlines": {
@@ -18282,6 +18290,8 @@ function SchemaFormComponent(props) {
1828218290
var commonProps = __assign(__assign({}, baseProps), { value: (value || '').toString(), onChange: function () { }, onInput: handleChange });
1828318291
var selectProps = __assign(__assign({}, baseProps), { value: (value || '').toString(), onChange: handleChange });
1828418292
switch (fieldType(schema)) {
18293+
case "null":
18294+
return React__default.createElement(React__default.Fragment, null);
1828518295
case "string":
1828618296
return (React__default.createElement("input", __assign({}, commonProps, { value: uiValue(value), onInput: handleTextChange, type: "text", className: classes("sf-string") })));
1828718297
case "boolean":
@@ -20827,7 +20837,7 @@ function UploadEditor(props) {
2082720837
if (acceptedFiles.length === 0)
2082820838
return;
2082920839
var sendFilePromises = acceptedFiles.map(function (file) {
20830-
var absUrl = uploadContext.getFileUrl(file, path, schema).toLowerCase();
20840+
var absUrl = uploadContext.getFileUrl(file, path, schema);
2083120841
return uploadContext.sendFile(absUrl, file, function (pc) { return updateProgress(file, pc); })
2083220842
.then(function () { return encodeURI(absUrl); });
2083320843
});
@@ -28159,14 +28169,19 @@ function OneOfRadioEditor(props) {
2815928169
var readOnly = schema['readOnly'] || false;
2816028170
var baseProps = { name: name, readOnly: readOnly, onFocus: handleFocus, onBlur: handleBlur };
2816128171
var opts = oneOf && oneOf.map(function (subschema, i) { return subschema['title'] || 'option ' + i.toString(); });
28172+
var gridMode = context && context['gridMode'];
2816228173
if (!opts) {
2816328174
throw ("In schema " + JSON.stringify(schema) + ", editor: oneOfRadioEditor must be a subschema with an oneOf property");
2816428175
}
2816528176
return (React__default.createElement("div", { className: 'sf-row sf-schema-selector' },
2816628177
React__default.createElement("div", { className: classes }, opts.map(function (opt, idx) {
28167-
return React__default.createElement("span", { className: "sf-radio", key: opt },
28168-
React__default.createElement("input", __assign({}, baseProps, { id: name + '_' + idx, type: "radio", checked: idx === currentIdx, className: "sf-radio-button", onChange: handleCheckChange(idx), value: idx })),
28169-
React__default.createElement("label", { htmlFor: name + '_' + idx }, opt));
28178+
return React__default.createElement(React__default.Fragment, null, gridMode
28179+
? React__default.createElement(React__default.Fragment, null,
28180+
React__default.createElement("input", __assign({}, baseProps, { id: name + '_' + idx, type: "radio", checked: idx === currentIdx, className: "sf-radio-button", onChange: handleCheckChange(idx), value: idx })),
28181+
React__default.createElement("label", { htmlFor: name + '_' + idx }, opt))
28182+
: React__default.createElement("span", { className: "sf-radio", key: opt },
28183+
React__default.createElement("input", __assign({}, baseProps, { id: name + '_' + idx, type: "radio", checked: idx === currentIdx, className: "sf-radio-button", onChange: handleCheckChange(idx), value: idx })),
28184+
React__default.createElement("label", { htmlFor: name + '_' + idx }, opt)));
2817028185
}))));
2817128186
}
2817228187
var isError = errors.length > 0;
@@ -28178,6 +28193,7 @@ function OneOfRadioEditor(props) {
2817828193
}
2817928194

2818028195
var defaultComponentMap = {
28196+
"null": SchemaFormComponent,
2818128197
"string": SchemaFormComponent,
2818228198
"number": SchemaFormComponent,
2818328199
"enum": SchemaFormComponent,
@@ -28200,7 +28216,7 @@ var defaultContainerMap = {
2820028216
"oneOfRadio": OneOfRadioEditor
2820128217
};
2820228218
function SchemaForm(props) {
28203-
var value = props.value, schema = props.schema, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onEditor = props.onEditor, showErrors = props.showErrors, className = props.className, changeOnBlur = props.changeOnBlur, collapsible = props.collapsible, componentContext = props.componentContext, components = props.components, containers = props.containers;
28219+
var value = props.value, schema = props.schema, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onEditor = props.onEditor, showErrors = props.showErrors, className = props.className, changeOnBlur = props.changeOnBlur, collapsible = props.collapsible, gridMode = props.gridMode, componentContext = props.componentContext, components = props.components, containers = props.containers;
2820428220
var _a = React.useState(true), isPropsChange = _a[0], setIsPropsChange = _a[1];
2820528221
var context = {
2820628222
components: Object.assign(defaultComponentMap, components || {}),
@@ -28276,6 +28292,9 @@ function SchemaForm(props) {
2827628292
if (schema && schema['currencySymbol']) {
2827728293
context.componentContext = __assign(__assign({}, (context.componentContext || {})), { currencySymbol: schema['currencySymbol'] });
2827828294
}
28295+
if (gridMode !== undefined) {
28296+
context.componentContext = __assign(__assign({}, (context.componentContext || {})), { gridMode: gridMode });
28297+
}
2827928298
//console.log('FORM rendering ' + JSON.stringify(currentValue));
2828028299
if (!schema) {
2828128300
return (React__default.createElement(React__default.Fragment, null));

build/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)