@luomus/laji-form 15.1.120 → 15.1.122
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.
- package/dist/laji-form.js +1 -1
- package/lib/components/LajiForm.d.ts +2 -1
- package/lib/components/LajiForm.js +16 -1
- package/lib/components/fields/ArchipelagoURLField.d.ts +20 -0
- package/lib/components/fields/ArchipelagoURLField.js +87 -0
- package/lib/components/fields/index.d.ts +1 -0
- package/lib/components/fields/index.js +3 -1
- package/lib/translations.json +5 -0
- package/package.json +1 -1
- package/test-export/test-utils.d.ts +1 -0
- package/test-export/test-utils.js +6 -1
|
@@ -316,6 +316,7 @@ export default class LajiForm extends React.Component<LajiFormProps, LajiFormSta
|
|
|
316
316
|
TaxaByYearPopulatorField: typeof fields.TaxaByYearPopulatorField;
|
|
317
317
|
TaxonSetPopulatorField: typeof fields.TaxonSetPopulatorField;
|
|
318
318
|
ScientificNameTaxonAutosuggestField: typeof fields.ScientificNameTaxonAutosuggestField;
|
|
319
|
+
ArchipelagoURLField: typeof fields.ArchipelagoURLField;
|
|
319
320
|
ArraySchemaField: typeof fields.SchemaField;
|
|
320
321
|
InputTransformerField: typeof fields.ConditionalOnChangeField;
|
|
321
322
|
ConditionalField: typeof fields.ConditionalUiSchemaField;
|
|
@@ -488,7 +489,7 @@ export default class LajiForm extends React.Component<LajiFormProps, LajiFormSta
|
|
|
488
489
|
addEventListener: (target: typeof document | typeof window, name: string, fn: (e: Event) => void) => void;
|
|
489
490
|
setTimeout: (fn: () => void, time?: number) => number;
|
|
490
491
|
destroy: () => void;
|
|
491
|
-
getSchemaValidationErrors: (formData: any) =>
|
|
492
|
+
getSchemaValidationErrors: (formData: any) => ErrorSchema;
|
|
492
493
|
getFormDataReadyForSubmit: (formData: any, schema: JSONSchema) => {
|
|
493
494
|
formData: any;
|
|
494
495
|
removedArrayItemsAndObjects: string[];
|
|
@@ -377,7 +377,7 @@ class LajiForm extends React.Component {
|
|
|
377
377
|
ignoreErrorPaths.forEach(path => {
|
|
378
378
|
schemaErrors = (0, utils_1.immutableDelete)(schemaErrors, path);
|
|
379
379
|
});
|
|
380
|
-
return schemaErrors;
|
|
380
|
+
return removeEmptyErrorObjects(schemaErrors);
|
|
381
381
|
};
|
|
382
382
|
this.getFormDataReadyForSubmit = (formData, schema) => {
|
|
383
383
|
formData = this.memoizedFormContext.services.ids.removeLajiFormIds(formData);
|
|
@@ -597,6 +597,21 @@ const removeEmptyValuesAndTrim = (formData, schema) => {
|
|
|
597
597
|
return formData;
|
|
598
598
|
}
|
|
599
599
|
};
|
|
600
|
+
const removeEmptyErrorObjects = (errors) => {
|
|
601
|
+
const result = {};
|
|
602
|
+
for (const key of Object.keys(errors)) {
|
|
603
|
+
if (key === "__errors") {
|
|
604
|
+
result[key] = errors[key];
|
|
605
|
+
}
|
|
606
|
+
else if (errors[key]) {
|
|
607
|
+
const cleanedValue = removeEmptyErrorObjects(errors[key]);
|
|
608
|
+
if (Object.keys(cleanedValue).length > 0) {
|
|
609
|
+
result[key] = cleanedValue;
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
return Object.keys(result).length === 0 ? {} : result;
|
|
614
|
+
};
|
|
600
615
|
const getShortcuts = (uiSchema) => {
|
|
601
616
|
var _a, _b;
|
|
602
617
|
if ((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.platform) === null || _b === void 0 ? void 0 : _b.includes("Mac")) {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as PropTypes from "prop-types";
|
|
3
|
+
import { FieldProps } from "../../types";
|
|
4
|
+
export default class ArchipelagoURLField extends React.Component<FieldProps> {
|
|
5
|
+
static propTypes: {
|
|
6
|
+
uiSchema: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
|
|
7
|
+
"ui:options": PropTypes.Requireable<PropTypes.InferProps<{
|
|
8
|
+
baseURL: PropTypes.Requireable<string>;
|
|
9
|
+
}>>;
|
|
10
|
+
uiSchema: PropTypes.Requireable<object>;
|
|
11
|
+
}>>>;
|
|
12
|
+
schema: PropTypes.Requireable<PropTypes.InferProps<{
|
|
13
|
+
type: PropTypes.Requireable<string>;
|
|
14
|
+
}>>;
|
|
15
|
+
formData: PropTypes.Validator<object>;
|
|
16
|
+
};
|
|
17
|
+
constructor(props: FieldProps);
|
|
18
|
+
static getName(): string;
|
|
19
|
+
render(): JSX.Element;
|
|
20
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
const React = __importStar(require("react"));
|
|
46
|
+
const PropTypes = __importStar(require("prop-types"));
|
|
47
|
+
const VirtualSchemaField_1 = __importDefault(require("../VirtualSchemaField"));
|
|
48
|
+
const utils_1 = require("../../utils");
|
|
49
|
+
let ArchipelagoURLField = class ArchipelagoURLField extends React.Component {
|
|
50
|
+
constructor(props) {
|
|
51
|
+
super(props);
|
|
52
|
+
}
|
|
53
|
+
static getName() { return "ArchipelagoURLField"; }
|
|
54
|
+
render() {
|
|
55
|
+
var _a, _b, _c;
|
|
56
|
+
const { baseURL } = (0, utils_1.getUiOptions)(this.props.uiSchema);
|
|
57
|
+
const { translations } = this.props.formContext;
|
|
58
|
+
const SchemaField = this.props.registry.fields.SchemaField;
|
|
59
|
+
const dateBegin = (_b = (_a = this.props.formData) === null || _a === void 0 ? void 0 : _a.gatheringEvent) === null || _b === void 0 ? void 0 : _b.dateBegin;
|
|
60
|
+
const year = Number(dateBegin === null || dateBegin === void 0 ? void 0 : dateBegin.split("-")[0]) || undefined;
|
|
61
|
+
const namedPlace = (_c = this.props.formData) === null || _c === void 0 ? void 0 : _c.namedPlaceID;
|
|
62
|
+
const url = baseURL + `/project/MHL.1166/stats?tab=statistics&year=${year}&namedPlace=${namedPlace}`;
|
|
63
|
+
return (React.createElement(React.Fragment, null,
|
|
64
|
+
React.createElement("div", { style: { margin: 10 } },
|
|
65
|
+
React.createElement("b", null, translations.ResultsLink),
|
|
66
|
+
React.createElement("br", null),
|
|
67
|
+
React.createElement("a", { href: url, target: "_blank" }, url)),
|
|
68
|
+
React.createElement(SchemaField, Object.assign({}, this.props, { uiSchema: (0, utils_1.getInnerUiSchema)(this.props.uiSchema) }))));
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
ArchipelagoURLField.propTypes = {
|
|
72
|
+
uiSchema: PropTypes.shape({
|
|
73
|
+
"ui:options": PropTypes.shape({
|
|
74
|
+
baseURL: PropTypes.string
|
|
75
|
+
}),
|
|
76
|
+
uiSchema: PropTypes.object
|
|
77
|
+
}).isRequired,
|
|
78
|
+
schema: PropTypes.shape({
|
|
79
|
+
type: PropTypes.oneOf(["string"])
|
|
80
|
+
}),
|
|
81
|
+
formData: PropTypes.oneOfType([PropTypes.array, PropTypes.object]).isRequired
|
|
82
|
+
};
|
|
83
|
+
ArchipelagoURLField = __decorate([
|
|
84
|
+
VirtualSchemaField_1.default
|
|
85
|
+
], ArchipelagoURLField);
|
|
86
|
+
exports.default = ArchipelagoURLField;
|
|
87
|
+
;
|
|
@@ -70,6 +70,7 @@ export { default as FillDateRangeField } from "./FillDateRangeField";
|
|
|
70
70
|
export { default as TaxaByYearPopulatorField } from "./TaxaByYearPopulatorField";
|
|
71
71
|
export { default as TaxonSetPopulatorField } from "./TaxonSetPopulatorField";
|
|
72
72
|
export { default as ScientificNameTaxonAutosuggestField } from "./ScientificNameTaxonAutosuggestField";
|
|
73
|
+
export { default as ArchipelagoURLField } from "./ArchipelagoURLField";
|
|
73
74
|
export { default as ArraySchemaField } from "./SchemaField";
|
|
74
75
|
export { default as InputTransformerField } from "./ConditionalOnChangeField";
|
|
75
76
|
export { default as ConditionalField } from "./ConditionalUiSchemaField";
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.FakePropertyField = exports.ImageDisplayField = exports.LocalityField = exports.DataLeakerField = exports.LocationChooserField = exports.UnitListShorthandArrayField = exports.EnumRangeArrayField = exports.AnyToBooleanField = exports.PrefillingArrayField = exports.AnnotationField = exports.ConditionalUiSchemaField = exports.ConditionalOnChangeField = exports.StringToArrayField = exports.TagArrayField = exports.GeocoderField = exports.MapField = exports.NamedPlaceSaverField = exports.NamedPlaceChooserField = exports.SumField = exports.ExtraLabelRowField = exports.UiFieldMapperArrayField = exports.CombinedValueDisplayField = exports.UnitShorthandField = exports.SingleItemArrayField = exports.SingleActiveArrayField = exports.FlatField = exports.SplitField = exports.ImageArrayField = exports.ContextInjectionField = exports.InitiallyHiddenField = exports.HiddenWithTextField = exports.HiddenField = exports.AutosuggestField = exports.AutoArrayField = exports.MapArrayField = exports.DependentDisableField = exports.DependentBooleanField = exports.ArrayCombinerField = exports.InjectDefaultValueField = exports.InjectField = exports.TableField = exports.GridLayoutField = exports.SelectTreeField = exports.ScopeField = exports.ArrayPropertyCountField = exports.ArrayPropertySumField = exports.NestField = exports.ObjectField = exports.ArrayField = exports.SchemaField = void 0;
|
|
7
|
-
exports.AccordionArrayField = exports.UnitRapidField = exports.ConditionalField = exports.InputTransformerField = exports.ArraySchemaField = exports.ScientificNameTaxonAutosuggestField = exports.TaxonSetPopulatorField = exports.TaxaByYearPopulatorField = exports.FillDateRangeField = exports.PrefixArrayField = exports.MultiActiveArrayField = exports.CondensedObjectField = exports.AsArrayField = exports.PdfArrayField = exports.MultiTagArrayField = exports.InputWithDefaultValueButtonField = exports.SortArrayField = exports.MultiLanguageField = exports.UiFieldApplierField = exports.DefaultValueArrayField = exports.ToggleAdditionalArrayFieldsField = exports.UnitCountShorthandField = exports.MultiAnyToBooleanField = exports.FilterArrayField = exports.AudioArrayField = exports.MultiArrayField = exports.SectionArrayField = void 0;
|
|
7
|
+
exports.AccordionArrayField = exports.UnitRapidField = exports.ConditionalField = exports.InputTransformerField = exports.ArraySchemaField = exports.ArchipelagoURLField = exports.ScientificNameTaxonAutosuggestField = exports.TaxonSetPopulatorField = exports.TaxaByYearPopulatorField = exports.FillDateRangeField = exports.PrefixArrayField = exports.MultiActiveArrayField = exports.CondensedObjectField = exports.AsArrayField = exports.PdfArrayField = exports.MultiTagArrayField = exports.InputWithDefaultValueButtonField = exports.SortArrayField = exports.MultiLanguageField = exports.UiFieldApplierField = exports.DefaultValueArrayField = exports.ToggleAdditionalArrayFieldsField = exports.UnitCountShorthandField = exports.MultiAnyToBooleanField = exports.FilterArrayField = exports.AudioArrayField = exports.MultiArrayField = exports.SectionArrayField = void 0;
|
|
8
8
|
var SchemaField_1 = require("./SchemaField");
|
|
9
9
|
Object.defineProperty(exports, "SchemaField", { enumerable: true, get: function () { return __importDefault(SchemaField_1).default; } });
|
|
10
10
|
var ArrayField_1 = require("./ArrayField");
|
|
@@ -149,6 +149,8 @@ var TaxonSetPopulatorField_1 = require("./TaxonSetPopulatorField");
|
|
|
149
149
|
Object.defineProperty(exports, "TaxonSetPopulatorField", { enumerable: true, get: function () { return __importDefault(TaxonSetPopulatorField_1).default; } });
|
|
150
150
|
var ScientificNameTaxonAutosuggestField_1 = require("./ScientificNameTaxonAutosuggestField");
|
|
151
151
|
Object.defineProperty(exports, "ScientificNameTaxonAutosuggestField", { enumerable: true, get: function () { return __importDefault(ScientificNameTaxonAutosuggestField_1).default; } });
|
|
152
|
+
var ArchipelagoURLField_1 = require("./ArchipelagoURLField");
|
|
153
|
+
Object.defineProperty(exports, "ArchipelagoURLField", { enumerable: true, get: function () { return __importDefault(ArchipelagoURLField_1).default; } });
|
|
152
154
|
// ---- Aliases for backward compatibility ----
|
|
153
155
|
var SchemaField_2 = require("./SchemaField");
|
|
154
156
|
Object.defineProperty(exports, "ArraySchemaField", { enumerable: true, get: function () { return __importDefault(SchemaField_2).default; } });
|
package/lib/translations.json
CHANGED
package/package.json
CHANGED
|
@@ -268,4 +268,5 @@ export declare const maybeJSONPointerToLocator: (pointer: string) => string;
|
|
|
268
268
|
/** Fills value into given input and presses tab to unfocus it. Useful for inputs with debounce */
|
|
269
269
|
export declare const updateValue: ($input: Locator, value: string) => Promise<void>;
|
|
270
270
|
export declare const getRemoveUnit: (page: Page) => (gatheringIdx: number, unitIdx: number) => Promise<void>;
|
|
271
|
+
export declare const getRemoveIdentification: (page: Page) => (gatheringIdx: number, unitIdx: number, identificationIdx: number) => Promise<void>;
|
|
271
272
|
export {};
|
|
@@ -53,7 +53,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
53
53
|
return t;
|
|
54
54
|
};
|
|
55
55
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
-
exports.getRemoveUnit = exports.updateValue = exports.maybeJSONPointerToLocator = exports.filterUUIDs = exports.mockImageMetadata = exports.DemoPageForm = exports.Form = exports.getFocusedId = exports.getFocusedElement = exports.lajiFormLocate = exports.lajiFormLocator = exports.navigateToForm = exports.emptyForm = void 0;
|
|
56
|
+
exports.getRemoveIdentification = exports.getRemoveUnit = exports.updateValue = exports.maybeJSONPointerToLocator = exports.filterUUIDs = exports.mockImageMetadata = exports.DemoPageForm = exports.Form = exports.getFocusedId = exports.getFocusedElement = exports.lajiFormLocate = exports.lajiFormLocator = exports.navigateToForm = exports.emptyForm = void 0;
|
|
57
57
|
exports.createForm = createForm;
|
|
58
58
|
const path = __importStar(require("path"));
|
|
59
59
|
const test_utils_1 = require("@luomus/laji-map/test-export/test-utils");
|
|
@@ -415,3 +415,8 @@ const getRemoveUnit = (page) => (gatheringIdx, unitIdx) => __awaiter(void 0, voi
|
|
|
415
415
|
return page.locator(`#root_gatherings_${gatheringIdx}_units_${unitIdx}-delete-confirm-yes`).click();
|
|
416
416
|
});
|
|
417
417
|
exports.getRemoveUnit = getRemoveUnit;
|
|
418
|
+
const getRemoveIdentification = (page) => (gatheringIdx, unitIdx, identificationIdx) => __awaiter(void 0, void 0, void 0, function* () {
|
|
419
|
+
yield page.locator(`#root_gatherings_${gatheringIdx}_units_${unitIdx}_identifications_${identificationIdx}-delete`).click();
|
|
420
|
+
return page.locator(`#root_gatherings_${gatheringIdx}_units_${unitIdx}_identifications_${identificationIdx}-delete-confirm-yes`).click();
|
|
421
|
+
});
|
|
422
|
+
exports.getRemoveIdentification = getRemoveIdentification;
|