Skip to content

Commit d0246c2

Browse files
authored
Merge pull request #275 from cotype/feature/CMSFixes
Fix: Select Field with label/value
2 parents 1b512b6 + a3d3414 commit d0246c2

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,4 +170,4 @@ or want to know more about what we consider "internal stuff", please refer
170170
to the [contribution guidelines](https://github.com/cotype/core/blob/master/CONTRIBUTING.md)
171171

172172

173-
..
173+
.

client/src/Edit/elements/OptionsInput.tsx

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ type State = {
1515
export default class OptionsInput extends Component<Props, State> {
1616
static getDefaultValue(props: Props) {
1717
if (props.nullLabel) return null;
18-
return props.values ? props.values[0] : null;
18+
return props.values && props.values[0]
19+
? typeof props.values[0] === "string"
20+
? props.values[0]
21+
: props.values[0].value
22+
: null;
1923
}
2024

2125
static validate(value: any, props: Props) {
@@ -59,7 +63,10 @@ export default class OptionsInput extends Component<Props, State> {
5963
const { nullLabel, values, form, field } = this.props;
6064

6165
if (!nullLabel && !field.value && values && values !== prevProps.values) {
62-
form.setFieldValue(field.name, values[0]);
66+
form.setFieldValue(
67+
field.name,
68+
typeof values[0] === "string" ? values[0] : values[0].value
69+
);
6370
}
6471
}
6572

@@ -69,7 +76,16 @@ export default class OptionsInput extends Component<Props, State> {
6976
const { value, ...props } = field;
7077
const selected = options.find(o => String(o.value) === String(value));
7178
return (
72-
<select value={selected ? selected.value : ""} {...props}>
79+
<select
80+
value={
81+
selected
82+
? typeof selected === "string"
83+
? selected
84+
: selected.value
85+
: ""
86+
}
87+
{...props}
88+
>
7389
{options.map(o => (
7490
<option key={o.value} value={o.value}>
7591
{o.label}

client/src/Edit/elements/OptionsOutput.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import React, { Component } from "react";
22

33
type Props = {
4-
value: any;
4+
value: string | { label: string; value: string };
55
};
66
export default class OptionsOutput extends Component<Props> {
77
render() {
88
const { value } = this.props;
99
return (
1010
<select disabled>
11-
<option>{value}</option>)
11+
<option value={typeof value === "string" ? value : value.value}>{typeof value === "string" ? value : value.label}</option>)
1212
</select>
1313
);
1414
}

0 commit comments

Comments
 (0)