@luomus/laji-form 15.1.5 → 15.1.7

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.
Files changed (236) hide show
  1. package/lib/ApiClient.d.ts +46 -0
  2. package/lib/ApiClient.js +93 -0
  3. package/lib/Context.d.ts +8 -0
  4. package/lib/Context.js +18 -0
  5. package/lib/ReactContext.d.ts +7 -0
  6. package/lib/ReactContext.js +5 -0
  7. package/lib/components/BaseComponent.d.ts +9 -0
  8. package/lib/components/BaseComponent.js +29 -0
  9. package/lib/components/LajiForm.d.ts +221 -0
  10. package/lib/components/LajiForm.js +616 -0
  11. package/lib/components/VirtualSchemaField.d.ts +42 -0
  12. package/lib/components/VirtualSchemaField.js +74 -0
  13. package/lib/components/components.d.ts +119 -0
  14. package/lib/components/components.js +606 -0
  15. package/lib/components/fields/AnnotationField.d.ts +34 -0
  16. package/lib/components/fields/AnnotationField.js +242 -0
  17. package/lib/components/fields/AnyToBooleanField.d.ts +18 -0
  18. package/lib/components/fields/AnyToBooleanField.js +20 -0
  19. package/lib/components/fields/ArrayBulkField.d.ts +23 -0
  20. package/lib/components/fields/ArrayBulkField.js +82 -0
  21. package/lib/components/fields/ArrayCombinerField.d.ts +36 -0
  22. package/lib/components/fields/ArrayCombinerField.js +138 -0
  23. package/lib/components/fields/ArrayField.d.ts +39 -0
  24. package/lib/components/fields/ArrayField.js +148 -0
  25. package/lib/components/fields/AsArrayField.d.ts +292 -0
  26. package/lib/components/fields/AsArrayField.js +38 -0
  27. package/lib/components/fields/AudioArrayField.d.ts +22 -0
  28. package/lib/components/fields/AudioArrayField.js +100 -0
  29. package/lib/components/fields/AutoArrayField.d.ts +24 -0
  30. package/lib/components/fields/AutoArrayField.js +56 -0
  31. package/lib/components/fields/AutosuggestField.d.ts +69 -0
  32. package/lib/components/fields/AutosuggestField.js +299 -0
  33. package/lib/components/fields/CombinedValueDisplayField.d.ts +41 -0
  34. package/lib/components/fields/CombinedValueDisplayField.js +100 -0
  35. package/lib/components/fields/ConditionalOnChangeField.d.ts +42 -0
  36. package/lib/components/fields/ConditionalOnChangeField.js +107 -0
  37. package/lib/components/fields/ConditionalUiSchemaField.d.ts +123 -0
  38. package/lib/components/fields/ConditionalUiSchemaField.js +143 -0
  39. package/lib/components/fields/ContextInjectionField.d.ts +24 -0
  40. package/lib/components/fields/ContextInjectionField.js +68 -0
  41. package/lib/components/fields/DataLeakerField.d.ts +40 -0
  42. package/lib/components/fields/DataLeakerField.js +68 -0
  43. package/lib/components/fields/DefaultValueArrayField.d.ts +34 -0
  44. package/lib/components/fields/DefaultValueArrayField.js +59 -0
  45. package/lib/components/fields/DependentBooleanField.d.ts +38 -0
  46. package/lib/components/fields/DependentBooleanField.js +87 -0
  47. package/lib/components/fields/DependentDisableField.d.ts +35 -0
  48. package/lib/components/fields/DependentDisableField.js +71 -0
  49. package/lib/components/fields/EnumRangeArrayField.d.ts +27 -0
  50. package/lib/components/fields/EnumRangeArrayField.js +115 -0
  51. package/lib/components/fields/ExtraLabelRowField.d.ts +38 -0
  52. package/lib/components/fields/ExtraLabelRowField.js +100 -0
  53. package/lib/components/fields/FakePropertyField.d.ts +18 -0
  54. package/lib/components/fields/FakePropertyField.js +48 -0
  55. package/lib/components/fields/FilterArrayField.d.ts +73 -0
  56. package/lib/components/fields/FilterArrayField.js +121 -0
  57. package/lib/components/fields/FlatField.d.ts +29 -0
  58. package/lib/components/fields/FlatField.js +171 -0
  59. package/lib/components/fields/GeocoderField.d.ts +47 -0
  60. package/lib/components/fields/GeocoderField.js +372 -0
  61. package/lib/components/fields/GridLayoutField.d.ts +18 -0
  62. package/lib/components/fields/GridLayoutField.js +32 -0
  63. package/lib/components/fields/HiddenField.d.ts +10 -0
  64. package/lib/components/fields/HiddenField.js +11 -0
  65. package/lib/components/fields/ImageArrayField.d.ts +172 -0
  66. package/lib/components/fields/ImageArrayField.js +699 -0
  67. package/lib/components/fields/ImageDisplayField.d.ts +18 -0
  68. package/lib/components/fields/ImageDisplayField.js +44 -0
  69. package/lib/components/fields/InitiallyHiddenField.d.ts +21 -0
  70. package/lib/components/fields/InitiallyHiddenField.js +58 -0
  71. package/lib/components/fields/InjectDefaultValueField.d.ts +37 -0
  72. package/lib/components/fields/InjectDefaultValueField.js +68 -0
  73. package/lib/components/fields/InjectField.d.ts +46 -0
  74. package/lib/components/fields/InjectField.js +88 -0
  75. package/lib/components/fields/InputWithDefaultValueButtonField.d.ts +25 -0
  76. package/lib/components/fields/InputWithDefaultValueButtonField.js +61 -0
  77. package/lib/components/fields/LocalityField.d.ts +22 -0
  78. package/lib/components/fields/LocalityField.js +94 -0
  79. package/lib/components/fields/LocationChooserField.d.ts +27 -0
  80. package/lib/components/fields/LocationChooserField.js +440 -0
  81. package/lib/components/fields/MapArrayField.d.ts +78 -0
  82. package/lib/components/fields/MapArrayField.js +1783 -0
  83. package/lib/components/fields/MapField.d.ts +48 -0
  84. package/lib/components/fields/MapField.js +434 -0
  85. package/lib/components/fields/MultiAnyToBooleanField.d.ts +25 -0
  86. package/lib/components/fields/MultiAnyToBooleanField.js +100 -0
  87. package/lib/components/fields/MultiArrayField.d.ts +53 -0
  88. package/lib/components/fields/MultiArrayField.js +224 -0
  89. package/lib/components/fields/MultiLanguageField.d.ts +13 -0
  90. package/lib/components/fields/MultiLanguageField.js +52 -0
  91. package/lib/components/fields/MultiTagArrayField.d.ts +36 -0
  92. package/lib/components/fields/MultiTagArrayField.js +142 -0
  93. package/lib/components/fields/NamedPlaceChooserField.d.ts +29 -0
  94. package/lib/components/fields/NamedPlaceChooserField.js +380 -0
  95. package/lib/components/fields/NamedPlaceSaverField.d.ts +29 -0
  96. package/lib/components/fields/NamedPlaceSaverField.js +237 -0
  97. package/lib/components/fields/NestField.d.ts +148 -0
  98. package/lib/components/fields/NestField.js +289 -0
  99. package/lib/components/fields/ObjectField.d.ts +2 -0
  100. package/lib/components/fields/ObjectField.js +119 -0
  101. package/lib/components/fields/PdfArrayField.d.ts +21 -0
  102. package/lib/components/fields/PdfArrayField.js +40 -0
  103. package/lib/components/fields/PrefillingArrayField.d.ts +22 -0
  104. package/lib/components/fields/PrefillingArrayField.js +65 -0
  105. package/lib/components/fields/SchemaField.d.ts +7 -0
  106. package/lib/components/fields/SchemaField.js +109 -0
  107. package/lib/components/fields/ScopeField.d.ts +85 -0
  108. package/lib/components/fields/ScopeField.js +521 -0
  109. package/lib/components/fields/SectionArrayField.d.ts +38 -0
  110. package/lib/components/fields/SectionArrayField.js +618 -0
  111. package/lib/components/fields/SelectTreeField.d.ts +39 -0
  112. package/lib/components/fields/SelectTreeField.js +143 -0
  113. package/lib/components/fields/SingleActiveArrayField.d.ts +49 -0
  114. package/lib/components/fields/SingleActiveArrayField.js +974 -0
  115. package/lib/components/fields/SingleItemArrayField.d.ts +15 -0
  116. package/lib/components/fields/SingleItemArrayField.js +60 -0
  117. package/lib/components/fields/SortArrayField.d.ts +73 -0
  118. package/lib/components/fields/SortArrayField.js +351 -0
  119. package/lib/components/fields/SplitField.d.ts +28 -0
  120. package/lib/components/fields/SplitField.js +65 -0
  121. package/lib/components/fields/StringToArrayField.d.ts +24 -0
  122. package/lib/components/fields/StringToArrayField.js +48 -0
  123. package/lib/components/fields/SumField.d.ts +35 -0
  124. package/lib/components/fields/SumField.js +83 -0
  125. package/lib/components/fields/TableField.d.ts +18 -0
  126. package/lib/components/fields/TableField.js +136 -0
  127. package/lib/components/fields/TagArrayField.d.ts +38 -0
  128. package/lib/components/fields/TagArrayField.js +128 -0
  129. package/lib/components/fields/ToggleAdditionalArrayFieldsField.d.ts +26 -0
  130. package/lib/components/fields/ToggleAdditionalArrayFieldsField.js +81 -0
  131. package/lib/components/fields/UiFieldApplierField.d.ts +30 -0
  132. package/lib/components/fields/UiFieldApplierField.js +106 -0
  133. package/lib/components/fields/UiFieldMapperArrayField.d.ts +42 -0
  134. package/lib/components/fields/UiFieldMapperArrayField.js +121 -0
  135. package/lib/components/fields/UnitCountShorthandField.d.ts +22 -0
  136. package/lib/components/fields/UnitCountShorthandField.js +149 -0
  137. package/lib/components/fields/UnitListShorthandArrayField.d.ts +26 -0
  138. package/lib/components/fields/UnitListShorthandArrayField.js +108 -0
  139. package/lib/components/fields/UnitShorthandField.d.ts +32 -0
  140. package/lib/components/fields/UnitShorthandField.js +220 -0
  141. package/lib/components/templates/ArrayFieldTemplate.d.ts +85 -0
  142. package/lib/components/templates/ArrayFieldTemplate.js +416 -0
  143. package/lib/components/templates/BaseInputTemplate.d.ts +11 -0
  144. package/lib/components/templates/BaseInputTemplate.js +80 -0
  145. package/lib/components/templates/DescriptionField.d.ts +1 -0
  146. package/lib/components/templates/DescriptionField.js +37 -0
  147. package/lib/components/templates/ErrorListTemplate.d.ts +9 -0
  148. package/lib/components/templates/ErrorListTemplate.js +95 -0
  149. package/lib/components/templates/FieldTemplate.d.ts +6 -0
  150. package/lib/components/templates/FieldTemplate.js +112 -0
  151. package/lib/components/templates/ObjectFieldTemplate.d.ts +7 -0
  152. package/lib/components/templates/ObjectFieldTemplate.js +66 -0
  153. package/lib/components/templates/TitleField.d.ts +9 -0
  154. package/lib/components/templates/TitleField.js +51 -0
  155. package/lib/components/widgets/AnyToBooleanWidget.d.ts +20 -0
  156. package/lib/components/widgets/AnyToBooleanWidget.js +49 -0
  157. package/lib/components/widgets/AutosuggestWidget.d.ts +66 -0
  158. package/lib/components/widgets/AutosuggestWidget.js +1127 -0
  159. package/lib/components/widgets/CheckboxWidget.d.ts +37 -0
  160. package/lib/components/widgets/CheckboxWidget.js +139 -0
  161. package/lib/components/widgets/DateTimeWidget.d.ts +62 -0
  162. package/lib/components/widgets/DateTimeWidget.js +251 -0
  163. package/lib/components/widgets/DateWidget.d.ts +23 -0
  164. package/lib/components/widgets/DateWidget.js +41 -0
  165. package/lib/components/widgets/HiddenWidget.d.ts +15 -0
  166. package/lib/components/widgets/HiddenWidget.js +19 -0
  167. package/lib/components/widgets/ImageSelectWidget.d.ts +14 -0
  168. package/lib/components/widgets/ImageSelectWidget.js +57 -0
  169. package/lib/components/widgets/InformalTaxonGroupChooserWidget.d.ts +43 -0
  170. package/lib/components/widgets/InformalTaxonGroupChooserWidget.js +237 -0
  171. package/lib/components/widgets/InputGroupWidget.d.ts +21 -0
  172. package/lib/components/widgets/InputGroupWidget.js +36 -0
  173. package/lib/components/widgets/InputWithDefaultValueButtonWidget.d.ts +21 -0
  174. package/lib/components/widgets/InputWithDefaultValueButtonWidget.js +47 -0
  175. package/lib/components/widgets/NumberWidget.d.ts +13 -0
  176. package/lib/components/widgets/NumberWidget.js +21 -0
  177. package/lib/components/widgets/PlainTextWidget.d.ts +12 -0
  178. package/lib/components/widgets/PlainTextWidget.js +24 -0
  179. package/lib/components/widgets/SelectWidget.d.ts +52 -0
  180. package/lib/components/widgets/SelectWidget.js +158 -0
  181. package/lib/components/widgets/SeparatedDateTimeWidget.d.ts +19 -0
  182. package/lib/components/widgets/SeparatedDateTimeWidget.js +59 -0
  183. package/lib/components/widgets/TaxonImageWidget.d.ts +13 -0
  184. package/lib/components/widgets/TaxonImageWidget.js +30 -0
  185. package/lib/components/widgets/TextSelectWidget.d.ts +25 -0
  186. package/lib/components/widgets/TextSelectWidget.js +94 -0
  187. package/lib/components/widgets/TextareaWidget.d.ts +32 -0
  188. package/lib/components/widgets/TextareaWidget.js +87 -0
  189. package/lib/components/widgets/TimeWidget.d.ts +11 -0
  190. package/lib/components/widgets/TimeWidget.js +19 -0
  191. package/lib/components/widgets/URLWidget.d.ts +14 -0
  192. package/lib/components/widgets/URLWidget.js +12 -0
  193. package/lib/components/widgets/UpperCaseWidget.d.ts +13 -0
  194. package/lib/components/widgets/UpperCaseWidget.js +21 -0
  195. package/lib/index.d.ts +20 -0
  196. package/lib/index.js +50 -0
  197. package/lib/services/blocker-service.d.ts +11 -0
  198. package/lib/services/blocker-service.js +55 -0
  199. package/lib/services/custom-event-service.d.ts +17 -0
  200. package/lib/services/custom-event-service.js +35 -0
  201. package/lib/services/dom-id-service.d.ts +8 -0
  202. package/lib/services/dom-id-service.js +30 -0
  203. package/lib/services/focus-service.d.ts +13 -0
  204. package/lib/services/focus-service.js +60 -0
  205. package/lib/services/id-service.d.ts +22 -0
  206. package/lib/services/id-service.js +130 -0
  207. package/lib/services/key-handler-service.d.ts +56 -0
  208. package/lib/services/key-handler-service.js +184 -0
  209. package/lib/services/root-instance-service.d.ts +25 -0
  210. package/lib/services/root-instance-service.js +49 -0
  211. package/lib/services/settings-service.d.ts +34 -0
  212. package/lib/services/settings-service.js +154 -0
  213. package/lib/services/singleton-map-service.d.ts +23 -0
  214. package/lib/services/singleton-map-service.js +44 -0
  215. package/lib/services/submit-hook-service.d.ts +24 -0
  216. package/lib/services/submit-hook-service.js +73 -0
  217. package/lib/styles.d.ts +1 -0
  218. package/lib/styles.js +4 -0
  219. package/lib/themes/bs3.d.ts +3 -0
  220. package/lib/themes/bs3.js +133 -0
  221. package/lib/themes/bs5.d.ts +3 -0
  222. package/lib/themes/bs5.js +111 -0
  223. package/lib/themes/glyphicon-fa-mapping.d.ts +3 -0
  224. package/lib/themes/glyphicon-fa-mapping.js +271 -0
  225. package/lib/themes/stub.d.ts +3 -0
  226. package/lib/themes/stub.js +82 -0
  227. package/lib/themes/theme.d.ts +233 -0
  228. package/lib/themes/theme.js +2 -0
  229. package/lib/translations.json +847 -0
  230. package/lib/utils.d.ts +167 -0
  231. package/lib/utils.js +1185 -0
  232. package/lib/validation.d.ts +7 -0
  233. package/lib/validation.js +141 -0
  234. package/package.json +2 -2
  235. package/test-export/test-utils.d.ts +3 -2
  236. package/test-export/test-utils.js +14 -13
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const React = require("react");
4
+ const Context_1 = require("../../Context");
5
+ const components_1 = require("../components");
6
+ const utils_1 = require("../../utils");
7
+ class _FieldTemplate extends React.Component {
8
+ constructor(props) {
9
+ super(props);
10
+ this.canFocus = () => {
11
+ const { formContext } = this.props;
12
+ const { uiSchema = {} } = (formContext.formRef.current || { props: {} }).props;
13
+ return uiSchema.autoFocus !== false;
14
+ };
15
+ this.receiveId = (id) => {
16
+ this.setState({ id }, () => {
17
+ const { idToFocus, idToScroll } = Context_1.default(this.props.formContext.contextId);
18
+ if (this.canFocus() && idToFocus === id) {
19
+ this.props.formContext.utils.focusAndScroll(idToFocus, idToScroll);
20
+ }
21
+ });
22
+ };
23
+ if (utils_1.getUiOptions(props.uiSchema).reserveId === false) {
24
+ this.state = {};
25
+ return;
26
+ }
27
+ const id = this.props.formContext.services.DOMIds.reserve(this.props.id, this.receiveId);
28
+ if (id) {
29
+ this.state = { id };
30
+ }
31
+ else {
32
+ this.state = {};
33
+ }
34
+ }
35
+ componentDidMount() {
36
+ const { formContext } = this.props;
37
+ const contextId = formContext.contextId;
38
+ const _context = Context_1.default(contextId);
39
+ const { idToFocus, idToScroll } = _context;
40
+ if (this.canFocus() && idToFocus !== undefined && this.state.id === idToFocus) {
41
+ if (this.props.formContext.utils.focusAndScroll(idToFocus, idToScroll)) {
42
+ _context.idToFocus = undefined;
43
+ _context.idToScroll = undefined;
44
+ }
45
+ }
46
+ }
47
+ UNSAFE_componentWillReceiveProps(props) {
48
+ if (utils_1.getUiOptions(props.uiSchema).reserveId !== false && this.props.id !== props.id) {
49
+ this.props.formContext.services.DOMIds.release(this.props.id, this.receiveId);
50
+ const id = props.formContext.services.DOMIds.reserve(props.id, this.receiveId);
51
+ id && this.receiveId(id);
52
+ }
53
+ }
54
+ componentWillUnmount() {
55
+ if (utils_1.getUiOptions(this.props.uiSchema).reserveId === false) {
56
+ return;
57
+ }
58
+ this.props.formContext.services.DOMIds.release(this.props.id, this.receiveId);
59
+ }
60
+ render() {
61
+ const { id, classNames: _classNames, children, rawErrors, description, hidden, required, displayLabel, schema, uiSchema, label: _label, forceDisplayLabel } = this.props;
62
+ const label = "ui:title" in uiSchema
63
+ ? uiSchema["ui:title"]
64
+ : "title" in schema
65
+ ? schema.title
66
+ : _label;
67
+ if (hidden || uiSchema["ui:field"] === "HiddenField" || uiSchema["ui:widget"] === "HiddenWidget") {
68
+ return children;
69
+ }
70
+ const inlineHelp = uiSchema["ui:inlineHelp"];
71
+ const belowHelp = uiSchema["ui:belowHelp"];
72
+ const htmlId = this.state.id ? `_laji-form_${this.state.id}` : undefined;
73
+ const _displayLabel = forceDisplayLabel ||
74
+ ((schema.items && schema.items.enum && !utils_1.isMultiSelect(schema, uiSchema)) ? false : displayLabel);
75
+ let warnings = [];
76
+ const errors = (rawErrors || []).reduce((arr, err) => {
77
+ if (err.includes("[warning]")) {
78
+ warnings.push(utils_1.formatErrorMessage(err));
79
+ }
80
+ else {
81
+ arr.push(utils_1.formatErrorMessage(err));
82
+ }
83
+ return arr;
84
+ }, []);
85
+ const warningClassName = (warnings.length > 0 && errors.length === 0) && "laji-form-warning-container";
86
+ const { Label, errorsAsPopup } = this.props.formContext;
87
+ const component = (errorsComponent) => (React.createElement("div", { className: utils_1.classNames(_classNames, warningClassName), id: htmlId },
88
+ label && _displayLabel ? React.createElement(Label, { label: label, uiSchema: uiSchema, id: id, required: required || uiSchema["ui:required"], registry: this.props.registry }) : null,
89
+ _displayLabel && description ? description : null,
90
+ React.createElement("div", null,
91
+ inlineHelp ? React.createElement("div", { className: "pull-left" }, children) : children,
92
+ inlineHelp
93
+ ? (React.createElement("div", { className: "pull-left" },
94
+ React.createElement(components_1.Help, { help: inlineHelp, id: `${htmlId}-inline-help` }))) : null),
95
+ belowHelp ?
96
+ React.createElement("div", { className: "small text-muted", dangerouslySetInnerHTML: { __html: belowHelp } }) :
97
+ null,
98
+ errorsComponent));
99
+ const errorsComponent = (React.createElement(React.Fragment, null,
100
+ errors.length > 0 ?
101
+ React.createElement("ul", { id: `laji-form-error-container-${id}`, className: "laji-form-error-container" }, errors.map((error, i) => (React.createElement("li", { key: i }, error))))
102
+ : null,
103
+ warnings.length > 0 ?
104
+ React.createElement("ul", { id: `laji-form-warning-container-${id}`, className: "laji-form-warning-container" }, warnings.map((warning, i) => (React.createElement("li", { key: i }, warning))))
105
+ : null));
106
+ if (errorsAsPopup && (rawErrors || []).length) {
107
+ return React.createElement(components_1.TooltipComponent, { placement: "bottom", tooltip: errorsComponent, className: "location-chooser-errors" }, component());
108
+ }
109
+ return component(errorsComponent);
110
+ }
111
+ }
112
+ exports.default = _FieldTemplate;
@@ -0,0 +1,7 @@
1
+ export default function ObjectFieldTemplate(props: any): JSX.Element;
2
+ export function getGlyphButtons(props: any): any;
3
+ export function getObjectTemplateClassNames(props: any, buttons: any): {
4
+ containerClassName: string | undefined;
5
+ schemaClassName: string | undefined;
6
+ buttonsClassName: string | undefined;
7
+ };
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getObjectTemplateClassNames = exports.getGlyphButtons = void 0;
4
+ const React = require("react");
5
+ const utils_1 = require("@rjsf/utils");
6
+ const utils_2 = require("../../utils");
7
+ const ArrayFieldTemplate_1 = require("./ArrayFieldTemplate");
8
+ const ReactContext_1 = require("../../ReactContext");
9
+ function ObjectFieldTemplate(props) {
10
+ const TitleFieldTemplate = utils_1.getTemplate("TitleFieldTemplate", props.registry, utils_2.getUiOptions(props.uiSchema));
11
+ const DescriptionFieldTemplate = utils_1.getTemplate("DescriptionFieldTemplate", props.registry, utils_2.getUiOptions(props.uiSchema));
12
+ const { ButtonToolbar } = React.useContext(ReactContext_1.default).theme;
13
+ let buttons = getGlyphButtons(props);
14
+ const [topButtons, bottomButtons, leftButtons, rightButtons] = ["top", "bottom", "left", "right"].map(pos => {
15
+ const buttons = ArrayFieldTemplate_1.getButtonsForPosition(props, utils_2.getUiOptions(props.uiSchema).buttons, pos, "no default");
16
+ return buttons
17
+ ? (React.createElement(ButtonToolbar, { key: `buttons-${pos}` }, buttons))
18
+ : null;
19
+ });
20
+ const { containerClassName, schemaClassName, buttonsClassName } = getObjectTemplateClassNames(props, buttons);
21
+ buttons = React.createElement("div", { className: buttonsClassName }, buttons);
22
+ const titleUiSchema = Object.assign(Object.assign({}, (props.uiSchema || {})), { "_ui:renderedButtons": buttons });
23
+ return (React.createElement("div", { className: containerClassName },
24
+ React.createElement("fieldset", { className: schemaClassName },
25
+ props.title &&
26
+ React.createElement(TitleFieldTemplate, { id: `${props.idSchema.$id}__title`, title: props.title, required: props.required || props.uiSchema["ui:required"], schema: props.schema, uiSchema: titleUiSchema, registry: props.registry }),
27
+ topButtons,
28
+ props.description &&
29
+ React.createElement(DescriptionFieldTemplate, { id: `${props.idSchema.$id}__description`, description: props.description, registry: props.registry, schema: props.schema }),
30
+ leftButtons && (React.createElement("div", { className: "pull-left" }, leftButtons)),
31
+ props.properties.map(({ content }) => content),
32
+ rightButtons && (React.createElement("div", { className: "pull-right" }, rightButtons)),
33
+ bottomButtons),
34
+ !props.title && buttons ? buttons : undefined));
35
+ }
36
+ exports.default = ObjectFieldTemplate;
37
+ function getGlyphButtons(props) {
38
+ const { uiSchema } = props;
39
+ let buttons = uiSchema["ui:buttons"] || [];
40
+ const buttonDescriptions = (utils_2.getUiOptions(uiSchema).buttons || []).filter(buttonDef => !buttonDef.position);
41
+ if (buttonDescriptions) {
42
+ buttons = [
43
+ ...buttons,
44
+ ...buttonDescriptions.map(buttonDescription => ArrayFieldTemplate_1.getButton(buttonDescription, props))
45
+ ];
46
+ }
47
+ return buttons
48
+ ? props.title
49
+ ? buttons.reverse()
50
+ : buttons
51
+ : null;
52
+ }
53
+ exports.getGlyphButtons = getGlyphButtons;
54
+ function getObjectTemplateClassNames(props, buttons) {
55
+ const vertical = props.uiSchema["ui:buttonsVertical"];
56
+ let containerClassName, schemaClassName, buttonsClassName;
57
+ if (buttons && buttons.length) {
58
+ containerClassName = "laji-form-field-template-item" + (vertical ? " keep-vertical" : "");
59
+ schemaClassName = "laji-form-field-template-schema";
60
+ buttonsClassName = "laji-form-field-template-buttons";
61
+ if (props.title)
62
+ buttonsClassName += " pull-right";
63
+ }
64
+ return { containerClassName, schemaClassName, buttonsClassName };
65
+ }
66
+ exports.getObjectTemplateClassNames = getObjectTemplateClassNames;
@@ -0,0 +1,9 @@
1
+ export default TitleField;
2
+ declare function TitleField({ title, id, formData, style, uiSchema, registry }: {
3
+ title: any;
4
+ id: any;
5
+ formData: any;
6
+ style: any;
7
+ uiSchema?: {} | undefined;
8
+ registry?: {} | undefined;
9
+ }): JSX.Element | null;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const React = require("react");
4
+ const components_1 = require("../components");
5
+ const utils_1 = require("../../utils");
6
+ const Context_1 = require("../../Context");
7
+ const ReactContext_1 = require("../../ReactContext");
8
+ const TitleField = ({ title, id, formData, style, uiSchema = {}, registry = {} }) => {
9
+ const { "ui:help": help, "ui:helpHoverable": helpHoverable, "_ui:renderedButtons": buttons } = uiSchema;
10
+ const { titleClassName: className, titleFormatters = [] } = utils_1.getUiOptions(uiSchema);
11
+ const renderedFormatters = titleFormatters.map((titleFormatter) => {
12
+ const { renderer } = titleFormatter;
13
+ return _titleFormatters[renderer](Object.assign(Object.assign({}, titleFormatter), { formData }));
14
+ }).filter(i => i);
15
+ const { Tooltip } = React.useContext(ReactContext_1.default).theme;
16
+ if (renderedFormatters.length === 0 && utils_1.isEmptyString(title)) {
17
+ return null;
18
+ }
19
+ const helpComponent = help ? React.createElement(components_1.Help, null) : null;
20
+ let titleTextContent = React.createElement("span", null,
21
+ React.createElement("span", { dangerouslySetInnerHTML: { __html: title } }),
22
+ " ",
23
+ helpComponent);
24
+ if (help) {
25
+ const tooltipElem = (React.createElement(Tooltip, { id: id + "-tooltip" },
26
+ React.createElement("span", null,
27
+ React.createElement("strong", { dangerouslySetInnerHTML: { __html: title } }),
28
+ React.createElement("br", null),
29
+ React.createElement("span", { dangerouslySetInnerHTML: { __html: help } }))));
30
+ titleTextContent = (React.createElement(components_1.OverlayTrigger, { placement: "right", overlay: tooltipElem, hoverable: helpHoverable, formContext: registry.formContext }, titleTextContent));
31
+ }
32
+ return (React.createElement("legend", { className: utils_1.classNames(className, help && "has-help"), style: style },
33
+ React.createElement("span", null,
34
+ React.createElement("span", null, renderedFormatters),
35
+ " ",
36
+ titleTextContent,
37
+ " ",
38
+ buttons)));
39
+ };
40
+ exports.default = TitleField;
41
+ const _titleFormatters = {
42
+ informalTaxonGroup: ({ formData, value, renderer }) => {
43
+ const informalTaxonGroup = utils_1.parseJSONPointer(formData, value, !!"safely");
44
+ const { informalTaxonGroupsById = {} } = Context_1.default();
45
+ const name = informalTaxonGroupsById[informalTaxonGroup] ? informalTaxonGroupsById[informalTaxonGroup].name : "";
46
+ return informalTaxonGroup ? React.createElement("span", { key: renderer },
47
+ React.createElement("div", { className: `informal-group-image ${informalTaxonGroup}` }),
48
+ " ",
49
+ name) : undefined;
50
+ }
51
+ };
@@ -0,0 +1,20 @@
1
+ export function AnyToBoolean(props: any): JSX.Element;
2
+ export default _anyToBoolean;
3
+ declare function _anyToBoolean(props: any): JSX.Element;
4
+ declare namespace _anyToBoolean {
5
+ namespace propTypes {
6
+ export const uiSchema: PropTypes.Requireable<PropTypes.InferProps<{
7
+ "ui:options": PropTypes.Requireable<PropTypes.InferProps<{
8
+ trueValue: PropTypes.Validator<string | number | boolean>;
9
+ falseValue: PropTypes.Requireable<string | number | boolean>;
10
+ allowUndefined: PropTypes.Requireable<boolean>;
11
+ }>>;
12
+ }>>;
13
+ export const schema: PropTypes.Validator<PropTypes.InferProps<{
14
+ type: PropTypes.Requireable<string>;
15
+ }>>;
16
+ export { valuePropType as formData };
17
+ }
18
+ }
19
+ import * as PropTypes from "prop-types";
20
+ declare const valuePropType: PropTypes.Requireable<string | number | boolean>;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnyToBoolean = void 0;
4
+ const React = require("react");
5
+ const PropTypes = require("prop-types");
6
+ const utils_1 = require("../../utils");
7
+ const AnyToBoolean = (props) => React.createElement(_AnyToBoolean, Object.assign({}, props));
8
+ exports.AnyToBoolean = AnyToBoolean;
9
+ const _AnyToBoolean = (props) => {
10
+ const { widget } = props;
11
+ const options = utils_1.getUiOptions(widget ? props : props.uiSchema);
12
+ const { trueValue, falseValue, allowUndefined = true } = options;
13
+ const schema = Object.assign(Object.assign({}, props.schema), { type: "boolean", title: allowUndefined ? "" : props.schema.title });
14
+ const id = widget ? props.id : props.idSchema.$id;
15
+ const value = props.formContext.utils.formDataEquals(props[widget ? "value" : "formData"], trueValue, id)
16
+ ? true
17
+ : props.formContext.utils.formDataEquals(props[widget ? "value" : "formData"], falseValue, id)
18
+ ? false
19
+ : undefined;
20
+ const _onChange = props.onChange;
21
+ const onChange = React.useCallback((value) => {
22
+ const newValue = value === undefined
23
+ ? undefined
24
+ : value === true
25
+ ? trueValue
26
+ : falseValue;
27
+ _onChange(newValue);
28
+ }, [_onChange, trueValue, falseValue]);
29
+ const { CheckboxWidget } = props.registry.widgets;
30
+ const { SchemaField } = props.registry.fields;
31
+ return widget
32
+ ? (React.createElement(CheckboxWidget, Object.assign({}, props, { id: props.id, schema: schema, value: value, onChange: onChange, label: "", options: options }))) : (React.createElement(SchemaField, Object.assign({}, props, { schema: schema, uiSchema: utils_1.getInnerUiSchema(props.uiSchema), formData: value, onChange: onChange, label: "", options: options })));
33
+ };
34
+ const _anyToBoolean = (props) => React.createElement(_AnyToBoolean, Object.assign({ widget: true }, props));
35
+ const valuePropType = PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]);
36
+ _anyToBoolean.propTypes = {
37
+ uiSchema: PropTypes.shape({
38
+ "ui:options": PropTypes.shape({
39
+ trueValue: valuePropType.isRequired,
40
+ falseValue: valuePropType,
41
+ allowUndefined: PropTypes.bool
42
+ })
43
+ }),
44
+ schema: PropTypes.shape({
45
+ type: PropTypes.oneOf(["string", "number", "boolean"])
46
+ }).isRequired,
47
+ formData: valuePropType
48
+ };
49
+ exports.default = _anyToBoolean;
@@ -0,0 +1,66 @@
1
+ export default class _AutosuggestWidget extends React.Component<any, any, any> {
2
+ static propTypes: {
3
+ schema: PropTypes.Validator<PropTypes.InferProps<{
4
+ type: PropTypes.Requireable<string>;
5
+ }>>;
6
+ value: PropTypes.Requireable<string>;
7
+ };
8
+ constructor(props: any);
9
+ constructor(props: any, context: any);
10
+ formatValue(value: any, options: any, parentProps: any): JSX.Element | undefined;
11
+ }
12
+ export class Autosuggest extends React.Component<any, any, any> {
13
+ static contextType: React.Context<import("../../ReactContext").ContextProps>;
14
+ static propTypes: {
15
+ autosuggestField: PropTypes.Requireable<string>;
16
+ allowNonsuggestedValue: PropTypes.Requireable<boolean>;
17
+ onSuggestionSelected: PropTypes.Requireable<(...args: any[]) => any>;
18
+ onUnsuggestedSelected: PropTypes.Requireable<(...args: any[]) => any>;
19
+ onInputChange: PropTypes.Requireable<(...args: any[]) => any>;
20
+ uiSchema: PropTypes.Requireable<object>;
21
+ informalTaxonGroups: PropTypes.Requireable<string>;
22
+ onInformalTaxonGroupSelected: PropTypes.Requireable<(...args: any[]) => any>;
23
+ };
24
+ static defaultProps: {
25
+ allowNonsuggestedValue: boolean;
26
+ suggestionReceive: string;
27
+ };
28
+ constructor(props: any);
29
+ isValueSuggested: (props: any) => any;
30
+ wrapperRef: React.RefObject<any>;
31
+ apiClient: any;
32
+ mounted: boolean | undefined;
33
+ keyFunctions: {
34
+ autosuggestToggle: () => boolean;
35
+ };
36
+ triggerConvert: (props: any) => void;
37
+ getSuggestionValue: (suggestion: any) => any;
38
+ renderSuggestion: (suggestion: any) => JSX.Element;
39
+ selectSuggestion: (suggestion: any) => void;
40
+ selectUnsuggested: (value: any) => void;
41
+ onSuggestionSelected: (suggestion: any) => void;
42
+ onUnsuggestedSelected: (inputValue: any) => void;
43
+ findExactMatch: (suggestions: any, inputValue?: string) => any;
44
+ findTheOnlyOneMatch: (suggestions: any) => any;
45
+ findNonMatching: (suggestions: any) => any;
46
+ onInputChange: (e: any, reason: any, callback: any) => void;
47
+ onSuggestionsFetchRequested: ({ value }: {
48
+ value: any;
49
+ }, debounce?: boolean) => void;
50
+ promiseTimestamp: number | undefined;
51
+ timeout: any;
52
+ onFocus: (e: any) => void;
53
+ onBlur: (e: any) => void;
54
+ _valueForBlurAndFetch: any;
55
+ afterBlurAndFetch: (suggestions: any, callback: any) => void;
56
+ setRef: (elem: any) => void;
57
+ autosuggestRef: any;
58
+ onInformalTaxonGroupsOpened: (open: any) => void;
59
+ onInformalTaxonGroupSelected: (id: any) => void;
60
+ onInformalTaxonGroupHide: () => void;
61
+ onToggle: () => void;
62
+ isSuggested: () => any;
63
+ renderInput: (inputProps: any) => JSX.Element;
64
+ }
65
+ import * as React from "react";
66
+ import * as PropTypes from "prop-types";