@luomus/laji-form 15.1.57 → 15.1.59
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 +6 -2
- package/lib/components/VirtualSchemaField.d.ts +9 -9
- package/lib/components/VirtualSchemaField.js +1 -1
- package/lib/components/fields/ArrayPropertySumField.d.ts +1 -1
- package/lib/components/fields/AsArrayField.d.ts +3 -393
- package/lib/components/fields/CondensedObjectField.d.ts +3 -3
- package/lib/components/fields/ExtraLabelRowField.d.ts +1 -1
- package/lib/components/fields/ImageArrayField.d.ts +11 -11
- package/lib/components/fields/InitiallyHiddenField.d.ts +1 -1
- package/lib/components/fields/LocationChooserField.d.ts +1 -1
- package/lib/components/fields/MapArrayField.js +6 -1
- package/lib/components/fields/MapField.js +17 -7
- package/lib/components/fields/MultiTagArrayField.js +1 -1
- package/lib/components/fields/NamedPlaceChooserField/NamedPlaceChooser.d.ts +54 -0
- package/lib/components/fields/NamedPlaceChooserField/NamedPlaceChooser.js +169 -0
- package/lib/components/fields/NamedPlaceChooserField/NamedPlaceChooserField.d.ts +71 -0
- package/lib/components/fields/NamedPlaceChooserField/NamedPlaceChooserField.js +193 -0
- package/lib/components/fields/NamedPlaceChooserField/Popup.d.ts +12 -0
- package/lib/components/fields/NamedPlaceChooserField/Popup.js +67 -0
- package/lib/components/fields/NamedPlaceChooserField/index.d.ts +1 -0
- package/lib/components/fields/NamedPlaceChooserField/index.js +8 -0
- package/lib/components/fields/NamedPlaceSaverField.d.ts +16 -16
- package/lib/components/fields/PdfArrayField.d.ts +1 -1
- package/lib/components/fields/SchemaField.d.ts +5 -6
- package/lib/components/fields/SchemaField.js +4 -24
- package/lib/components/fields/ScopeField.d.ts +1 -1
- package/lib/components/fields/SelectTreeField.js +1 -1
- package/lib/components/fields/SortArrayField.d.ts +32 -32
- package/lib/components/fields/SplitField.js +1 -1
- package/lib/components/fields/StringToArrayField.d.ts +17 -17
- package/lib/components/fields/ToggleAdditionalArrayFieldsField.d.ts +1 -1
- package/lib/components/fields/UnitListShorthandArrayField.d.ts +16 -16
- package/lib/components/widgets/SelectWidget.d.ts +15 -14
- package/lib/components/widgets/SelectWidget.js +37 -26
- package/lib/services/submit-hook-service.d.ts +1 -1
- package/lib/translations.json +5 -0
- package/lib/types.d.ts +8 -10
- package/lib/types.js +5 -1
- package/lib/utils.d.ts +5 -4
- package/lib/utils.js +8 -8
- package/package.json +3 -2
- package/lib/components/fields/NamedPlaceChooserField.d.ts +0 -115
- package/lib/components/fields/NamedPlaceChooserField.js +0 -402
|
@@ -14,20 +14,20 @@ export default class NamedPlaceSaverField extends React.Component<any, any, any>
|
|
|
14
14
|
getStateFromProps(props: any): {
|
|
15
15
|
uiSchema: {
|
|
16
16
|
"ui:options": any;
|
|
17
|
-
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any,
|
|
18
|
-
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any,
|
|
19
|
-
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any,
|
|
20
|
-
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any,
|
|
21
|
-
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any,
|
|
22
|
-
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any,
|
|
23
|
-
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any,
|
|
24
|
-
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any,
|
|
25
|
-
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any,
|
|
26
|
-
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any,
|
|
27
|
-
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any,
|
|
28
|
-
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any,
|
|
29
|
-
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any,
|
|
30
|
-
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any,
|
|
17
|
+
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
18
|
+
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
19
|
+
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
20
|
+
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
21
|
+
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
22
|
+
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
23
|
+
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
24
|
+
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
25
|
+
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
26
|
+
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
27
|
+
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
28
|
+
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
29
|
+
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
30
|
+
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
31
31
|
"ui:classNames"?: string | undefined;
|
|
32
32
|
"ui:style"?: React.StyleHTMLAttributes<any> | undefined;
|
|
33
33
|
"ui:title"?: string | undefined;
|
|
@@ -50,10 +50,10 @@ export default class NamedPlaceSaverField extends React.Component<any, any, any>
|
|
|
50
50
|
"ui:label"?: boolean | undefined;
|
|
51
51
|
"ui:rows"?: number | undefined;
|
|
52
52
|
"ui:submitButtonOptions"?: import("@rjsf/utils").UISchemaSubmitButtonOptions | undefined;
|
|
53
|
-
"ui:widget"?: string | import("@rjsf/utils").Widget<any,
|
|
53
|
+
"ui:widget"?: string | import("@rjsf/utils").Widget<any, any, import("../LajiForm").FormContext> | undefined;
|
|
54
54
|
"ui:duplicateKeySuffixSeparator"?: string | undefined;
|
|
55
55
|
"ui:rootFieldId"?: string | undefined;
|
|
56
|
-
"ui:field"?: string | import("@rjsf/utils").Field<any,
|
|
56
|
+
"ui:field"?: string | import("@rjsf/utils").Field<any, any, import("../LajiForm").FormContext> | undefined;
|
|
57
57
|
"ui:fieldReplacesAnyOrOneOf"?: boolean | undefined;
|
|
58
58
|
};
|
|
59
59
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { FieldProps, JSONSchemaArray, JSONSchemaObject } from "../../types";
|
|
3
3
|
import { MediaArrayState } from "./ImageArrayField";
|
|
4
|
-
export default class PdfArrayField extends React.Component<FieldProps<JSONSchemaArray<JSONSchemaObject>>, MediaArrayState> {
|
|
4
|
+
export default class PdfArrayField extends React.Component<FieldProps<any, JSONSchemaArray<JSONSchemaObject>>, MediaArrayState> {
|
|
5
5
|
ALLOWED_FILE_TYPES: string[];
|
|
6
6
|
ACCEPT_FILE_TYPES: string[];
|
|
7
7
|
MAX_FILE_SIZE: number;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export default class _SchemaField extends React.Component<any, any, any> {
|
|
2
|
-
constructor(props: any);
|
|
3
|
-
updateVirtualInstance: (props: any, initial: any) => void;
|
|
4
|
-
functionOutputProps: any;
|
|
5
|
-
applyFunction(props: any): any;
|
|
6
|
-
}
|
|
7
1
|
import * as React from "react";
|
|
2
|
+
import { FieldProps } from "../../types";
|
|
3
|
+
export default class _SchemaField extends React.Component<FieldProps> {
|
|
4
|
+
applyFunction(props: FieldProps): FieldProps<any, import("../../types").JSONSchemaObject>;
|
|
5
|
+
render(): JSX.Element;
|
|
6
|
+
}
|
|
@@ -34,32 +34,12 @@ const React = __importStar(require("react"));
|
|
|
34
34
|
const utils_1 = require("../../utils");
|
|
35
35
|
const utils_2 = require("@luomus/laji-map/lib/utils");
|
|
36
36
|
const ContextInjectionField_1 = require("./ContextInjectionField");
|
|
37
|
-
const utils_3 = require("@rjsf/utils");
|
|
38
37
|
const core_1 = require("@rjsf/core");
|
|
38
|
+
const types_1 = require("../../types");
|
|
39
39
|
class _SchemaField extends React.Component {
|
|
40
|
-
constructor(props) {
|
|
41
|
-
super(props);
|
|
42
|
-
this.updateVirtualInstance = (props, initial) => {
|
|
43
|
-
const virtualizedProps = ["ui:functions", "ui:childFunctions", "ui:annotations", "ui:multiLanguage"];
|
|
44
|
-
if ([props, this.props].some(_props => _props.uiSchema && virtualizedProps.some(prop => _props.uiSchema[prop])) &&
|
|
45
|
-
(initial || !utils_3.deepEquals(this.props, props))) {
|
|
46
|
-
this.functionOutputProps = this.applyFunction(props);
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
this.updateVirtualInstance(props, !!"initial");
|
|
50
|
-
this.state = { showAnnotations: false };
|
|
51
|
-
}
|
|
52
|
-
UNSAFE_componentWillReceiveProps(props) {
|
|
53
|
-
this.updateVirtualInstance(props);
|
|
54
|
-
}
|
|
55
40
|
applyFunction(props) {
|
|
56
41
|
let _a = (props.uiSchema || {}), { "ui:functions": functions, "ui:childFunctions": childFunctions, "ui:annotations": annotations, "ui:multiLanguage": multiLanguage } = _a, _uiSchema = __rest(_a, ["ui:functions", "ui:childFunctions", "ui:annotations", "ui:multiLanguage"]);
|
|
57
|
-
|
|
58
|
-
? (Array.isArray(item)
|
|
59
|
-
? item
|
|
60
|
-
: [item])
|
|
61
|
-
: []);
|
|
62
|
-
functions = objectOrArrayAsArray(functions);
|
|
42
|
+
functions = functions ? utils_1.asArray(functions) : [];
|
|
63
43
|
if (childFunctions) {
|
|
64
44
|
functions = [
|
|
65
45
|
{ "ui:field": "UiFieldMapperArrayField", "ui:options": { functions: childFunctions } },
|
|
@@ -97,13 +77,13 @@ class _SchemaField extends React.Component {
|
|
|
97
77
|
return Object.assign(Object.assign({}, _props), { uiSchema: Object.assign(Object.assign({}, _props.uiSchema), { "ui:functions": restUiFns }) });
|
|
98
78
|
}
|
|
99
79
|
render() {
|
|
100
|
-
const props = this.
|
|
80
|
+
const props = this.applyFunction(this.props);
|
|
101
81
|
let { schema, uiSchema = {}, formContext, registry } = props, _props = __rest(props, ["schema", "uiSchema", "formContext", "registry"]); // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
102
82
|
const { formContext: _formContext } = registry;
|
|
103
83
|
// rjsf displays a duplicate label if 'uniqueItems' is true in some cases. We prevent that here.
|
|
104
84
|
// Example of when it shows duplicate is http://localhost:8083/?id=JX.652&local=true, "Elinympäristö" on gathering
|
|
105
85
|
// level.
|
|
106
|
-
if (
|
|
86
|
+
if (types_1.isJSONSchemaArray(schema) && uiSchema && uiSchema.items && uiSchema.items["ui:field"]) {
|
|
107
87
|
schema = Object.assign(Object.assign({}, schema), { uniqueItems: false });
|
|
108
88
|
}
|
|
109
89
|
const options = utils_1.getUiOptions(uiSchema);
|
|
@@ -60,7 +60,7 @@ export default class ScopeField extends React.Component<any, any, any> {
|
|
|
60
60
|
_globals: any;
|
|
61
61
|
getSchemasAndAdditionals: (props: any, state: any) => {
|
|
62
62
|
schema: any;
|
|
63
|
-
uiSchema: import("../../types").UiSchema
|
|
63
|
+
uiSchema: import("../../types").UiSchema<any>;
|
|
64
64
|
additionalFields: any;
|
|
65
65
|
defaultFields: any;
|
|
66
66
|
fieldsToShow: {};
|
|
@@ -58,7 +58,7 @@ const getChildProps = (props) => {
|
|
|
58
58
|
let formData = {};
|
|
59
59
|
let idSchema = { $id: props.idSchema.$id };
|
|
60
60
|
let dictionarifiedEnums = {};
|
|
61
|
-
props.schema.oneOf.forEach(e => {
|
|
61
|
+
props.schema.oneOf.forEach((e) => {
|
|
62
62
|
dictionarifiedEnums[e.const] = e.title;
|
|
63
63
|
});
|
|
64
64
|
const tree = utils_1.getUiOptions(props.uiSchema).tree;
|
|
@@ -60,20 +60,20 @@ export default class SortArrayField extends React.Component<FieldProps<JSONSchem
|
|
|
60
60
|
syncColumns(): void;
|
|
61
61
|
getUiShema(props: FieldProps<JSONSchemaArray<JSONSchemaObject>>, { sortCols }: State, sortedData: any[]): {
|
|
62
62
|
"ui:options": any;
|
|
63
|
-
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any,
|
|
64
|
-
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any,
|
|
65
|
-
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any,
|
|
66
|
-
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any,
|
|
67
|
-
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any,
|
|
68
|
-
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any,
|
|
69
|
-
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any,
|
|
70
|
-
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any,
|
|
71
|
-
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any,
|
|
72
|
-
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any,
|
|
73
|
-
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any,
|
|
74
|
-
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any,
|
|
75
|
-
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any,
|
|
76
|
-
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any,
|
|
63
|
+
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any, any, FormContext>> | undefined;
|
|
64
|
+
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any, any, FormContext>> | undefined;
|
|
65
|
+
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any, any, FormContext>> | undefined;
|
|
66
|
+
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any, any, FormContext>> | undefined;
|
|
67
|
+
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any, any, FormContext>> | undefined;
|
|
68
|
+
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any, any, FormContext>> | undefined;
|
|
69
|
+
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any, any, FormContext>> | undefined;
|
|
70
|
+
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any, any, FormContext>> | undefined;
|
|
71
|
+
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any, any, FormContext>> | undefined;
|
|
72
|
+
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any, any, FormContext>> | undefined;
|
|
73
|
+
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any, any, FormContext>> | undefined;
|
|
74
|
+
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any, any, FormContext>> | undefined;
|
|
75
|
+
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any, any, FormContext>> | undefined;
|
|
76
|
+
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any, any, FormContext>> | undefined;
|
|
77
77
|
"ui:classNames"?: string | undefined;
|
|
78
78
|
"ui:style"?: React.StyleHTMLAttributes<any> | undefined;
|
|
79
79
|
"ui:title"?: string | undefined;
|
|
@@ -96,30 +96,30 @@ export default class SortArrayField extends React.Component<FieldProps<JSONSchem
|
|
|
96
96
|
"ui:label"?: boolean | undefined;
|
|
97
97
|
"ui:rows"?: number | undefined;
|
|
98
98
|
"ui:submitButtonOptions"?: import("@rjsf/utils").UISchemaSubmitButtonOptions | undefined;
|
|
99
|
-
"ui:widget"?: string | import("@rjsf/utils").Widget<any,
|
|
99
|
+
"ui:widget"?: string | import("@rjsf/utils").Widget<any, any, FormContext> | undefined;
|
|
100
100
|
"ui:duplicateKeySuffixSeparator"?: string | undefined;
|
|
101
101
|
"ui:rootFieldId"?: string | undefined;
|
|
102
|
-
"ui:field"?: string | import("@rjsf/utils").Field<any,
|
|
102
|
+
"ui:field"?: string | import("@rjsf/utils").Field<any, any, FormContext> | undefined;
|
|
103
103
|
"ui:fieldReplacesAnyOrOneOf"?: boolean | undefined;
|
|
104
104
|
};
|
|
105
105
|
getSortableColumns(props: FieldProps<JSONSchemaArray<JSONSchemaObject>>): string[] | undefined;
|
|
106
106
|
getNextComponentProps(props: any, state: State): {
|
|
107
107
|
uiSchema: {
|
|
108
108
|
"ui:options": any;
|
|
109
|
-
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any,
|
|
110
|
-
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any,
|
|
111
|
-
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any,
|
|
112
|
-
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any,
|
|
113
|
-
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any,
|
|
114
|
-
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any,
|
|
115
|
-
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any,
|
|
116
|
-
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any,
|
|
117
|
-
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any,
|
|
118
|
-
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any,
|
|
119
|
-
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any,
|
|
120
|
-
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any,
|
|
121
|
-
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any,
|
|
122
|
-
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any,
|
|
109
|
+
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any, any, FormContext>> | undefined;
|
|
110
|
+
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any, any, FormContext>> | undefined;
|
|
111
|
+
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any, any, FormContext>> | undefined;
|
|
112
|
+
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any, any, FormContext>> | undefined;
|
|
113
|
+
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any, any, FormContext>> | undefined;
|
|
114
|
+
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any, any, FormContext>> | undefined;
|
|
115
|
+
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any, any, FormContext>> | undefined;
|
|
116
|
+
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any, any, FormContext>> | undefined;
|
|
117
|
+
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any, any, FormContext>> | undefined;
|
|
118
|
+
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any, any, FormContext>> | undefined;
|
|
119
|
+
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any, any, FormContext>> | undefined;
|
|
120
|
+
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any, any, FormContext>> | undefined;
|
|
121
|
+
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any, any, FormContext>> | undefined;
|
|
122
|
+
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any, any, FormContext>> | undefined;
|
|
123
123
|
"ui:classNames"?: string | undefined;
|
|
124
124
|
"ui:style"?: React.StyleHTMLAttributes<any> | undefined;
|
|
125
125
|
"ui:title"?: string | undefined;
|
|
@@ -142,10 +142,10 @@ export default class SortArrayField extends React.Component<FieldProps<JSONSchem
|
|
|
142
142
|
"ui:label"?: boolean | undefined;
|
|
143
143
|
"ui:rows"?: number | undefined;
|
|
144
144
|
"ui:submitButtonOptions"?: import("@rjsf/utils").UISchemaSubmitButtonOptions | undefined;
|
|
145
|
-
"ui:widget"?: string | import("@rjsf/utils").Widget<any,
|
|
145
|
+
"ui:widget"?: string | import("@rjsf/utils").Widget<any, any, FormContext> | undefined;
|
|
146
146
|
"ui:duplicateKeySuffixSeparator"?: string | undefined;
|
|
147
147
|
"ui:rootFieldId"?: string | undefined;
|
|
148
|
-
"ui:field"?: string | import("@rjsf/utils").Field<any,
|
|
148
|
+
"ui:field"?: string | import("@rjsf/utils").Field<any, any, FormContext> | undefined;
|
|
149
149
|
"ui:fieldReplacesAnyOrOneOf"?: boolean | undefined;
|
|
150
150
|
};
|
|
151
151
|
formData: any[];
|
|
@@ -42,7 +42,7 @@ let SplitField = class SplitField extends React.Component {
|
|
|
42
42
|
const { SchemaField } = this.props.registry.fields;
|
|
43
43
|
// TODO TS fix typing after NestField ts conversion.
|
|
44
44
|
const _props = NestField_1.getPropsForFields(this.props, fields);
|
|
45
|
-
return (React.createElement(SchemaField, Object.assign({}, this.props, _props, { onChange: this.onChange(fields), name: "" })));
|
|
45
|
+
return (React.createElement(SchemaField, Object.assign({}, this.props, _props, { onChange: this.onChange(fields), name: "", onBlur: this.props.onBlur, onFocus: this.props.onFocus, disabled: this.props.disabled, readonly: this.props.readonly })));
|
|
46
46
|
};
|
|
47
47
|
this.onChange = (fields) => (formData) => {
|
|
48
48
|
this.props.onChange(fields.reduce((updatedFormData, field) => {
|
|
@@ -16,20 +16,20 @@ export default class StringToArrayField extends React.Component<any, any, any> {
|
|
|
16
16
|
};
|
|
17
17
|
formData: any;
|
|
18
18
|
uiSchema: {
|
|
19
|
-
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any,
|
|
20
|
-
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any,
|
|
21
|
-
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any,
|
|
22
|
-
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any,
|
|
23
|
-
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any,
|
|
24
|
-
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any,
|
|
25
|
-
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any,
|
|
26
|
-
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any,
|
|
27
|
-
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any,
|
|
28
|
-
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any,
|
|
29
|
-
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any,
|
|
30
|
-
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any,
|
|
31
|
-
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any,
|
|
32
|
-
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any,
|
|
19
|
+
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
20
|
+
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
21
|
+
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
22
|
+
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
23
|
+
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
24
|
+
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
25
|
+
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
26
|
+
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
27
|
+
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
28
|
+
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
29
|
+
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
30
|
+
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
31
|
+
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
32
|
+
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
33
33
|
"ui:classNames"?: string | undefined;
|
|
34
34
|
"ui:style"?: React.StyleHTMLAttributes<any> | undefined;
|
|
35
35
|
"ui:title"?: string | undefined;
|
|
@@ -52,12 +52,12 @@ export default class StringToArrayField extends React.Component<any, any, any> {
|
|
|
52
52
|
"ui:label"?: boolean | undefined;
|
|
53
53
|
"ui:rows"?: number | undefined;
|
|
54
54
|
"ui:submitButtonOptions"?: import("@rjsf/utils").UISchemaSubmitButtonOptions | undefined;
|
|
55
|
-
"ui:widget"?: string | import("@rjsf/utils").Widget<any,
|
|
55
|
+
"ui:widget"?: string | import("@rjsf/utils").Widget<any, any, import("../LajiForm").FormContext> | undefined;
|
|
56
56
|
"ui:duplicateKeySuffixSeparator"?: string | undefined;
|
|
57
57
|
"ui:rootFieldId"?: string | undefined;
|
|
58
|
-
"ui:field"?: string | import("@rjsf/utils").Field<any,
|
|
58
|
+
"ui:field"?: string | import("@rjsf/utils").Field<any, any, import("../LajiForm").FormContext> | undefined;
|
|
59
59
|
"ui:fieldReplacesAnyOrOneOf"?: boolean | undefined;
|
|
60
|
-
"ui:options"?: import("@rjsf/utils").UIOptionsType<any,
|
|
60
|
+
"ui:options"?: import("@rjsf/utils").UIOptionsType<any, any, import("../LajiForm").FormContext> | undefined;
|
|
61
61
|
};
|
|
62
62
|
onChange: (formData: any) => void;
|
|
63
63
|
};
|
|
@@ -18,7 +18,7 @@ export default class ToggleAdditionalArrayFieldsField extends React.Component<an
|
|
|
18
18
|
getTogglePersistenceContextKey: (props: any) => string;
|
|
19
19
|
getInitialVisible(props: any): unknown;
|
|
20
20
|
getStateFromProps(props: any): {
|
|
21
|
-
uiSchema: import("../../types").UiSchema
|
|
21
|
+
uiSchema: import("../../types").UiSchema<any>;
|
|
22
22
|
};
|
|
23
23
|
toggleVisibility: () => void;
|
|
24
24
|
}
|
|
@@ -14,20 +14,20 @@ export default class UnitListShorthandArrayField extends React.Component<any, an
|
|
|
14
14
|
getStateFromProps(props: any): {
|
|
15
15
|
uiSchema: {
|
|
16
16
|
"ui:options": any;
|
|
17
|
-
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any,
|
|
18
|
-
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any,
|
|
19
|
-
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any,
|
|
20
|
-
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any,
|
|
21
|
-
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any,
|
|
22
|
-
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any,
|
|
23
|
-
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any,
|
|
24
|
-
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any,
|
|
25
|
-
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any,
|
|
26
|
-
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any,
|
|
27
|
-
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any,
|
|
28
|
-
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any,
|
|
29
|
-
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any,
|
|
30
|
-
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any,
|
|
17
|
+
"ui:ArrayFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
18
|
+
"ui:ArrayFieldDescriptionTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldDescriptionProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
19
|
+
"ui:ArrayFieldItemTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTemplateItemType<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
20
|
+
"ui:ArrayFieldTitleTemplate"?: React.ComponentType<import("@rjsf/utils").ArrayFieldTitleProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
21
|
+
"ui:BaseInputTemplate"?: React.ComponentType<import("@rjsf/utils").WidgetProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
22
|
+
"ui:DescriptionFieldTemplate"?: React.ComponentType<import("@rjsf/utils").DescriptionFieldProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
23
|
+
"ui:ErrorListTemplate"?: React.ComponentType<import("@rjsf/utils").ErrorListProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
24
|
+
"ui:FieldErrorTemplate"?: React.ComponentType<import("@rjsf/utils").FieldErrorProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
25
|
+
"ui:FieldHelpTemplate"?: React.ComponentType<import("@rjsf/utils").FieldHelpProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
26
|
+
"ui:FieldTemplate"?: React.ComponentType<import("@rjsf/utils").FieldTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
27
|
+
"ui:ObjectFieldTemplate"?: React.ComponentType<import("@rjsf/utils").ObjectFieldTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
28
|
+
"ui:TitleFieldTemplate"?: React.ComponentType<import("@rjsf/utils").TitleFieldProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
29
|
+
"ui:UnsupportedFieldTemplate"?: React.ComponentType<import("@rjsf/utils").UnsupportedFieldProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
30
|
+
"ui:WrapIfAdditionalTemplate"?: React.ComponentType<import("@rjsf/utils").WrapIfAdditionalTemplateProps<any, any, import("../LajiForm").FormContext>> | undefined;
|
|
31
31
|
"ui:classNames"?: string | undefined;
|
|
32
32
|
"ui:style"?: React.StyleHTMLAttributes<any> | undefined;
|
|
33
33
|
"ui:title"?: string | undefined;
|
|
@@ -50,10 +50,10 @@ export default class UnitListShorthandArrayField extends React.Component<any, an
|
|
|
50
50
|
"ui:label"?: boolean | undefined;
|
|
51
51
|
"ui:rows"?: number | undefined;
|
|
52
52
|
"ui:submitButtonOptions"?: import("@rjsf/utils").UISchemaSubmitButtonOptions | undefined;
|
|
53
|
-
"ui:widget"?: string | import("@rjsf/utils").Widget<any,
|
|
53
|
+
"ui:widget"?: string | import("@rjsf/utils").Widget<any, any, import("../LajiForm").FormContext> | undefined;
|
|
54
54
|
"ui:duplicateKeySuffixSeparator"?: string | undefined;
|
|
55
55
|
"ui:rootFieldId"?: string | undefined;
|
|
56
|
-
"ui:field"?: string | import("@rjsf/utils").Field<any,
|
|
56
|
+
"ui:field"?: string | import("@rjsf/utils").Field<any, any, import("../LajiForm").FormContext> | undefined;
|
|
57
57
|
"ui:fieldReplacesAnyOrOneOf"?: boolean | undefined;
|
|
58
58
|
};
|
|
59
59
|
};
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { EnumOptionsType as _EnumOptionsType } from "@rjsf/utils";
|
|
3
3
|
import { JSONSchemaArray, JSONSchemaEnum, JSONSchemaEnumOneOf, WidgetProps } from "../../types";
|
|
4
|
-
declare type EnumOptionsType<T = string | undefined> = Omit<_EnumOptionsType, "value"> & {
|
|
4
|
+
declare type EnumOptionsType<T = string | number | undefined> = Omit<_EnumOptionsType, "value"> & {
|
|
5
5
|
value: T;
|
|
6
6
|
};
|
|
7
|
-
declare type SelectWidgetCustomProps = {
|
|
7
|
+
declare type SelectWidgetCustomProps<T> = {
|
|
8
8
|
includeEmpty?: boolean;
|
|
9
|
-
getEnumOptionsAsync?: () => Promise<EnumOptionsType<
|
|
9
|
+
getEnumOptionsAsync?: () => Promise<EnumOptionsType<T>[]>;
|
|
10
10
|
};
|
|
11
|
-
declare type SingleSelectWidgetProps = Omit<WidgetProps<JSONSchemaEnum>, "value" | "onChange"> & {
|
|
12
|
-
value?:
|
|
13
|
-
onChange: (value?:
|
|
14
|
-
} & SelectWidgetCustomProps
|
|
15
|
-
declare type MultiSelectWidgetProps = Omit<WidgetProps<JSONSchemaArray<JSONSchemaEnumOneOf>>, "value" | "onChange"> & {
|
|
16
|
-
value?:
|
|
17
|
-
onChange: (value?:
|
|
18
|
-
} & SelectWidgetCustomProps
|
|
19
|
-
declare type SelectWidgetProps = SingleSelectWidgetProps | MultiSelectWidgetProps
|
|
20
|
-
|
|
21
|
-
export
|
|
11
|
+
declare type SingleSelectWidgetProps<T extends string | number> = Omit<WidgetProps<JSONSchemaEnum>, "value" | "onChange"> & {
|
|
12
|
+
value?: T;
|
|
13
|
+
onChange: (value?: T) => void;
|
|
14
|
+
} & SelectWidgetCustomProps<T>;
|
|
15
|
+
declare type MultiSelectWidgetProps<T extends string | number> = Omit<WidgetProps<JSONSchemaArray<JSONSchemaEnumOneOf>>, "value" | "onChange"> & {
|
|
16
|
+
value?: T[];
|
|
17
|
+
onChange: (value?: T[]) => void;
|
|
18
|
+
} & SelectWidgetCustomProps<T>;
|
|
19
|
+
declare type SelectWidgetProps<T extends string | number> = SingleSelectWidgetProps<T> | MultiSelectWidgetProps<T>;
|
|
20
|
+
declare const SelectWidget: <T extends string | number>(props: SelectWidgetProps<T>) => JSX.Element;
|
|
21
|
+
export default SelectWidget;
|
|
22
|
+
export declare function SearchableDrowndown<T extends string | number>(props: SingleSelectWidgetProps<T>): JSX.Element;
|
|
@@ -31,8 +31,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
31
31
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
32
32
|
};
|
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.SearchableDrowndown = void 0;
|
|
34
35
|
const React = __importStar(require("react"));
|
|
35
|
-
// import * as PropTypes from "prop-types";
|
|
36
36
|
const ReactContext_1 = __importDefault(require("../../ReactContext"));
|
|
37
37
|
const utils_1 = require("../../utils");
|
|
38
38
|
const react_1 = require("react");
|
|
@@ -71,9 +71,9 @@ function getEnumOptions(enumOptions, uiSchema, includeEmpty = true) {
|
|
|
71
71
|
: [{ value: undefined, label: "" }, ...enums];
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
74
|
+
const SelectWidget = (props) => props.schema.type === "array"
|
|
75
|
+
? React.createElement(SearchableMultiDrowndown, Object.assign({}, props))
|
|
76
|
+
: React.createElement(SearchableDrowndown, Object.assign({}, props));
|
|
77
77
|
exports.default = SelectWidget;
|
|
78
78
|
function SearchableDrowndown(props) {
|
|
79
79
|
const { id, disabled, readonly, value, uiSchema, options, onChange, includeEmpty = true } = props;
|
|
@@ -109,11 +109,14 @@ function SearchableDrowndown(props) {
|
|
|
109
109
|
setActiveIdx(0);
|
|
110
110
|
}, [setActiveIdx]);
|
|
111
111
|
const onItemSelected = react_1.useCallback((item) => {
|
|
112
|
+
if (item.value === value) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
112
115
|
onChange(item.value);
|
|
113
116
|
setFilterTerm(undefined);
|
|
114
117
|
setActiveIdx(enumOptions.findIndex(enu => enu.value === item.value));
|
|
115
118
|
hide();
|
|
116
|
-
}, [enumOptions, hide, onChange, setActiveIdx]);
|
|
119
|
+
}, [enumOptions, hide, onChange, setActiveIdx, value]);
|
|
117
120
|
const onBlur = react_1.useCallback((e) => {
|
|
118
121
|
// Fixes the issue that when user tries to click an enum item, `setOpen(false)`
|
|
119
122
|
// hides the enum list, so the elem list item is hidden before the click, thus never
|
|
@@ -170,25 +173,19 @@ function SearchableDrowndown(props) {
|
|
|
170
173
|
return (React.createElement(ListItem, { key: (_a = oneOf.value) !== null && _a !== void 0 ? _a : "", onSelected: onItemSelected, active: idx === activeIdx }, oneOf));
|
|
171
174
|
}))));
|
|
172
175
|
}
|
|
176
|
+
exports.SearchableDrowndown = SearchableDrowndown;
|
|
173
177
|
function SearchableMultiDrowndown(props) {
|
|
174
178
|
const { id, disabled, readonly, value, uiSchema, options, onChange, getEnumOptionsAsync } = props;
|
|
175
179
|
const [enumOptions, setEnumOptions] = react_1.useState(getEnumOptionsAsync
|
|
176
180
|
? undefined
|
|
177
181
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
178
182
|
: getEnumOptions(options.enumOptions, uiSchema, false));
|
|
179
|
-
const [
|
|
180
|
-
const [filterTerm, setFilterTerm] = react_1.useState("");
|
|
183
|
+
const [filterTerm, setFilterTerm] = react_1.useState();
|
|
181
184
|
const [loading, setLoading] = react_1.useState(undefined);
|
|
182
185
|
const [isOpen, show, hide] = utils_1.useBooleanSetter(false);
|
|
186
|
+
const inputValue = filterTerm !== null && filterTerm !== void 0 ? filterTerm : "";
|
|
183
187
|
const containerRef = React.useRef(null);
|
|
184
188
|
const inputRef = React.useRef(null);
|
|
185
|
-
const onInputChange = react_1.useCallback((e) => {
|
|
186
|
-
const { value } = e.target;
|
|
187
|
-
setUserTypedInputValue(value);
|
|
188
|
-
}, []);
|
|
189
|
-
React.useEffect(() => {
|
|
190
|
-
setFilterTerm(inputValue);
|
|
191
|
-
}, [inputValue]);
|
|
192
189
|
const filteredEnums = React.useMemo(() => {
|
|
193
190
|
if (!enumOptions) {
|
|
194
191
|
return [];
|
|
@@ -196,20 +193,27 @@ function SearchableMultiDrowndown(props) {
|
|
|
196
193
|
const notAlreadySelected = (value === null || value === void 0 ? void 0 : value.length)
|
|
197
194
|
? enumOptions.filter(({ value: enumValue }) => !value.includes(enumValue))
|
|
198
195
|
: enumOptions;
|
|
199
|
-
return filterTerm !== ""
|
|
196
|
+
return filterTerm !== undefined && filterTerm !== ""
|
|
200
197
|
? notAlreadySelected.filter(({ label, value: enumValue }) => (value || []).includes(enumValue)
|
|
201
198
|
|| label.toLowerCase().match(filterTerm.toLowerCase()))
|
|
202
199
|
: notAlreadySelected;
|
|
203
200
|
}, [filterTerm, enumOptions, value]);
|
|
204
201
|
const [activeIdx, activeIdxUp, activeIdxDown, setActiveIdx] = useRangeIncrementor((filteredEnums || []).length, undefined);
|
|
202
|
+
const onInputChange = react_1.useCallback((e) => {
|
|
203
|
+
const { value } = e.target;
|
|
204
|
+
setFilterTerm(value);
|
|
205
|
+
setActiveIdx(undefined);
|
|
206
|
+
}, [setActiveIdx]);
|
|
205
207
|
const onItemSelected = react_1.useCallback((item) => {
|
|
206
208
|
var _a;
|
|
207
209
|
onChange([...(value || []), item.value]);
|
|
210
|
+
setFilterTerm(undefined);
|
|
208
211
|
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
209
212
|
setActiveIdx(undefined);
|
|
210
213
|
}, [onChange, setActiveIdx, value]);
|
|
211
214
|
const onItemSelectedByBlur = react_1.useCallback((item) => {
|
|
212
215
|
onChange([...(value || []), item.value]);
|
|
216
|
+
setFilterTerm(undefined);
|
|
213
217
|
setActiveIdx(undefined);
|
|
214
218
|
}, [onChange, setActiveIdx, value]);
|
|
215
219
|
const [isFocused, setFocused, setBlurred] = utils_1.useBooleanSetter(false);
|
|
@@ -267,7 +271,7 @@ function SearchableMultiDrowndown(props) {
|
|
|
267
271
|
onItemSelectedByBlur(filteredEnums[activeIdx]);
|
|
268
272
|
}
|
|
269
273
|
else {
|
|
270
|
-
|
|
274
|
+
setFilterTerm(undefined);
|
|
271
275
|
}
|
|
272
276
|
}, [activeIdx, filteredEnums, hide, onItemSelectedByBlur, setBlurred]);
|
|
273
277
|
const onKeyDown = react_1.useCallback((e) => {
|
|
@@ -285,8 +289,9 @@ function SearchableMultiDrowndown(props) {
|
|
|
285
289
|
e.preventDefault();
|
|
286
290
|
break;
|
|
287
291
|
case "Escape":
|
|
288
|
-
|
|
289
|
-
|
|
292
|
+
if (activeIdx !== undefined && filteredEnums) {
|
|
293
|
+
onItemSelected(filteredEnums[activeIdx]);
|
|
294
|
+
}
|
|
290
295
|
e.preventDefault();
|
|
291
296
|
break;
|
|
292
297
|
case "Backspace":
|
|
@@ -297,12 +302,16 @@ function SearchableMultiDrowndown(props) {
|
|
|
297
302
|
}
|
|
298
303
|
break;
|
|
299
304
|
}
|
|
300
|
-
}, [activeIdx, activeIdxDown, activeIdxUp, filteredEnums, inputValue, onChange, onItemSelected,
|
|
305
|
+
}, [activeIdx, activeIdxDown, activeIdxUp, filteredEnums, inputValue, onChange, onItemSelected, value]);
|
|
301
306
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
302
307
|
const onDelete = react_1.useCallback((enu) => {
|
|
308
|
+
var _a;
|
|
303
309
|
const filtered = value.filter(v => v !== enu.value);
|
|
304
310
|
onChange(value.length === 0 ? undefined : filtered);
|
|
305
|
-
|
|
311
|
+
if (isOpen) {
|
|
312
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
313
|
+
}
|
|
314
|
+
}, [isOpen, onChange, value]);
|
|
306
315
|
/* eslint-enable @typescript-eslint/no-non-null-assertion */
|
|
307
316
|
const redirectFocusToInput = react_1.useCallback((e) => {
|
|
308
317
|
var _a;
|
|
@@ -315,7 +324,7 @@ function SearchableMultiDrowndown(props) {
|
|
|
315
324
|
const wrapperClassNames = utils_1.classNames("laji-form-multiselect-input-wrapper", isOpen && "laji-form-multiselect-input-wrapper-focus", isOpen && "input-highlight", (readonly || disabled) && "laji-form-multiselect-input-wrapper-readonly");
|
|
316
325
|
return (React.createElement("div", { onBlur: onBlur, onKeyDown: onKeyDown, ref: containerRef, className: "laji-form-multiselect", style: { position: "relative" } },
|
|
317
326
|
React.createElement("div", { className: wrapperClassNames, tabIndex: -1, onFocus: redirectFocusToInput, style: { cursor: "text" } },
|
|
318
|
-
React.createElement("ul", { style: { listStyle: "none", display: "inline-block" } }, value && enumOptions && value.map(v => enumOptions.find(({ value: _value }) => v === _value) || ({ value: v, label: v }))
|
|
327
|
+
React.createElement("ul", { style: { listStyle: "none", display: "inline-block" } }, value && enumOptions && value.map(v => enumOptions.find(({ value: _value }) => v === _value) || ({ value: v, label: "" + v }))
|
|
319
328
|
.map(enu => React.createElement(SelectedMultiValue, { key: enu.value, onDelete: onDelete, readonly: readonly || disabled }, enu))),
|
|
320
329
|
React.createElement("input", { disabled: disabled || readonly, id: id, onFocus: onFocus, value: inputValue, onChange: onInputChange, autoComplete: "off", ref: inputRef }),
|
|
321
330
|
loading && React.createElement(react_spinner_1.default, null)),
|
|
@@ -325,12 +334,12 @@ function SearchableMultiDrowndown(props) {
|
|
|
325
334
|
return (React.createElement(ListItem, { key: (_a = oneOf.value) !== null && _a !== void 0 ? _a : "", onSelected: onItemSelected, active: idx === activeIdx }, oneOf));
|
|
326
335
|
}))));
|
|
327
336
|
}
|
|
328
|
-
|
|
337
|
+
function SelectedMultiValue({ children: enu, onDelete, readonly }) {
|
|
329
338
|
const onDeleteClick = react_1.useCallback(() => !readonly && onDelete(enu), [enu, onDelete, readonly]);
|
|
330
339
|
return (React.createElement("li", { key: enu.value, style: { display: "inline-table" }, className: "laji-form-multiselect-tag" },
|
|
331
340
|
enu.label,
|
|
332
341
|
React.createElement("span", { tabIndex: readonly ? undefined : 0, role: readonly ? undefined : "button", onClick: onDeleteClick }, "\u00D7")));
|
|
333
|
-
}
|
|
342
|
+
}
|
|
334
343
|
const Caret = () => (React.createElement("div", { className: "laji-form-dropdown-caret-container", style: { position: "absolute", pointerEvents: "none" } },
|
|
335
344
|
React.createElement("span", { className: "laji-form-dropdown-caret" },
|
|
336
345
|
React.createElement("img", { src: "https://cdn.laji.fi/images/icons/caret-down.svg" }))));
|
|
@@ -340,6 +349,8 @@ function ListItem({ onSelected, active, children }) {
|
|
|
340
349
|
}, [children, onSelected]);
|
|
341
350
|
return (React.createElement("div", { onClick: onClick, className: utils_1.classNames("laji-form-dropdown-item", active && "active"), tabIndex: -1 }, children.label));
|
|
342
351
|
}
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
352
|
+
function getDefaultActiveIdx(filteredEnums, value) {
|
|
353
|
+
return value !== undefined && value !== ""
|
|
354
|
+
? filteredEnums.findIndex(item => item.value === value)
|
|
355
|
+
: 0;
|
|
356
|
+
}
|