@luomus/laji-form 15.1.97 → 15.1.99

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.
@@ -199,6 +199,7 @@ export default class LajiForm extends React.Component<LajiFormProps, LajiFormSta
199
199
  ObjectField: (props: any) => JSX.Element;
200
200
  NestField: typeof fields.NestField;
201
201
  ArrayPropertySumField: typeof fields.ArrayPropertySumField;
202
+ ArrayPropertyCountField: typeof fields.ArrayPropertyCountField;
202
203
  ScopeField: typeof fields.ScopeField;
203
204
  SelectTreeField: typeof fields.SelectTreeField;
204
205
  GridLayoutField: {
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ import * as PropTypes from "prop-types";
3
+ import { FieldProps, JSONSchemaObject } from "../../types";
4
+ interface State {
5
+ count: number;
6
+ }
7
+ export default class ArrayPropertyCountField extends React.Component<FieldProps<JSONSchemaObject[], JSONSchemaObject>, State> {
8
+ static propTypes: {
9
+ uiSchema: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
10
+ "ui:options": PropTypes.Requireable<PropTypes.InferProps<{
11
+ propertyField: PropTypes.Validator<string>;
12
+ }>>;
13
+ uiSchema: PropTypes.Requireable<object>;
14
+ }>>>;
15
+ schema: PropTypes.Validator<object>;
16
+ formData: PropTypes.Validator<any[]>;
17
+ };
18
+ static getName(): string;
19
+ render(): JSX.Element;
20
+ }
21
+ export {};
@@ -0,0 +1,67 @@
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 __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const React = __importStar(require("react"));
37
+ const PropTypes = __importStar(require("prop-types"));
38
+ const utils_1 = require("../../utils");
39
+ class ArrayPropertyCountField extends React.Component {
40
+ static getName() { return "ArrayPropertyCountField"; }
41
+ render() {
42
+ const SchemaField = this.props.registry.fields.SchemaField;
43
+ const count = getCount(this.props);
44
+ return (React.createElement(React.Fragment, null,
45
+ React.createElement(SchemaField, Object.assign({}, this.props, { uiSchema: (0, utils_1.getInnerUiSchema)(this.props.uiSchema) })),
46
+ React.createElement("h4", null,
47
+ this.props.uiSchema["ui:title"],
48
+ ": ",
49
+ count)));
50
+ }
51
+ }
52
+ ArrayPropertyCountField.propTypes = {
53
+ uiSchema: PropTypes.shape({
54
+ "ui:options": PropTypes.shape({
55
+ propertyField: PropTypes.string.isRequired
56
+ }),
57
+ uiSchema: PropTypes.object
58
+ }).isRequired,
59
+ schema: PropTypes.object.isRequired,
60
+ formData: PropTypes.array.isRequired
61
+ };
62
+ exports.default = ArrayPropertyCountField;
63
+ const getCount = (props) => {
64
+ const formData = props.formData || [];
65
+ const propertyField = (0, utils_1.getUiOptions)(props.uiSchema).propertyField;
66
+ return formData.filter(item => item === null || item === void 0 ? void 0 : item[propertyField]).length;
67
+ };
@@ -3,6 +3,7 @@ export { default as ArrayField } from "./ArrayField";
3
3
  export { default as ObjectField } from "./ObjectField";
4
4
  export { default as NestField } from "./NestField";
5
5
  export { default as ArrayPropertySumField } from "./ArrayPropertySumField";
6
+ export { default as ArrayPropertyCountField } from "./ArrayPropertyCountField";
6
7
  export { default as ScopeField } from "./ScopeField";
7
8
  export { default as SelectTreeField } from "./SelectTreeField";
8
9
  export { default as GridLayoutField } from "./GridLayoutField";
@@ -3,8 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SectionArrayField = 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.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.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 = void 0;
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.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");
@@ -15,6 +15,8 @@ var NestField_1 = require("./NestField");
15
15
  Object.defineProperty(exports, "NestField", { enumerable: true, get: function () { return __importDefault(NestField_1).default; } });
16
16
  var ArrayPropertySumField_1 = require("./ArrayPropertySumField");
17
17
  Object.defineProperty(exports, "ArrayPropertySumField", { enumerable: true, get: function () { return __importDefault(ArrayPropertySumField_1).default; } });
18
+ var ArrayPropertyCountField_1 = require("./ArrayPropertyCountField");
19
+ Object.defineProperty(exports, "ArrayPropertyCountField", { enumerable: true, get: function () { return __importDefault(ArrayPropertyCountField_1).default; } });
18
20
  var ScopeField_1 = require("./ScopeField");
19
21
  Object.defineProperty(exports, "ScopeField", { enumerable: true, get: function () { return __importDefault(ScopeField_1).default; } });
20
22
  var SelectTreeField_1 = require("./SelectTreeField");
@@ -66,7 +66,7 @@ export class Autosuggest extends React.Component<any, any, any> {
66
66
  promiseTimestamp: number | undefined;
67
67
  timeout: any;
68
68
  onFocus: (e: any) => void;
69
- onBlur: (e: any) => void;
69
+ onBlur: (e: any, blurSelected?: boolean) => void;
70
70
  _valueForBlurAndFetch: any;
71
71
  afterBlurAndFetch: (suggestions: any, callback: any) => void;
72
72
  render(): JSX.Element;
@@ -626,10 +626,12 @@ class Autosuggest extends React.Component {
626
626
  this.setState({ focused: true });
627
627
  (0, utils_1.triggerParentComponent)("onFocus", e, this.props.inputProps);
628
628
  };
629
- this.onBlur = (e) => {
629
+ this.onBlur = (e, blurSelected = false) => {
630
630
  this.setState({ focused: false }, () => {
631
- this._valueForBlurAndFetch = this.state.inputValue;
632
- this.afterBlurAndFetch(this.state.suggestions);
631
+ if (!blurSelected) {
632
+ this._valueForBlurAndFetch = this.state.inputValue;
633
+ this.afterBlurAndFetch(this.state.suggestions);
634
+ }
633
635
  (0, utils_1.triggerParentComponent)("onBlur", e, this.props.inputProps);
634
636
  const overlay = this.wrapperRef.current;
635
637
  if (overlay && overlay.overlayTriggerRef && overlay.overlayTriggerRef.hide) {
@@ -1208,7 +1210,7 @@ class ReactAutosuggest extends React.Component {
1208
1210
  const suggestion = (this.props.suggestions || [])[this.state.focusedIdx];
1209
1211
  suggestion && this.onSuggestionSelected(this.props.suggestions[this.state.focusedIdx]);
1210
1212
  this.setState({ focused: false, focusedIdx: undefined, touched: false });
1211
- (_b = (_a = this.props.inputProps) === null || _a === void 0 ? void 0 : _a.onBlur) === null || _b === void 0 ? void 0 : _b.call(_a, e);
1213
+ (_b = (_a = this.props.inputProps) === null || _a === void 0 ? void 0 : _a.onBlur) === null || _b === void 0 ? void 0 : _b.call(_a, e, !!suggestion);
1212
1214
  }
1213
1215
  renderInput() {
1214
1216
  const { inputProps, renderInputComponent = this.renderDefaultInputComponent } = this.props;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luomus/laji-form",
3
- "version": "15.1.97",
3
+ "version": "15.1.99",
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",