Skip to content

Commit 8b43d56

Browse files
committed
List values in enum attribute on useRadio
1 parent 6bd7b40 commit 8b43d56

File tree

4 files changed

+35
-9
lines changed

4 files changed

+35
-9
lines changed

src/hooks/__mocks__/mockSchema.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ const mockSchema = {
1919
maximum: 6,
2020
multipleOf: 2,
2121
},
22+
integerEnumTest: {
23+
type: 'integer',
24+
title: 'test-useSelectIntegerEnum',
25+
enum: [0, 1, 2, 3, 5, 7, 11, 13],
26+
},
2227
numberTest: {
2328
type: 'number',
2429
title: 'test-useSelectNumber',

src/hooks/__tests__/useRadio.test.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,20 @@ test('should raise error', async () => {
9191

9292
await wait(() => expect(getByText('This is an error!')).toBeDefined())
9393
})
94+
95+
test('should integer enum values', () => {
96+
const { getByText } = render(
97+
<FormContext schema={mockRadioSchema}>
98+
<MockRadio pointer="#/properties/integerEnumTest" />
99+
</FormContext>
100+
)
101+
102+
expect(getByText('0')).toBeDefined()
103+
expect(getByText('1')).toBeDefined()
104+
expect(getByText('2')).toBeDefined()
105+
expect(getByText('3')).toBeDefined()
106+
expect(getByText('5')).toBeDefined()
107+
expect(getByText('7')).toBeDefined()
108+
expect(getByText('11')).toBeDefined()
109+
expect(getByText('13')).toBeDefined()
110+
})

src/hooks/useRadio.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,20 @@ export const getRadioCustomFields = (
5151
currentObject.type === 'number' ||
5252
currentObject.type === 'integer'
5353
) {
54-
const stepAndDecimalPlaces = getNumberStep(currentObject)
55-
step = stepAndDecimalPlaces[0]
56-
decimalPlaces = stepAndDecimalPlaces[1]
54+
if (currentObject.enum) {
55+
items = getEnumAsStringArray(currentObject)
56+
} else {
57+
const stepAndDecimalPlaces = getNumberStep(currentObject)
58+
step = stepAndDecimalPlaces[0]
59+
decimalPlaces = stepAndDecimalPlaces[1]
5760

58-
minimum = getNumberMinimum(currentObject)
59-
maximum = getNumberMaximum(currentObject)
61+
minimum = getNumberMinimum(currentObject)
62+
maximum = getNumberMaximum(currentObject)
6063

61-
if (minimum !== undefined && maximum !== undefined && step != 'any') {
62-
for (let i = minimum; i <= maximum; i += step) {
63-
items.push(toFixed(i, decimalPlaces ? decimalPlaces : 0))
64+
if (minimum !== undefined && maximum !== undefined && step != 'any') {
65+
for (let i = minimum; i <= maximum; i += step) {
66+
items.push(toFixed(i, decimalPlaces ? decimalPlaces : 0))
67+
}
6468
}
6569
}
6670
} else if (currentObject.type === 'boolean') {

src/hooks/validators/getEnum.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { JSONSchemaType, JSONSchemaBaseInstanceTypes } from '../../JSONSchema'
22

33
const mapEnumItemsToString = (obj: JSONSchemaBaseInstanceTypes): string => {
4-
if (obj) {
4+
if (obj !== null && obj !== undefined) {
55
return obj.toString()
66
}
77
return ''

0 commit comments

Comments
 (0)