@luomus/laji-form 15.1.29 → 15.1.31
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/dist/styles.css +11 -1
- package/lib/components/fields/ConditionalUiSchemaField.d.ts +21 -0
- package/lib/components/fields/ConditionalUiSchemaField.js +4 -0
- package/lib/components/fields/FilterArrayField.d.ts +12 -0
- package/lib/components/fields/MultiArrayField.d.ts +6 -0
- package/lib/components/widgets/AutosuggestWidget.js +44 -44
- package/lib/components/widgets/CheckboxWidget.js +4 -2
- package/lib/components/widgets/SelectWidget.js +2 -1
- package/lib/translations.json +5 -0
- package/package.json +1 -1
package/dist/styles.css
CHANGED
|
@@ -3150,6 +3150,9 @@ body .laji-form {
|
|
|
3150
3150
|
margin-top: 5px;
|
|
3151
3151
|
}
|
|
3152
3152
|
|
|
3153
|
+
.laji-form .autosuggest-input-addon {
|
|
3154
|
+
margin-bottom: 0px;
|
|
3155
|
+
}
|
|
3153
3156
|
.laji-form .autosuggest-input-addon.active {
|
|
3154
3157
|
color: #2980b9 !important;
|
|
3155
3158
|
}
|
|
@@ -3848,9 +3851,12 @@ body .laji-form {
|
|
|
3848
3851
|
font-size: 20px;
|
|
3849
3852
|
}
|
|
3850
3853
|
.laji-form-dropdown-caret {
|
|
3851
|
-
bottom: 2px;
|
|
3852
3854
|
position: absolute;
|
|
3853
3855
|
right: 3px;
|
|
3856
|
+
bottom: 0px;
|
|
3857
|
+
}
|
|
3858
|
+
.laji-form-dropdown-caret img {
|
|
3859
|
+
width: 20px;
|
|
3854
3860
|
}
|
|
3855
3861
|
|
|
3856
3862
|
.laji-form-multiselect-input-wrapper-focus {
|
|
@@ -3859,4 +3865,8 @@ body .laji-form {
|
|
|
3859
3865
|
.laji-form-multiselect-input-wrapper-readonly {
|
|
3860
3866
|
background-color: #eee;
|
|
3861
3867
|
}
|
|
3868
|
+
.laji-form-checkbox-buttons .btn {
|
|
3869
|
+
height: 25px;
|
|
3870
|
+
}
|
|
3871
|
+
|
|
3862
3872
|
|
|
@@ -5,6 +5,9 @@ export const rulePropType: PropTypes.Requireable<string | PropTypes.InferProps<{
|
|
|
5
5
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
6
6
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
7
7
|
complement: PropTypes.Requireable<boolean>;
|
|
8
|
+
}> | PropTypes.InferProps<{
|
|
9
|
+
rule: PropTypes.Requireable<string>;
|
|
10
|
+
complement: PropTypes.Requireable<boolean>;
|
|
8
11
|
}>>;
|
|
9
12
|
export const operationPropType: PropTypes.Requireable<PropTypes.InferProps<{
|
|
10
13
|
type: PropTypes.Requireable<string>;
|
|
@@ -17,6 +20,9 @@ export const rulesPropType: PropTypes.Requireable<string | PropTypes.InferProps<
|
|
|
17
20
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
18
21
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
19
22
|
complement: PropTypes.Requireable<boolean>;
|
|
23
|
+
}> | PropTypes.InferProps<{
|
|
24
|
+
rule: PropTypes.Requireable<string>;
|
|
25
|
+
complement: PropTypes.Requireable<boolean>;
|
|
20
26
|
}> | (string | PropTypes.InferProps<{
|
|
21
27
|
container: PropTypes.Requireable<string>;
|
|
22
28
|
field: PropTypes.Validator<string>;
|
|
@@ -24,6 +30,9 @@ export const rulesPropType: PropTypes.Requireable<string | PropTypes.InferProps<
|
|
|
24
30
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
25
31
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
26
32
|
complement: PropTypes.Requireable<boolean>;
|
|
33
|
+
}> | PropTypes.InferProps<{
|
|
34
|
+
rule: PropTypes.Requireable<string>;
|
|
35
|
+
complement: PropTypes.Requireable<boolean>;
|
|
27
36
|
}> | null | undefined)[]>;
|
|
28
37
|
/**
|
|
29
38
|
* Transforms uiSchema according to conditional cases. Cases are not mutually exclusive.
|
|
@@ -64,6 +73,9 @@ export default class ConditionalUiSchemaField extends React.Component<any, any,
|
|
|
64
73
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
65
74
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
66
75
|
complement: PropTypes.Requireable<boolean>;
|
|
76
|
+
}> | PropTypes.InferProps<{
|
|
77
|
+
rule: PropTypes.Requireable<string>;
|
|
78
|
+
complement: PropTypes.Requireable<boolean>;
|
|
67
79
|
}> | (string | PropTypes.InferProps<{
|
|
68
80
|
container: PropTypes.Requireable<string>;
|
|
69
81
|
field: PropTypes.Validator<string>;
|
|
@@ -71,6 +83,9 @@ export default class ConditionalUiSchemaField extends React.Component<any, any,
|
|
|
71
83
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
72
84
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
73
85
|
complement: PropTypes.Requireable<boolean>;
|
|
86
|
+
}> | PropTypes.InferProps<{
|
|
87
|
+
rule: PropTypes.Requireable<string>;
|
|
88
|
+
complement: PropTypes.Requireable<boolean>;
|
|
74
89
|
}> | null | undefined)[]>;
|
|
75
90
|
operations: PropTypes.Requireable<PropTypes.InferProps<{
|
|
76
91
|
type: PropTypes.Requireable<string>;
|
|
@@ -87,6 +102,9 @@ export default class ConditionalUiSchemaField extends React.Component<any, any,
|
|
|
87
102
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
88
103
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
89
104
|
complement: PropTypes.Requireable<boolean>;
|
|
105
|
+
}> | PropTypes.InferProps<{
|
|
106
|
+
rule: PropTypes.Requireable<string>;
|
|
107
|
+
complement: PropTypes.Requireable<boolean>;
|
|
90
108
|
}> | (string | PropTypes.InferProps<{
|
|
91
109
|
container: PropTypes.Requireable<string>;
|
|
92
110
|
field: PropTypes.Validator<string>;
|
|
@@ -94,6 +112,9 @@ export default class ConditionalUiSchemaField extends React.Component<any, any,
|
|
|
94
112
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
95
113
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
96
114
|
complement: PropTypes.Requireable<boolean>;
|
|
115
|
+
}> | PropTypes.InferProps<{
|
|
116
|
+
rule: PropTypes.Requireable<string>;
|
|
117
|
+
complement: PropTypes.Requireable<boolean>;
|
|
97
118
|
}> | null | undefined)[]>;
|
|
98
119
|
operations: PropTypes.Requireable<PropTypes.InferProps<{
|
|
99
120
|
type: PropTypes.Requireable<string>;
|
|
@@ -21,6 +21,10 @@ exports.rulePropType = PropTypes.oneOfType([
|
|
|
21
21
|
valueLengthLessThan: PropTypes.number,
|
|
22
22
|
complement: PropTypes.bool
|
|
23
23
|
}),
|
|
24
|
+
PropTypes.shape({
|
|
25
|
+
rule: PropTypes.oneOf(["isAdmin", "isEdit"]),
|
|
26
|
+
complement: PropTypes.bool
|
|
27
|
+
}),
|
|
24
28
|
PropTypes.oneOf(["isAdmin", "isEdit"])
|
|
25
29
|
]);
|
|
26
30
|
exports.operationPropType = PropTypes.shape({
|
|
@@ -5,6 +5,9 @@ export const arrayRulesPropType: PropTypes.Requireable<string | PropTypes.InferP
|
|
|
5
5
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
6
6
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
7
7
|
complement: PropTypes.Requireable<boolean>;
|
|
8
|
+
}> | PropTypes.InferProps<{
|
|
9
|
+
rule: PropTypes.Requireable<string>;
|
|
10
|
+
complement: PropTypes.Requireable<boolean>;
|
|
8
11
|
}> | PropTypes.InferProps<{
|
|
9
12
|
idx: PropTypes.Requireable<number>;
|
|
10
13
|
isLast: PropTypes.Requireable<number>;
|
|
@@ -16,6 +19,9 @@ export const arrayRulesPropType: PropTypes.Requireable<string | PropTypes.InferP
|
|
|
16
19
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
17
20
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
18
21
|
complement: PropTypes.Requireable<boolean>;
|
|
22
|
+
}> | PropTypes.InferProps<{
|
|
23
|
+
rule: PropTypes.Requireable<string>;
|
|
24
|
+
complement: PropTypes.Requireable<boolean>;
|
|
19
25
|
}> | PropTypes.InferProps<{
|
|
20
26
|
idx: PropTypes.Requireable<number>;
|
|
21
27
|
isLast: PropTypes.Requireable<number>;
|
|
@@ -32,6 +38,9 @@ export default class FilterArrayField extends React.Component<any, any, any> {
|
|
|
32
38
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
33
39
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
34
40
|
complement: PropTypes.Requireable<boolean>;
|
|
41
|
+
}> | PropTypes.InferProps<{
|
|
42
|
+
rule: PropTypes.Requireable<string>;
|
|
43
|
+
complement: PropTypes.Requireable<boolean>;
|
|
35
44
|
}> | PropTypes.InferProps<{
|
|
36
45
|
idx: PropTypes.Requireable<number>;
|
|
37
46
|
isLast: PropTypes.Requireable<number>;
|
|
@@ -43,6 +52,9 @@ export default class FilterArrayField extends React.Component<any, any, any> {
|
|
|
43
52
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
44
53
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
45
54
|
complement: PropTypes.Requireable<boolean>;
|
|
55
|
+
}> | PropTypes.InferProps<{
|
|
56
|
+
rule: PropTypes.Requireable<string>;
|
|
57
|
+
complement: PropTypes.Requireable<boolean>;
|
|
46
58
|
}> | PropTypes.InferProps<{
|
|
47
59
|
idx: PropTypes.Requireable<number>;
|
|
48
60
|
isLast: PropTypes.Requireable<number>;
|
|
@@ -9,6 +9,9 @@ export default class MultiArrayField extends React.Component<any, any, any> {
|
|
|
9
9
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
10
10
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
11
11
|
complement: PropTypes.Requireable<boolean>;
|
|
12
|
+
}> | PropTypes.InferProps<{
|
|
13
|
+
rule: PropTypes.Requireable<string>;
|
|
14
|
+
complement: PropTypes.Requireable<boolean>;
|
|
12
15
|
}> | PropTypes.InferProps<{
|
|
13
16
|
idx: PropTypes.Requireable<number>;
|
|
14
17
|
isLast: PropTypes.Requireable<number>;
|
|
@@ -20,6 +23,9 @@ export default class MultiArrayField extends React.Component<any, any, any> {
|
|
|
20
23
|
valueIn: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
21
24
|
valueLengthLessThan: PropTypes.Requireable<number>;
|
|
22
25
|
complement: PropTypes.Requireable<boolean>;
|
|
26
|
+
}> | PropTypes.InferProps<{
|
|
27
|
+
rule: PropTypes.Requireable<string>;
|
|
28
|
+
complement: PropTypes.Requireable<boolean>;
|
|
23
29
|
}> | PropTypes.InferProps<{
|
|
24
30
|
idx: PropTypes.Requireable<number>;
|
|
25
31
|
isLast: PropTypes.Requireable<number>;
|
|
@@ -48,6 +48,8 @@ class _AutosuggestWidget extends React.Component {
|
|
|
48
48
|
return React.createElement(OrganizationAutosuggestWidget, Object.assign({}, this.props));
|
|
49
49
|
case "collection":
|
|
50
50
|
return React.createElement(CollectionAutosuggestWidget, Object.assign({}, this.props));
|
|
51
|
+
case "dataset":
|
|
52
|
+
return React.createElement(DatasetAutosuggestWidget, Object.assign({}, this.props));
|
|
51
53
|
default:
|
|
52
54
|
return React.createElement(RangeAutosuggestWidget, Object.assign({}, this.props));
|
|
53
55
|
}
|
|
@@ -74,6 +76,9 @@ class _AutosuggestWidget extends React.Component {
|
|
|
74
76
|
case "collection":
|
|
75
77
|
component = CollectionAutosuggestWidget;
|
|
76
78
|
break;
|
|
79
|
+
case "dataset":
|
|
80
|
+
component = DatasetAutosuggestWidget;
|
|
81
|
+
break;
|
|
77
82
|
default:
|
|
78
83
|
component = RangeAutosuggestWidget;
|
|
79
84
|
}
|
|
@@ -314,46 +319,24 @@ class FriendsAutosuggestWidget extends React.Component {
|
|
|
314
319
|
}
|
|
315
320
|
FriendsAutosuggestWidget.contextType = ReactContext_1.default;
|
|
316
321
|
class OrganizationAutosuggestWidget extends React.Component {
|
|
317
|
-
constructor(props) {
|
|
318
|
-
super(props);
|
|
319
|
-
this.findExactMatch = (suggestions, inputValue) => {
|
|
320
|
-
return suggestions.find(suggestion => (suggestion && suggestion.value.toLowerCase() === inputValue.trim().toLowerCase()));
|
|
321
|
-
};
|
|
322
|
-
this.getSuggestionFromValue = this.getSuggestionFromValue.bind(this);
|
|
323
|
-
this.isValueSuggested = this.isValueSuggested.bind(this);
|
|
324
|
-
}
|
|
325
|
-
getSuggestionFromValue(value) {
|
|
326
|
-
if (this.isValueSuggested(value)) {
|
|
327
|
-
return this.props.formContext.apiClient.fetchCached(`/organization/by-id/${value}`).then(({ fullName }) => {
|
|
328
|
-
if (fullName) {
|
|
329
|
-
return {
|
|
330
|
-
value: fullName,
|
|
331
|
-
key: value
|
|
332
|
-
};
|
|
333
|
-
}
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
else {
|
|
337
|
-
return Promise.reject();
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
isValueSuggested(value) {
|
|
341
|
-
return !utils_1.isEmptyString(value) && value.match(/MOS\.\d+/);
|
|
342
|
-
}
|
|
343
322
|
render() {
|
|
344
|
-
|
|
345
|
-
const options = {
|
|
346
|
-
query: Object.assign({ includeSelf: true }, propsOptions.queryOptions),
|
|
347
|
-
getSuggestionFromValue: this.getSuggestionFromValue,
|
|
348
|
-
isValueSuggested: this.isValueSuggested,
|
|
349
|
-
Wrapper: OrganizationWrapper,
|
|
350
|
-
findExactMatch: this.findExactMatch
|
|
351
|
-
};
|
|
352
|
-
return React.createElement(Autosuggest, Object.assign({}, options, propsWithoutOptions, propsOptions));
|
|
323
|
+
return (React.createElement(BasicAutosuggestWidget, Object.assign({}, this.props, this.props.options, { nameField: "fullName", validValueRegexp: "MOS.\\d+", Wrapper: OrganizationWrapper })));
|
|
353
324
|
}
|
|
354
325
|
}
|
|
355
326
|
OrganizationAutosuggestWidget.contextType = ReactContext_1.default;
|
|
356
327
|
class CollectionAutosuggestWidget extends React.Component {
|
|
328
|
+
render() {
|
|
329
|
+
return (React.createElement(BasicAutosuggestWidget, Object.assign({}, this.props, this.props.options, { nameField: "collectionName", validValueRegexp: "HR.\\d+", Wrapper: CollectionWrapper })));
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
CollectionAutosuggestWidget.contextType = ReactContext_1.default;
|
|
333
|
+
class DatasetAutosuggestWidget extends React.Component {
|
|
334
|
+
render() {
|
|
335
|
+
return (React.createElement(BasicAutosuggestWidget, Object.assign({}, this.props, this.props.options, { nameField: "datasetName", validValueRegexp: "GX.\\d+", Wrapper: DatasetWrapper })));
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
DatasetAutosuggestWidget.contextType = ReactContext_1.default;
|
|
339
|
+
class BasicAutosuggestWidget extends React.Component {
|
|
357
340
|
constructor(props) {
|
|
358
341
|
super(props);
|
|
359
342
|
this.findExactMatch = (suggestions, inputValue) => {
|
|
@@ -363,11 +346,12 @@ class CollectionAutosuggestWidget extends React.Component {
|
|
|
363
346
|
this.isValueSuggested = this.isValueSuggested.bind(this);
|
|
364
347
|
}
|
|
365
348
|
getSuggestionFromValue(value) {
|
|
349
|
+
const { autosuggestField, nameField } = this.props;
|
|
366
350
|
if (this.isValueSuggested(value)) {
|
|
367
|
-
return this.props.formContext.apiClient.fetchCached(
|
|
368
|
-
if (
|
|
351
|
+
return this.props.formContext.apiClient.fetchCached(`/${autosuggestField}/by-id/${value}`).then(result => {
|
|
352
|
+
if (result[nameField]) {
|
|
369
353
|
return {
|
|
370
|
-
value:
|
|
354
|
+
value: result[nameField],
|
|
371
355
|
key: value
|
|
372
356
|
};
|
|
373
357
|
}
|
|
@@ -378,21 +362,36 @@ class CollectionAutosuggestWidget extends React.Component {
|
|
|
378
362
|
}
|
|
379
363
|
}
|
|
380
364
|
isValueSuggested(value) {
|
|
381
|
-
|
|
365
|
+
const regexp = new RegExp(this.props.validValueRegexp);
|
|
366
|
+
return !utils_1.isEmptyString(value) && value.match(regexp);
|
|
382
367
|
}
|
|
383
368
|
render() {
|
|
384
|
-
const _a = this.props, { options: propsOptions } = _a, propsWithoutOptions = __rest(_a, ["options"]);
|
|
385
369
|
const options = {
|
|
386
|
-
query: Object.assign({ includeSelf: true },
|
|
370
|
+
query: Object.assign({ includeSelf: true }, this.props.queryOptions),
|
|
387
371
|
getSuggestionFromValue: this.getSuggestionFromValue,
|
|
388
372
|
isValueSuggested: this.isValueSuggested,
|
|
389
|
-
Wrapper:
|
|
373
|
+
Wrapper: this.props.Wrapper,
|
|
390
374
|
findExactMatch: this.findExactMatch
|
|
391
375
|
};
|
|
392
|
-
return React.createElement(Autosuggest, Object.assign({}, options,
|
|
376
|
+
return React.createElement(Autosuggest, Object.assign({}, options, this.props));
|
|
393
377
|
}
|
|
394
378
|
}
|
|
395
|
-
|
|
379
|
+
BasicAutosuggestWidget.contextType = ReactContext_1.default;
|
|
380
|
+
BasicAutosuggestWidget.propTypes = {
|
|
381
|
+
autosuggestField: PropTypes.string.isRequired,
|
|
382
|
+
allowNonsuggestedValue: PropTypes.bool,
|
|
383
|
+
onSuggestionSelected: PropTypes.func,
|
|
384
|
+
onUnsuggestedSelected: PropTypes.func,
|
|
385
|
+
onInputChange: PropTypes.func,
|
|
386
|
+
uiSchema: PropTypes.object,
|
|
387
|
+
nameField: PropTypes.string,
|
|
388
|
+
validValueRegexp: PropTypes.string,
|
|
389
|
+
Wrapper: PropTypes.object
|
|
390
|
+
};
|
|
391
|
+
BasicAutosuggestWidget.defaultProps = {
|
|
392
|
+
nameField: "name",
|
|
393
|
+
validValueRegexp: ""
|
|
394
|
+
};
|
|
396
395
|
class RangeAutosuggestWidget extends React.Component {
|
|
397
396
|
render() {
|
|
398
397
|
const _a = this.props, { options: propsOptions } = _a, propsWithoutOptions = __rest(_a, ["options"]);
|
|
@@ -1165,3 +1164,4 @@ const getWrapper = (unknownValueLabel) => React.forwardRef(({ formContext, child
|
|
|
1165
1164
|
const FriendsWrapper = getWrapper("UnknownName");
|
|
1166
1165
|
const OrganizationWrapper = getWrapper("UnknownOrganization");
|
|
1167
1166
|
const CollectionWrapper = getWrapper("UnknownCollection");
|
|
1167
|
+
const DatasetWrapper = getWrapper("UnknownTag");
|
|
@@ -112,14 +112,16 @@ class CheckboxWidget extends React.Component {
|
|
|
112
112
|
tabIndex: (toggleMode || _disabled) ? undefined : 0
|
|
113
113
|
};
|
|
114
114
|
const tabTargetClass = "laji-form-checkbox-widget-tab-target";
|
|
115
|
-
const checkbox = (React.createElement(ButtonToolbar, { className: utils_1.classNames(toggleMode && "desktop-layout") },
|
|
115
|
+
const checkbox = (React.createElement(ButtonToolbar, { className: utils_1.classNames("laji-form-checkbox-buttons", toggleMode && "desktop-layout") },
|
|
116
116
|
React.createElement(ToggleButtonGroup, Object.assign({ ref: this.groupRef, type: "radio", value: [_value], name: this.props.id, onChange: this.onButtonGroupChange, onKeyDown: this.onGroupKeyDown, className: utils_1.classNames(toggleMode && tabTargetClass) }, commonProps, { tabIndex: (toggleMode && !_disabled) ? 0 : undefined }),
|
|
117
117
|
React.createElement(ToggleButton, Object.assign({ id: `${id}-true`, ref: this.trueRef, value: true, onClick: toggleMode ? this.toggle : undefined, className: utils_1.classNames(toggleMode && _value === false && "laji-form-hide-btn-label", _value === true && tabTargetClass), onKeyDown: this.onTrueKeyDown }, commonProps), trueLabel),
|
|
118
118
|
React.createElement(ToggleButton, Object.assign({ id: `${id}-false`, ref: this.falseRef, value: false, onClick: toggleMode ? this.toggle : undefined, className: utils_1.classNames(toggleMode && _value === true && "laji-form-hide-btn-label", _value === false && tabTargetClass), onKeyDown: this.onFalseKeyDown }, commonProps), falseLabel),
|
|
119
119
|
(displayUndefined ?
|
|
120
120
|
React.createElement(ToggleButton, Object.assign({ id: `${id}-undefined`, ref: this.undefinedRef, value: "undefined", className: utils_1.classNames(value === undefined && tabTargetClass) }, commonProps, { onKeyDown: this.onUndefinedKeyDown }), unknownLabel) : null))));
|
|
121
121
|
const { Label } = this.props.formContext;
|
|
122
|
-
return !hasLabel ? checkbox :
|
|
122
|
+
return !hasLabel ? checkbox : React.createElement(React.Fragment, null,
|
|
123
|
+
React.createElement(Label, { label: label, required: required, uiSchema: options, contextId: this.props.formContext.contextId }),
|
|
124
|
+
checkbox);
|
|
123
125
|
}
|
|
124
126
|
formatValue(value, options, props) {
|
|
125
127
|
return value === undefined
|
|
@@ -308,7 +308,8 @@ const SelectedMultiValue = ({ children: enu, onDelete, readonly }) => {
|
|
|
308
308
|
React.createElement("span", { tabIndex: readonly ? undefined : 0, role: readonly ? undefined : "button", onClick: onDeleteClick }, "\u00D7")));
|
|
309
309
|
};
|
|
310
310
|
const Caret = ({ onFocus }) => React.createElement("div", { className: "laji-form-dropdown-caret-container", style: { position: "absolute", pointerEvents: "none" } },
|
|
311
|
-
React.createElement("span", { onFocus: onFocus, className: "laji-form-dropdown-caret" },
|
|
311
|
+
React.createElement("span", { onFocus: onFocus, className: "laji-form-dropdown-caret" },
|
|
312
|
+
React.createElement("img", { src: "https://cdn.laji.fi/images/icons/caret-down.svg" })));
|
|
312
313
|
function ListItem({ onSelected, active, children }) {
|
|
313
314
|
const onClick = react_1.useCallback(() => {
|
|
314
315
|
onSelected(children);
|
package/lib/translations.json
CHANGED