@rjsf/core 5.1.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('@rjsf/utils'), require('lodash-es/get'), require('lodash-es/isEmpty'), require('lodash-es/pick'), require('lodash-es/toPath'), require('lodash-es/isObject'), require('lodash-es/set'), require('nanoid'), require('lodash-es/omit'), require('lodash-es/has'), require('lodash-es/unset')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'react', '@rjsf/utils', 'lodash-es/get', 'lodash-es/isEmpty', 'lodash-es/pick', 'lodash-es/toPath', 'lodash-es/isObject', 'lodash-es/set', 'nanoid', 'lodash-es/omit', 'lodash-es/has', 'lodash-es/unset'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.JSONSchemaForm = {}, global.React, global.utils, global.get, global.isEmpty, global._pick, global._toPath, global.isObject, global.set, global.nanoid, global.omit, global.has, global.unset));
5
- })(this, (function (exports, React, utils, get, isEmpty, _pick, _toPath, isObject, set, nanoid, omit, has, unset) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('@rjsf/utils'), require('lodash-es/get'), require('lodash-es/isEmpty'), require('lodash-es/pick'), require('lodash-es/toPath'), require('lodash-es/isObject'), require('lodash-es/set'), require('nanoid'), require('lodash-es/omit'), require('lodash-es/has'), require('lodash-es/unset'), require('markdown-to-jsx')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'react', '@rjsf/utils', 'lodash-es/get', 'lodash-es/isEmpty', 'lodash-es/pick', 'lodash-es/toPath', 'lodash-es/isObject', 'lodash-es/set', 'nanoid', 'lodash-es/omit', 'lodash-es/has', 'lodash-es/unset', 'markdown-to-jsx'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.JSONSchemaForm = {}, global.React, global.utils, global.get, global.isEmpty, global._pick, global._toPath, global.isObject, global.set, global.nanoid, global.omit, global.has, global.unset, global.Markdown));
5
+ })(this, (function (exports, React, utils, get, isEmpty, _pick, _toPath, isObject, set, nanoid, omit, has, unset, Markdown) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -16,6 +16,7 @@
16
16
  var omit__default = /*#__PURE__*/_interopDefaultLegacy(omit);
17
17
  var has__default = /*#__PURE__*/_interopDefaultLegacy(has);
18
18
  var unset__default = /*#__PURE__*/_interopDefaultLegacy(unset);
19
+ var Markdown__default = /*#__PURE__*/_interopDefaultLegacy(Markdown);
19
20
 
20
21
  function _defineProperties(target, props) {
21
22
  for (var i = 0; i < props.length; i++) {
@@ -195,7 +196,7 @@
195
196
  onChange = _this$props3.onChange,
196
197
  errorSchema = _this$props3.errorSchema;
197
198
  var newErrorSchema;
198
- if (_this.props.errorSchema) {
199
+ if (errorSchema) {
199
200
  newErrorSchema = {};
200
201
  for (var idx in errorSchema) {
201
202
  var i = parseInt(idx);
@@ -372,14 +373,15 @@
372
373
  uiSchema = _this$props7.uiSchema,
373
374
  idSchema = _this$props7.idSchema,
374
375
  registry = _this$props7.registry;
375
- var schemaUtils = registry.schemaUtils;
376
+ var schemaUtils = registry.schemaUtils,
377
+ translateString = registry.translateString;
376
378
  if (!(utils.ITEMS_KEY in schema)) {
377
379
  var uiOptions = utils.getUiOptions(uiSchema);
378
380
  var UnsupportedFieldTemplate = utils.getTemplate("UnsupportedFieldTemplate", registry, uiOptions);
379
381
  return /*#__PURE__*/React__default["default"].createElement(UnsupportedFieldTemplate, {
380
382
  schema: schema,
381
383
  idSchema: idSchema,
382
- reason: "Missing items definition",
384
+ reason: translateString(utils.TranslatableString.MissingItems),
383
385
  registry: registry
384
386
  });
385
387
  }
@@ -836,8 +838,11 @@
836
838
  _createClass(ArrayField, [{
837
839
  key: "itemTitle",
838
840
  get: function get() {
839
- var schema = this.props.schema;
840
- return get__default["default"](schema, [utils.ITEMS_KEY, "title"], get__default["default"](schema, [utils.ITEMS_KEY, "description"], "Item"));
841
+ var _this$props14 = this.props,
842
+ schema = _this$props14.schema,
843
+ registry = _this$props14.registry;
844
+ var translateString = registry.translateString;
845
+ return get__default["default"](schema, [utils.ITEMS_KEY, "title"], get__default["default"](schema, [utils.ITEMS_KEY, "description"], translateString(utils.TranslatableString.ArrayItemTitle)));
841
846
  }
842
847
  }]);
843
848
  return ArrayField;
@@ -866,19 +871,22 @@
866
871
  rawErrors = props.rawErrors;
867
872
  var title = schema.title;
868
873
  var widgets = registry.widgets,
869
- formContext = registry.formContext;
874
+ formContext = registry.formContext,
875
+ translateString = registry.translateString;
870
876
  var _getUiOptions = utils.getUiOptions(uiSchema),
871
877
  _getUiOptions$widget = _getUiOptions.widget,
872
878
  widget = _getUiOptions$widget === void 0 ? "checkbox" : _getUiOptions$widget,
873
879
  options = _objectWithoutPropertiesLoose(_getUiOptions, _excluded$8);
874
880
  var Widget = utils.getWidget(schema, widget, widgets);
881
+ var yes = translateString(utils.TranslatableString.YesLabel);
882
+ var no = translateString(utils.TranslatableString.NoLabel);
875
883
  var enumOptions;
876
884
  if (Array.isArray(schema.oneOf)) {
877
885
  enumOptions = utils.optionsList({
878
886
  oneOf: schema.oneOf.map(function (option) {
879
887
  if (isObject__default["default"](option)) {
880
888
  return _extends({}, option, {
881
- title: option.title || (option["const"] === true ? "Yes" : "No")
889
+ title: option.title || (option["const"] === true ? yes : no)
882
890
  });
883
891
  }
884
892
  return undefined;
@@ -896,10 +904,10 @@
896
904
  })) {
897
905
  enumOptions = [{
898
906
  value: enums[0],
899
- label: enums[0] ? "Yes" : "No"
907
+ label: enums[0] ? yes : no
900
908
  }, {
901
909
  value: enums[1],
902
- label: enums[1] ? "Yes" : "No"
910
+ label: enums[1] ? yes : no
903
911
  }];
904
912
  } else {
905
913
  enumOptions = utils.optionsList({
@@ -932,9 +940,6 @@
932
940
  }
933
941
 
934
942
  var _excluded$7 = ["widget", "placeholder", "autofocus", "autocomplete", "title"];
935
- /** The prefix used when a oneOf option does not have a title
936
- */
937
- var UNKNOWN_OPTION_PREFIX = "Option";
938
943
  /** The `AnyOfField` component is used to render a field in the schema that is an `anyOf`, `allOf` or `oneOf`. It tracks
939
944
  * the currently selected option and cleans up any irrelevant data in `formData`.
940
945
  *
@@ -1073,7 +1078,8 @@
1073
1078
  schema = _this$props5.schema,
1074
1079
  uiSchema = _this$props5.uiSchema;
1075
1080
  var widgets = registry.widgets,
1076
- fields = registry.fields;
1081
+ fields = registry.fields,
1082
+ translateString = registry.translateString;
1077
1083
  var _SchemaField = fields.SchemaField;
1078
1084
  var _this$state2 = this.state,
1079
1085
  selectedOption = _this$state2.selectedOption,
@@ -1101,10 +1107,11 @@
1101
1107
  type: baseType
1102
1108
  });
1103
1109
  }
1104
- var optionLabel = title ? title + " " + UNKNOWN_OPTION_PREFIX.toLowerCase() : UNKNOWN_OPTION_PREFIX;
1110
+ var translateEnum = title ? utils.TranslatableString.TitleOptionPrefix : utils.TranslatableString.OptionPrefix;
1111
+ var translateParams = title ? [title] : [];
1105
1112
  var enumOptions = retrievedOptions.map(function (opt, index) {
1106
1113
  return {
1107
- label: opt.title || optionLabel + " " + (index + 1),
1114
+ label: opt.title || translateString(translateEnum, translateParams.concat(String(index + 1))),
1108
1115
  value: index
1109
1116
  };
1110
1117
  });
@@ -1359,9 +1366,8 @@
1359
1366
  * @param type - The type of the new additional schema property
1360
1367
  */
1361
1368
  _proto.getDefaultValue = function getDefaultValue(type) {
1369
+ var translateString = this.props.registry.translateString;
1362
1370
  switch (type) {
1363
- case "string":
1364
- return "New Value";
1365
1371
  case "array":
1366
1372
  return [];
1367
1373
  case "boolean":
@@ -1372,9 +1378,10 @@
1372
1378
  return 0;
1373
1379
  case "object":
1374
1380
  return {};
1381
+ case "string":
1375
1382
  default:
1376
1383
  // We don't have a datatype for some reason (perhaps additionalProperties was true)
1377
- return "New Value";
1384
+ return translateString(utils.TranslatableString.NewStringDefault);
1378
1385
  }
1379
1386
  }
1380
1387
  /** Handles the adding of a new additional property on the given `schema`. Calls the `onChange` callback once the new
@@ -1508,7 +1515,8 @@
1508
1515
  */
1509
1516
  function getFieldComponent(schema, uiOptions, idSchema, registry) {
1510
1517
  var field = uiOptions.field;
1511
- var fields = registry.fields;
1518
+ var fields = registry.fields,
1519
+ translateString = registry.translateString;
1512
1520
  if (typeof field === "function") {
1513
1521
  return field;
1514
1522
  }
@@ -1530,7 +1538,7 @@
1530
1538
  return /*#__PURE__*/React__default["default"].createElement(UnsupportedFieldTemplate, {
1531
1539
  schema: schema,
1532
1540
  idSchema: idSchema,
1533
- reason: "Unknown field type " + schema.type,
1541
+ reason: translateString(utils.TranslatableString.UnknownFieldType, [String(schema.type)]),
1534
1542
  registry: registry
1535
1543
  });
1536
1544
  };
@@ -2115,24 +2123,27 @@
2115
2123
  }));
2116
2124
  }
2117
2125
  function MoveDownButton(props) {
2126
+ var translateString = props.registry.translateString;
2118
2127
  return /*#__PURE__*/React__default["default"].createElement(IconButton, _extends({
2119
- title: "Move down",
2128
+ title: translateString(utils.TranslatableString.MoveDownButton),
2120
2129
  className: "array-item-move-down"
2121
2130
  }, props, {
2122
2131
  icon: "arrow-down"
2123
2132
  }));
2124
2133
  }
2125
2134
  function MoveUpButton(props) {
2135
+ var translateString = props.registry.translateString;
2126
2136
  return /*#__PURE__*/React__default["default"].createElement(IconButton, _extends({
2127
- title: "Move up",
2137
+ title: translateString(utils.TranslatableString.MoveUpButton),
2128
2138
  className: "array-item-move-up"
2129
2139
  }, props, {
2130
2140
  icon: "arrow-up"
2131
2141
  }));
2132
2142
  }
2133
2143
  function RemoveButton(props) {
2144
+ var translateString = props.registry.translateString;
2134
2145
  return /*#__PURE__*/React__default["default"].createElement(IconButton, _extends({
2135
- title: "Remove",
2146
+ title: translateString(utils.TranslatableString.RemoveButton),
2136
2147
  className: "array-item-remove"
2137
2148
  }, props, {
2138
2149
  iconType: "danger",
@@ -2147,6 +2158,7 @@
2147
2158
  onClick = _ref.onClick,
2148
2159
  disabled = _ref.disabled,
2149
2160
  registry = _ref.registry;
2161
+ var translateString = registry.translateString;
2150
2162
  return /*#__PURE__*/React__default["default"].createElement("div", {
2151
2163
  className: "row"
2152
2164
  }, /*#__PURE__*/React__default["default"].createElement("p", {
@@ -2155,7 +2167,7 @@
2155
2167
  iconType: "info",
2156
2168
  icon: "plus",
2157
2169
  className: "btn-add col-xs-12",
2158
- title: "Add",
2170
+ title: translateString(utils.TranslatableString.AddButton),
2159
2171
  onClick: onClick,
2160
2172
  disabled: disabled,
2161
2173
  registry: registry
@@ -2200,14 +2212,16 @@
2200
2212
  * @param props - The `ErrorListProps` for this component
2201
2213
  */
2202
2214
  function ErrorList(_ref) {
2203
- var errors = _ref.errors;
2215
+ var errors = _ref.errors,
2216
+ registry = _ref.registry;
2217
+ var translateString = registry.translateString;
2204
2218
  return /*#__PURE__*/React__default["default"].createElement("div", {
2205
2219
  className: "panel panel-danger errors"
2206
2220
  }, /*#__PURE__*/React__default["default"].createElement("div", {
2207
2221
  className: "panel-heading"
2208
2222
  }, /*#__PURE__*/React__default["default"].createElement("h3", {
2209
2223
  className: "panel-title"
2210
- }, "Errors")), /*#__PURE__*/React__default["default"].createElement("ul", {
2224
+ }, translateString(utils.TranslatableString.ErrorsLabel))), /*#__PURE__*/React__default["default"].createElement("ul", {
2211
2225
  className: "list-group"
2212
2226
  }, errors.map(function (error, i) {
2213
2227
  return /*#__PURE__*/React__default["default"].createElement("li", {
@@ -2390,10 +2404,22 @@
2390
2404
  function UnsupportedField(props) {
2391
2405
  var schema = props.schema,
2392
2406
  idSchema = props.idSchema,
2393
- reason = props.reason;
2407
+ reason = props.reason,
2408
+ registry = props.registry;
2409
+ var translateString = registry.translateString;
2410
+ var translateEnum = utils.TranslatableString.UnsupportedField;
2411
+ var translateParams = [];
2412
+ if (idSchema && idSchema.$id) {
2413
+ translateEnum = utils.TranslatableString.UnsupportedFieldWithId;
2414
+ translateParams.push(idSchema.$id);
2415
+ }
2416
+ if (reason) {
2417
+ translateEnum = translateEnum === utils.TranslatableString.UnsupportedField ? utils.TranslatableString.UnsupportedFieldWithReason : utils.TranslatableString.UnsupportedFieldWithIdAndReason;
2418
+ translateParams.push(reason);
2419
+ }
2394
2420
  return /*#__PURE__*/React__default["default"].createElement("div", {
2395
2421
  className: "unsupported-field"
2396
- }, /*#__PURE__*/React__default["default"].createElement("p", null, "Unsupported field schema", idSchema && idSchema.$id && /*#__PURE__*/React__default["default"].createElement("span", null, " for", " field ", /*#__PURE__*/React__default["default"].createElement("code", null, idSchema.$id)), reason && /*#__PURE__*/React__default["default"].createElement("em", null, ": ", reason), "."), schema && /*#__PURE__*/React__default["default"].createElement("pre", null, JSON.stringify(schema, null, 2)));
2422
+ }, /*#__PURE__*/React__default["default"].createElement("p", null, /*#__PURE__*/React__default["default"].createElement(Markdown__default["default"], null, translateString(translateEnum, translateParams))), schema && /*#__PURE__*/React__default["default"].createElement("pre", null, JSON.stringify(schema, null, 2)));
2397
2423
  }
2398
2424
 
2399
2425
  /** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are
@@ -2415,9 +2441,11 @@
2415
2441
  children = props.children,
2416
2442
  uiSchema = props.uiSchema,
2417
2443
  registry = props.registry;
2444
+ var templates = registry.templates,
2445
+ translateString = registry.translateString;
2418
2446
  // Button templates are not overridden in the uiSchema
2419
- var RemoveButton = registry.templates.ButtonTemplates.RemoveButton;
2420
- var keyLabel = label + " Key"; // i18n ?
2447
+ var RemoveButton = templates.ButtonTemplates.RemoveButton;
2448
+ var keyLabel = translateString(utils.TranslatableString.KeyLabel, [label]);
2421
2449
  var additional = (utils.ADDITIONAL_PROPERTY_FLAG in schema);
2422
2450
  if (!additional) {
2423
2451
  return /*#__PURE__*/React__default["default"].createElement("div", {
@@ -2594,6 +2622,7 @@
2594
2622
  onFocus = _ref2.onFocus,
2595
2623
  onChange = _ref2.onChange,
2596
2624
  value = _ref2.value;
2625
+ var translateString = registry.translateString;
2597
2626
  var _useReducer = React.useReducer(function (state, action) {
2598
2627
  return _extends({}, state, action);
2599
2628
  }, utils.parseDateString(value, time)),
@@ -2653,13 +2682,13 @@
2653
2682
  href: "#",
2654
2683
  className: "btn btn-info btn-now",
2655
2684
  onClick: handleSetNow
2656
- }, "Now")), (options.hideClearButton !== "undefined" ? !options.hideClearButton : true) && /*#__PURE__*/React__default["default"].createElement("li", {
2685
+ }, translateString(utils.TranslatableString.NowLabel))), (options.hideClearButton !== "undefined" ? !options.hideClearButton : true) && /*#__PURE__*/React__default["default"].createElement("li", {
2657
2686
  className: "list-inline-item"
2658
2687
  }, /*#__PURE__*/React__default["default"].createElement("a", {
2659
2688
  href: "#",
2660
2689
  className: "btn btn-warning btn-clear",
2661
2690
  onClick: handleClear
2662
- }, "Clear")));
2691
+ }, translateString(utils.TranslatableString.ClearLabel))));
2663
2692
  }
2664
2693
 
2665
2694
  var _excluded$1 = ["time"];
@@ -2912,10 +2941,12 @@
2912
2941
  return Promise.all(Array.from(files).map(processFile));
2913
2942
  }
2914
2943
  function FilesInfo(_ref) {
2915
- var filesInfo = _ref.filesInfo;
2944
+ var filesInfo = _ref.filesInfo,
2945
+ registry = _ref.registry;
2916
2946
  if (filesInfo.length === 0) {
2917
2947
  return null;
2918
2948
  }
2949
+ var translateString = registry.translateString;
2919
2950
  return /*#__PURE__*/React__default["default"].createElement("ul", {
2920
2951
  className: "file-info"
2921
2952
  }, filesInfo.map(function (fileInfo, key) {
@@ -2924,7 +2955,7 @@
2924
2955
  type = fileInfo.type;
2925
2956
  return /*#__PURE__*/React__default["default"].createElement("li", {
2926
2957
  key: key
2927
- }, /*#__PURE__*/React__default["default"].createElement("strong", null, name), " (", type, ", ", size, " bytes)");
2958
+ }, /*#__PURE__*/React__default["default"].createElement(Markdown__default["default"], null, translateString(utils.TranslatableString.FilesInfo, [name, type, String(size)])));
2928
2959
  }));
2929
2960
  }
2930
2961
  function extractFileInfo(dataURLs) {
@@ -2954,7 +2985,8 @@
2954
2985
  value = _ref2.value,
2955
2986
  _ref2$autofocus = _ref2.autofocus,
2956
2987
  autofocus = _ref2$autofocus === void 0 ? false : _ref2$autofocus,
2957
- options = _ref2.options;
2988
+ options = _ref2.options,
2989
+ registry = _ref2.registry;
2958
2990
  var extractedFilesInfo = React.useMemo(function () {
2959
2991
  return Array.isArray(value) ? extractFileInfo(value) : extractFileInfo([value]);
2960
2992
  }, [value]);
@@ -2989,7 +3021,8 @@
2989
3021
  accept: options.accept ? String(options.accept) : undefined,
2990
3022
  "aria-describedby": utils.ariaDescribedByIds(id)
2991
3023
  })), /*#__PURE__*/React__default["default"].createElement(FilesInfo, {
2992
- filesInfo: filesInfo
3024
+ filesInfo: filesInfo,
3025
+ registry: registry
2993
3026
  }));
2994
3027
  }
2995
3028
 
@@ -3301,7 +3334,8 @@
3301
3334
  templates: templates(),
3302
3335
  widgets: widgets(),
3303
3336
  rootSchema: {},
3304
- formContext: {}
3337
+ formContext: {},
3338
+ translateString: utils.englishStringTranslator
3305
3339
  };
3306
3340
  }
3307
3341
 
@@ -3629,7 +3663,8 @@
3629
3663
  errorSchema: errorSchema || {},
3630
3664
  schema: schema,
3631
3665
  uiSchema: uiSchema,
3632
- formContext: formContext
3666
+ formContext: formContext,
3667
+ registry: registry
3633
3668
  });
3634
3669
  }
3635
3670
  return null;
@@ -3642,12 +3677,14 @@
3642
3677
  /** Returns the registry for the form */
3643
3678
  _proto.getRegistry = function getRegistry() {
3644
3679
  var _this$props$templates;
3680
+ var customTranslateString = this.props.translateString;
3645
3681
  var schemaUtils = this.state.schemaUtils;
3646
3682
  var _getDefaultRegistry = getDefaultRegistry(),
3647
3683
  fields = _getDefaultRegistry.fields,
3648
3684
  templates = _getDefaultRegistry.templates,
3649
3685
  widgets = _getDefaultRegistry.widgets,
3650
- formContext = _getDefaultRegistry.formContext;
3686
+ formContext = _getDefaultRegistry.formContext,
3687
+ translateString = _getDefaultRegistry.translateString;
3651
3688
  return {
3652
3689
  fields: _extends({}, fields, this.props.fields),
3653
3690
  templates: _extends({}, templates, this.props.templates, {
@@ -3656,7 +3693,8 @@
3656
3693
  widgets: _extends({}, widgets, this.props.widgets),
3657
3694
  rootSchema: this.props.schema,
3658
3695
  formContext: this.props.formContext || formContext,
3659
- schemaUtils: schemaUtils
3696
+ schemaUtils: schemaUtils,
3697
+ translateString: customTranslateString || translateString
3660
3698
  };
3661
3699
  }
3662
3700
  /** Provides a function that can be used to programmatically submit the `Form` */;