@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,7 @@
1
+ export function initializeValidation(apiClient: any): void;
2
+ export function transformErrors(translations: any, errors: any): any;
3
+ declare function _default({ errors: error, warnings: warning }: {
4
+ errors: any;
5
+ warnings: any;
6
+ }, data: any): Promise<any>;
7
+ export default _default;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transformErrors = exports.initializeValidation = void 0;
4
+ const lajiValidate = require("@luomus/laji-validate");
5
+ function initializeValidation(apiClient) {
6
+ lajiValidate.extend(lajiValidate.validators.remote, {
7
+ fetch: (...params) => apiClient.fetchRaw(...params)
8
+ });
9
+ }
10
+ exports.initializeValidation = initializeValidation;
11
+ exports.default = ({ errors: error, warnings: warning }, data) => {
12
+ const promises = [];
13
+ const getPromiseForValidator = (type, validator) => {
14
+ return lajiValidate.async(data, validator)
15
+ .then(() => { })
16
+ .catch(res => res)
17
+ .then(err => { return { type, err }; });
18
+ };
19
+ const _validators = { error, warning };
20
+ Object.keys(_validators).forEach(type => {
21
+ const validator = _validators[type];
22
+ promises.push(getPromiseForValidator(type, validator));
23
+ });
24
+ return Promise.all(promises).then((res) => {
25
+ const messages = res.reduce((arr, { type, err }) => {
26
+ arr = arr.concat(getMessages(err, type));
27
+ return arr;
28
+ }, []);
29
+ return Promise.resolve(toErrorSchema(messages));
30
+ });
31
+ };
32
+ function transformErrors(translations, errors) {
33
+ return errors.map(error => {
34
+ if (error.name === "type") {
35
+ error.message = translations.TypeError + translations[error.params.type] + ".";
36
+ }
37
+ else if (error.name === "required") {
38
+ error.message = translations.FieldIsRequired + ".";
39
+ }
40
+ return error;
41
+ });
42
+ }
43
+ exports.transformErrors = transformErrors;
44
+ function getMessages(result, type) {
45
+ const messages = [];
46
+ for (let k in result) {
47
+ for (let l in result[k]) {
48
+ const message = (type !== "validators") ? `[${type}]` + result[k][l] : result[k][l];
49
+ messages.push({
50
+ property: "instance." + k,
51
+ message: message
52
+ });
53
+ }
54
+ }
55
+ return messages;
56
+ }
57
+ // these are taken from @rjsf/core to convert error messages to wanted form
58
+ // see https://github.com/mozilla-services/@rjsf/core/blob/master/src/validate.js
59
+ function toErrorSchema(errors) {
60
+ // Transforms a jsonschema validation errors list:
61
+ // [
62
+ // {property: "instance.level1.level2[2].level3", message: "err a"},
63
+ // {property: "instance.level1.level2[2].level3", message: "err b"},
64
+ // {property: "instance.level1.level2[4].level3", message: "err b"},
65
+ // ]
66
+ // Into an error tree:
67
+ // {
68
+ // level1: {
69
+ // level2: {
70
+ // 2: {level3: {errors: ["err a", "err b"]}},
71
+ // 4: {level3: {errors: ["err b"]}},
72
+ // }
73
+ // }
74
+ // };
75
+ if (!errors.length) {
76
+ return {};
77
+ }
78
+ return errors.reduce(function (errorSchema, error) {
79
+ var property = error.property;
80
+ var message = error.message;
81
+ var path = errorPropertyToPath(property);
82
+ var parent = errorSchema;
83
+ var _iteratorNormalCompletion = true;
84
+ var _didIteratorError = false;
85
+ var _iteratorError = undefined;
86
+ try {
87
+ for (var _iterator = path.slice(1)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
88
+ var segment = _step.value;
89
+ if (!(segment in parent)) {
90
+ parent[segment] = {};
91
+ }
92
+ parent = parent[segment];
93
+ }
94
+ }
95
+ catch (err) {
96
+ _didIteratorError = true;
97
+ _iteratorError = err;
98
+ }
99
+ finally {
100
+ try {
101
+ if (!_iteratorNormalCompletion && _iterator.return) {
102
+ _iterator.return();
103
+ }
104
+ }
105
+ finally {
106
+ if (_didIteratorError) {
107
+ throw _iteratorError;
108
+ }
109
+ }
110
+ }
111
+ if (Array.isArray(parent.__errors)) {
112
+ // We store the list of errors for this node in a property named __errors
113
+ // to avoid name collision with a possible sub schema field named
114
+ // "errors" (see `validate.createErrorHandler`).
115
+ parent.__errors = parent.__errors.concat(message);
116
+ }
117
+ else {
118
+ parent.__errors = [message];
119
+ }
120
+ return errorSchema;
121
+ }, {});
122
+ }
123
+ const RE_ERROR_ARRAY_PATH = /\[\d+]/g;
124
+ function errorPropertyToPath(property) {
125
+ // Parse array indices, eg. "instance.level1.level2[2].level3"
126
+ // => ["instance", "level1", "level2", 2, "level3"]
127
+ return property.split(".").reduce(function (path, node) {
128
+ var match = node.match(RE_ERROR_ARRAY_PATH);
129
+ if (match) {
130
+ var nodeName = node.slice(0, node.indexOf("["));
131
+ var indices = match.map(function (str) {
132
+ return parseInt(str.slice(1, -1), 10);
133
+ });
134
+ path = path.concat(nodeName, indices);
135
+ }
136
+ else {
137
+ path.push(node);
138
+ }
139
+ return path;
140
+ }, []);
141
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luomus/laji-form",
3
- "version": "15.1.5",
3
+ "version": "15.1.7",
4
4
  "description": "React module capable of building dynamic forms from Laji form json schemas",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -14,7 +14,7 @@
14
14
  "preversion": "npm run lint && npm test",
15
15
  "version": "bin/update-changelog.sh",
16
16
  "postversion": "npm publish",
17
- "prepublishOnly": "npm run build && git push & git push --tags",
17
+ "prepublishOnly": "npm run build && git push && git push --tags",
18
18
  "lint": "eslint -c .eslintrc.prod.json src playground",
19
19
  "test": "npx playwright test"
20
20
  },
@@ -57,8 +57,8 @@ interface DemoPageProps {
57
57
  }
58
58
  export declare class Form {
59
59
  protected page: Page;
60
- protected locator: Locator;
61
- constructor(page: Page, locator?: Locator);
60
+ protected $locator: Locator;
61
+ constructor(page: Page, $locator?: Locator);
62
62
  $form: Locator;
63
63
  $locate(path: string): Locator;
64
64
  $locateButton(path: string, selector: string, locateFromBody?: boolean): Locator;
@@ -252,6 +252,7 @@ export declare const mockImageMetadata: {
252
252
  };
253
253
  export declare const filterUUIDs: (any: any) => any;
254
254
  export declare const maybeJSONPointerToLocator: (pointer: string) => string;
255
+ /** Fills value into given input and presses tab to unfocus it. Useful for inputs with debounce */
255
256
  export declare const updateValue: ($input: Locator, value: string) => Promise<void>;
256
257
  export declare const getRemoveUnit: (page: Page) => (gatheringIdx: number, unitIdx: number) => Promise<void>;
257
258
  export {};
@@ -45,25 +45,25 @@ function getEnumWidgetForContainer($container) {
45
45
  };
46
46
  }
47
47
  class Form {
48
- constructor(page, locator = page.locator(".laji-form")) {
48
+ constructor(page, $locator = page.locator(".laji-form")) {
49
49
  this.page = page;
50
- this.locator = locator;
51
- this.$form = this.page.locator(".laji-form .rjsf");
50
+ this.$locator = $locator;
51
+ this.$form = this.$locator.locator(".rjsf");
52
52
  this.getMockStr = (path, query) => `window.mockResponses[window.getMockQueryKey(${JSON.stringify(path)}, ${JSON.stringify(query)})]`;
53
53
  this.createValidatorPO = (type) => ({
54
- $$all: this.page.locator(`.laji-form-error-list:not(.laji-form-failed-jobs-list) .${type}-panel .list-group button`),
55
- $panel: this.page.locator(`.laji-form-error-list:not(.laji-form-failed-jobs-list) .${type}-panel`)
54
+ $$all: this.$locator.locator(`.laji-form-error-list:not(.laji-form-failed-jobs-list) .${type}-panel .list-group button`),
55
+ $panel: this.$locator.locator(`.laji-form-error-list:not(.laji-form-failed-jobs-list) .${type}-panel`)
56
56
  });
57
57
  this.errors = this.createValidatorPO("error");
58
58
  this.warnings = this.createValidatorPO("warning");
59
59
  this.failedJobs = {
60
- $container: this.page.locator(".laji-form-failed-jobs-list"),
61
- $$errors: this.page.locator(".laji-form-failed-jobs-list .list-group-item")
60
+ $container: this.$locator.locator(".laji-form-failed-jobs-list"),
61
+ $$errors: this.$locator.locator(".laji-form-failed-jobs-list .list-group-item")
62
62
  };
63
- this.$runningJobs = this.page.locator(".running-jobs");
64
- this.$acknowledgeWarnings = this.page.locator(".laji-form-warning-list .panel-footer button");
63
+ this.$runningJobs = this.$locator.locator(".running-jobs");
64
+ this.$acknowledgeWarnings = this.$locator.locator(".laji-form-warning-list .panel-footer button");
65
65
  this.$blocker = this.page.locator(".laji-form.blocking-loader");
66
- this.$mapFieldFullscreenMap = this.page.locator(".laji-form.fullscreen .laji-form-map");
66
+ this.$mapFieldFullscreenMap = this.$locator.locator(".laji-form.fullscreen .laji-form-map");
67
67
  this.getImageArrayField = (lajiFormLocator) => {
68
68
  const $container = this.$locate(lajiFormLocator).locator(".laji-form-medias");
69
69
  const $imgContainers = this.$locate(lajiFormLocator).locator(".media-container");
@@ -92,7 +92,7 @@ class Form {
92
92
  };
93
93
  this.getTaxonAutosuggestWidget = (lajiFormLocator) => {
94
94
  const autosuggest = this.getAutosuggestWidget(lajiFormLocator);
95
- return Object.assign(Object.assign({}, autosuggest), { $powerUserButton: this.page.locator(".power-user-addon"), $suggestedGlyph: this.$locate(lajiFormLocator).locator(".glyphicon-ok"), $nonsuggestedGlyph: this.$locate(lajiFormLocator).locator(".glyphicon-warning-sign") });
95
+ return Object.assign(Object.assign({}, autosuggest), { $powerUserButton: this.$locator.locator(".power-user-addon"), $suggestedGlyph: this.$locate(lajiFormLocator).locator(".glyphicon-ok"), $nonsuggestedGlyph: this.$locate(lajiFormLocator).locator(".glyphicon-warning-sign") });
96
96
  };
97
97
  this.getPersonAutosuggestWidget = (lajiFormLocator) => {
98
98
  const autosuggest = this.getAutosuggestWidget(lajiFormLocator);
@@ -151,10 +151,10 @@ class Form {
151
151
  };
152
152
  }
153
153
  $locate(path) {
154
- return this.page.locator(exports.lajiFormLocator(path));
154
+ return this.$locator.locator(exports.lajiFormLocator(path));
155
155
  }
156
156
  $locateButton(path, selector, locateFromBody = false) {
157
- return (locateFromBody ? this.page : this.locator).locator(`#root${typeof path === "string" && path.length > 0 ? `_${path.replace(/\./g, "_")}` : ""}-${selector}`);
157
+ return (locateFromBody ? this.page : this.$locator).locator(`#root${typeof path === "string" && path.length > 0 ? `_${path.replace(/\./g, "_")}` : ""}-${selector}`);
158
158
  }
159
159
  $locateAddition(path, selector, locateFromBody = false) {
160
160
  return this.$locateButton(path, selector, locateFromBody);
@@ -356,6 +356,7 @@ const filterUUIDs = (any) => {
356
356
  exports.filterUUIDs = filterUUIDs;
357
357
  const maybeJSONPointerToLocator = (pointer) => pointer[0] === "/" ? pointer.slice(1).replace(/\//g, "_") : pointer;
358
358
  exports.maybeJSONPointerToLocator = maybeJSONPointerToLocator;
359
+ /** Fills value into given input and presses tab to unfocus it. Useful for inputs with debounce */
359
360
  const updateValue = ($input, value) => __awaiter(void 0, void 0, void 0, function* () {
360
361
  yield $input.fill(value);
361
362
  yield $input.press("Tab");