@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.
@@ -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) => 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; } });
@@ -918,5 +918,10 @@
918
918
  "fi": "Kiinnitä ylös",
919
919
  "en": "Pin to top",
920
920
  "sv": "Fäst överst"
921
+ },
922
+ "resultsLink": {
923
+ "fi": "Linkki tulospalveluun",
924
+ "en": "Link to result service",
925
+ "sv": "Länk till resultat"
921
926
  }
922
927
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luomus/laji-form",
3
- "version": "15.1.120",
3
+ "version": "15.1.122",
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",
@@ -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;