@luomus/laji-form 15.1.4 → 15.1.6

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 (235) 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/patches/protractor++webdriver-manager+12.1.8.patch +0 -20395
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.arrayRulesPropType = void 0;
10
+ const React = require("react");
11
+ const PropTypes = require("prop-types");
12
+ const utils_1 = require("../../utils");
13
+ const ConditionalUiSchemaField_1 = require("./ConditionalUiSchemaField");
14
+ const BaseComponent_1 = require("../BaseComponent");
15
+ const arrayRulePropType = PropTypes.shape({
16
+ idx: PropTypes.number,
17
+ isLast: PropTypes.number,
18
+ complement: PropTypes.bool
19
+ });
20
+ exports.arrayRulesPropType = PropTypes.oneOfType([
21
+ ConditionalUiSchemaField_1.rulePropType,
22
+ arrayRulePropType,
23
+ PropTypes.arrayOf(PropTypes.oneOfType([ConditionalUiSchemaField_1.rulePropType, arrayRulePropType]))
24
+ ]);
25
+ let FilterArrayField = class FilterArrayField extends React.Component {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.getOnActiveChange = (idx, prop, callback) => {
29
+ const offset = idx === undefined
30
+ ? 0
31
+ : (idx in this.filteredToOffsets)
32
+ ? this.filteredToOffsets[idx]
33
+ : this.filteredTotal;
34
+ this.cachedOnActiveChange(idx === undefined ? undefined : idx + offset, prop, callback);
35
+ };
36
+ this.onChange = (formData) => {
37
+ this.props.onChange(Object.keys(this.filteredIdxs).sort().reduce((_formData, idx) => {
38
+ const updated = [..._formData];
39
+ updated.splice(idx, 0, this.filteredIdxs[idx]);
40
+ return updated;
41
+ }, formData));
42
+ };
43
+ }
44
+ getStateFromProps(props) {
45
+ if (props.schema.items.type !== "object") {
46
+ throw new Error("Can't use FilterArrayField if items aren't objects");
47
+ }
48
+ this.cache = this.cache || {};
49
+ const { rules, cache } = utils_1.getUiOptions(props.uiSchema);
50
+ this.filteredIdxs = {};
51
+ this.filteredToOffsets = {};
52
+ this.idxToOffsets = {};
53
+ let filteredCount = 0;
54
+ const store = (idx, item) => {
55
+ this.filteredIdxs[idx] = item;
56
+ filteredCount++;
57
+ };
58
+ const formData = (props.formData || []).filter((item, idx) => {
59
+ let passes;
60
+ if (cache) {
61
+ const { passes: _passes, cache: _cache } = utils_1.checkArrayRules(rules, { formData: props.formData }, idx, this.cache);
62
+ passes = _passes;
63
+ this.cache = _cache;
64
+ !passes && store(idx, item);
65
+ }
66
+ else {
67
+ passes = utils_1.checkArrayRules(rules, { formData: props.formData }, idx);
68
+ !passes && store(idx, item);
69
+ }
70
+ if (passes) {
71
+ this.filteredToOffsets[idx - filteredCount] = filteredCount;
72
+ this.filteredToOffsets[`_${idx}`] = filteredCount;
73
+ }
74
+ this.idxToOffsets[idx] = filteredCount;
75
+ return passes;
76
+ });
77
+ this.filteredTotal = filteredCount;
78
+ const errorSchema = Object.keys(props.errorSchema).reduce((errorSchema, idx) => {
79
+ errorSchema[idx - this.idxToOffsets[idx]] = props.errorSchema[idx];
80
+ return errorSchema;
81
+ }, {});
82
+ const innerUiSchema = utils_1.getInnerUiSchema(props.uiSchema);
83
+ const uiSchema = Object.assign(Object.assign({}, innerUiSchema), { "ui:options": this.getActiveProps(Object.assign(Object.assign({}, utils_1.getUiOptions(innerUiSchema)), { idxOffsets: this.filteredToOffsets, totalOffset: this.filteredTotal })) });
84
+ return Object.assign(Object.assign({}, props), { formData,
85
+ uiSchema,
86
+ errorSchema, onChange: this.onChange });
87
+ }
88
+ getActiveProps(options) {
89
+ const { onActiveChange, activeIdx } = options;
90
+ if (onActiveChange) {
91
+ if (this.cachedOnActiveChange !== onActiveChange) {
92
+ this.cachedOnActiveChange = onActiveChange;
93
+ }
94
+ options = Object.assign(Object.assign({}, options), { onActiveChange: this.getOnActiveChange });
95
+ }
96
+ if (activeIdx !== undefined) {
97
+ options = Object.assign(Object.assign({}, options), { activeIdx: options.activeIdx - this.idxToOffsets[options.activeIdx] });
98
+ }
99
+ return options;
100
+ }
101
+ render() {
102
+ const SchemaField = this.props.registry.fields.SchemaField;
103
+ return React.createElement(SchemaField, Object.assign({}, this.props, this.state));
104
+ }
105
+ };
106
+ FilterArrayField.propTypes = {
107
+ uiSchema: PropTypes.shape({
108
+ "ui:options": PropTypes.shape({
109
+ rules: exports.arrayRulesPropType,
110
+ cache: PropTypes.boolean
111
+ })
112
+ }),
113
+ schema: PropTypes.shape({
114
+ type: PropTypes.oneOf(["array"])
115
+ }).isRequired,
116
+ formData: PropTypes.array
117
+ };
118
+ FilterArrayField = __decorate([
119
+ BaseComponent_1.default
120
+ ], FilterArrayField);
121
+ exports.default = FilterArrayField;
@@ -0,0 +1,29 @@
1
+ export default class FlatField extends React.Component<any, any, any> {
2
+ static propTypes: {
3
+ uiSchema: PropTypes.Validator<PropTypes.InferProps<{
4
+ "ui:options": PropTypes.Requireable<PropTypes.InferProps<{
5
+ fields: PropTypes.Requireable<(string | null | undefined)[]>;
6
+ }>>;
7
+ uiSchema: PropTypes.Requireable<object>;
8
+ }>>;
9
+ schema: PropTypes.Validator<PropTypes.InferProps<{
10
+ type: PropTypes.Requireable<string>;
11
+ }>>;
12
+ formData: PropTypes.Requireable<object>;
13
+ };
14
+ static getName(): string;
15
+ constructor(props: any);
16
+ constructor(props: any, context: any);
17
+ getStateFromProps(props: any, origProps: any): {
18
+ schema: any;
19
+ uiSchema: any;
20
+ errorSchema: any;
21
+ formData: any;
22
+ idSchema: any;
23
+ onChange: (formData: any) => void;
24
+ };
25
+ _onChange: (formData: any, schema: any, fields: any) => any;
26
+ onChange: (formData: any) => void;
27
+ }
28
+ import * as React from "react";
29
+ import * as PropTypes from "prop-types";
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const React = require("react");
10
+ const PropTypes = require("prop-types");
11
+ const immutability_helper_1 = require("immutability-helper");
12
+ const utils_1 = require("../../utils");
13
+ const VirtualSchemaField_1 = require("../VirtualSchemaField");
14
+ function getPropName(field, innerField, isArray) {
15
+ return `${field}_${isArray ? "0_" : ""}${innerField}`;
16
+ }
17
+ let FlatField = class FlatField extends React.Component {
18
+ constructor() {
19
+ super(...arguments);
20
+ this._onChange = (formData, schema, fields) => {
21
+ let _fields = [], deepFields = [];
22
+ fields.forEach(f => {
23
+ (f.includes("_") ? deepFields : _fields).push(f);
24
+ });
25
+ Object.keys(formData).sort().forEach(prop => {
26
+ if (prop.includes("_"))
27
+ _fields.forEach(field => {
28
+ if (prop.includes(`${field}_`)) {
29
+ const isArray = (schema.properties[field].type === "array");
30
+ const newItemName = prop.replace(`${field}_${isArray ? "0_" : ""}`, "");
31
+ const newItemBase = isArray ?
32
+ ((formData[field] && formData[field][0]) ? formData[field][0] : {}) :
33
+ (formData[field] || {});
34
+ const updatedItem = Object.assign(Object.assign({}, newItemBase), { [newItemName]: formData[prop] });
35
+ formData = Object.assign(Object.assign({}, formData), { [field]: isArray ? [updatedItem] : updatedItem });
36
+ formData = utils_1.immutableDelete(formData, prop);
37
+ }
38
+ });
39
+ });
40
+ deepFields.forEach(deepField => {
41
+ const deepContainerName = deepField.match(/^[^_]*/)[0];
42
+ const deepContainer = formData[deepContainerName][0] || formData[deepContainerName];
43
+ deepField = deepField.replace(/^[^_]*_(0_)?/, "");
44
+ const deepSchema = schema.properties[deepContainerName];
45
+ const changedDeep = this._onChange(deepContainer, deepSchema.items || deepSchema, [deepField]);
46
+ formData = Object.assign(Object.assign({}, formData), { [deepContainerName]: deepSchema.type === "array" ? [changedDeep] : changedDeep });
47
+ });
48
+ return formData;
49
+ };
50
+ this.onChange = (formData) => {
51
+ const _formData = this._onChange(formData, this.props.schema, this.getUiOptions().fields);
52
+ this.props.onChange(_formData);
53
+ };
54
+ }
55
+ static getName() { return "FlatField"; }
56
+ getStateFromProps(props, origProps) {
57
+ const state = {
58
+ schema: props.schema,
59
+ uiSchema: props.uiSchema,
60
+ errorSchema: props.errorSchema,
61
+ formData: props.formData,
62
+ idSchema: props.idSchema,
63
+ onChange: this.onChange
64
+ };
65
+ const { fields } = this.getUiOptions();
66
+ fields.sort().forEach(field => {
67
+ let innerSchema = state.schema.properties[field];
68
+ const isArray = innerSchema.type === "array";
69
+ if (isArray)
70
+ innerSchema = innerSchema.items;
71
+ let { properties } = innerSchema;
72
+ if (properties)
73
+ Object.keys(properties).forEach(innerField => {
74
+ state.schema = immutability_helper_1.default(state.schema, { properties: { $merge: { [getPropName(field, innerField, isArray)]: properties[innerField] } } });
75
+ if (innerSchema.required && innerSchema.required.indexOf(innerField) !== -1) {
76
+ state.schema.required = immutability_helper_1.default(state.schema.required || [], { $push: [getPropName(field, innerField, isArray)] });
77
+ }
78
+ if (state.uiSchema[field]) {
79
+ if (!isArray && state.uiSchema[field][innerField]) {
80
+ state.uiSchema = immutability_helper_1.default(state.uiSchema, { $merge: { [getPropName(field, innerField, isArray)]: state.uiSchema[field][innerField] } });
81
+ }
82
+ else if (isArray && state.uiSchema[field].items && state.uiSchema[field].items[innerField]) {
83
+ state.uiSchema = immutability_helper_1.default(state.uiSchema, { $merge: { [getPropName(field, innerField, isArray)]: state.uiSchema[field].items[innerField] } });
84
+ }
85
+ }
86
+ state.idSchema = Object.assign(Object.assign({}, state.idSchema), { [field]: this.props.registry.schemaUtils.toIdSchema(state.schema.properties[field], `${state.idSchema.$id}_${field}`) });
87
+ let innerId = state.idSchema[field][innerField].$id;
88
+ if (isArray) {
89
+ innerId = innerId.replace(/(.*)_(.*)$/, "$1_0_$2");
90
+ }
91
+ state.idSchema = immutability_helper_1.default(state.idSchema, { $merge: { [getPropName(field, innerField, isArray)]: { $id: innerId } } });
92
+ });
93
+ state.schema.properties = utils_1.immutableDelete(state.schema.properties, field);
94
+ state.idSchema = utils_1.immutableDelete(state.idSchema, field);
95
+ const { "ui:order": order = [] } = state.uiSchema;
96
+ const orderIdxs = order.reduce((obj, field, idx) => {
97
+ obj[field] = idx;
98
+ return obj;
99
+ }, {});
100
+ if (field in orderIdxs) {
101
+ const head = order.slice(0, orderIdxs[field]);
102
+ const tail = order.slice(orderIdxs[field] + 1);
103
+ state.uiSchema["ui:order"] = [...head, ...Object.keys(properties).map(innerField => getPropName(field, innerField, isArray)), ...tail];
104
+ }
105
+ if (state.formData && state.formData[field]) {
106
+ let innerData = state.formData[field];
107
+ if (!innerData && state.schema.properties[field].type === "object") {
108
+ innerData = utils_1.getDefaultFormState(state.schema.properties[field]);
109
+ }
110
+ else if (!innerData && state.schema.properties[field].type === "array") {
111
+ innerData = [utils_1.getDefaultFormState(state.schema.properties[field].items)];
112
+ }
113
+ if (Array.isArray(innerData)) {
114
+ innerData = innerData[0];
115
+ }
116
+ Object.keys(innerData || {}).forEach(innerField => {
117
+ state.formData = Object.assign(Object.assign({}, state.formData), { [getPropName(field, innerField, isArray)]: innerData[innerField] });
118
+ });
119
+ state.formData = utils_1.immutableDelete(state.formData, field);
120
+ }
121
+ if (state.errorSchema) {
122
+ Object.keys(state.errorSchema).forEach(errorField => {
123
+ if (errorField === field) {
124
+ if (isArray) {
125
+ Object.keys(state.errorSchema[errorField])
126
+ .filter(key => key !== "__errors")
127
+ .map(key => state.errorSchema[errorField][key]).forEach(error => {
128
+ Object.keys(error).forEach(innerError => {
129
+ state.errorSchema = Object.assign(Object.assign({}, state.errorSchema), { [getPropName(field, innerError, isArray)]: Object.assign(Object.assign({}, (state.errorSchema[getPropName(field, innerError, isArray)] || {})), error[innerError]) });
130
+ });
131
+ });
132
+ state.errorSchema = utils_1.immutableDelete(state.errorSchema, field);
133
+ if (state.errorSchema[field] && state.errorSchema[field].__errors) {
134
+ state.errorSchema = Object.assign(Object.assign({}, state.errorSchema), { __errors: state.errorSchema[field].__errors });
135
+ }
136
+ }
137
+ else {
138
+ Object.keys(state.errorSchema[errorField]).forEach(innerError => {
139
+ state.errorSchema = Object.assign(Object.assign({}, state.errorSchema), { [getPropName(field, innerError, isArray)]: Object.assign(Object.assign({}, (state.errorSchema[getPropName(field, innerError, isArray)] || {})), state.errorSchema[errorField][innerError]) });
140
+ });
141
+ state.errorSchema = utils_1.immutableDelete(state.errorSchema, errorField);
142
+ }
143
+ }
144
+ });
145
+ }
146
+ });
147
+ const { formDataTransformers = [] } = props.formContext;
148
+ state.formContext = Object.assign(Object.assign({}, props.formContext), { formDataTransformers: [
149
+ ...formDataTransformers,
150
+ { "ui:field": "FlatField", props: origProps, targets: fields.map(field => `${props.idSchema.$id}_${field}`) }
151
+ ] });
152
+ state.registry = Object.assign(Object.assign({}, props.registry), { formContext: state.formContext });
153
+ return state;
154
+ }
155
+ };
156
+ FlatField.propTypes = {
157
+ uiSchema: PropTypes.shape({
158
+ "ui:options": PropTypes.shape({
159
+ "fields": PropTypes.arrayOf(PropTypes.string),
160
+ }),
161
+ uiSchema: PropTypes.object
162
+ }).isRequired,
163
+ schema: PropTypes.shape({
164
+ type: PropTypes.oneOf(["object"])
165
+ }).isRequired,
166
+ formData: PropTypes.object
167
+ };
168
+ FlatField = __decorate([
169
+ VirtualSchemaField_1.default
170
+ ], FlatField);
171
+ exports.default = FlatField;
@@ -0,0 +1,47 @@
1
+ export default class GeocoderField extends React.Component<any, any, any> {
2
+ static propTypes: {
3
+ uiSchema: PropTypes.Validator<PropTypes.InferProps<{
4
+ "ui:options": PropTypes.Requireable<PropTypes.InferProps<{
5
+ updateOnlyEmpty: PropTypes.Requireable<boolean>;
6
+ button: PropTypes.Requireable<boolean>;
7
+ fields: PropTypes.Requireable<(string | null | undefined)[]>;
8
+ geometryField: PropTypes.Requireable<string>;
9
+ fieldOptions: PropTypes.Requireable<(PropTypes.InferProps<{
10
+ field: PropTypes.Requireable<string>;
11
+ enum: PropTypes.Requireable<string>;
12
+ }> | null | undefined)[]>;
13
+ }>>;
14
+ uiSchema: PropTypes.Requireable<object>;
15
+ }>>;
16
+ schema: PropTypes.Validator<PropTypes.InferProps<{
17
+ type: PropTypes.Requireable<string>;
18
+ }>>;
19
+ formData: PropTypes.Requireable<object>;
20
+ };
21
+ static getName(): string;
22
+ static contextType: React.Context<import("../../ReactContext").ContextProps>;
23
+ constructor(props: any);
24
+ onLocate: (geometry: any) => void;
25
+ mounted: boolean | undefined;
26
+ getOptions: (props: any) => any;
27
+ getStateFromProps(props: any, loading: any): {
28
+ loading: any;
29
+ };
30
+ getButton(props: any, loading: any): {
31
+ fn: () => () => void;
32
+ position: string;
33
+ key: any;
34
+ render: (onClick: any) => JSX.Element;
35
+ };
36
+ onButtonClick: () => () => void;
37
+ fetchedButton: any;
38
+ getGeometry: (props: any) => any;
39
+ normalizeGeometry: (geometry: any) => any;
40
+ fetch: (url: any) => any;
41
+ update: (props: any, callback: any) => void;
42
+ getComponentContext: () => Record<string, unknown>;
43
+ updateForGeometry: (props: any, callback: any, geometry: any) => void;
44
+ promiseTimestamp: number | undefined;
45
+ }
46
+ import * as React from "react";
47
+ import * as PropTypes from "prop-types";