Skip to content
This repository was archived by the owner on Mar 9, 2023. It is now read-only.

Commit 95f78e4

Browse files
authored
Fix: A SelectField made of numbers don't pass on validation (#116)
* Fix number SelectField * Fix example
1 parent bb4624b commit 95f78e4

File tree

5 files changed

+24
-3
lines changed

5 files changed

+24
-3
lines changed

__tests__/SelectField.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,20 @@ test('<SelectField> - renders a label', () => {
252252
);
253253
});
254254

255+
test('<SelectField> - renders a number label', () => {
256+
const element = <SelectField required={true} name="x" label={1} />;
257+
const wrapper = mount(
258+
element,
259+
createContext({ x: { type: Number, allowedValues: [1, 2] } }),
260+
);
261+
262+
expect(wrapper.find('label')).toHaveLength(1);
263+
expect(wrapper.find('label').text()).toBe('1 *');
264+
expect(wrapper.find('label').prop('htmlFor')).toBe(
265+
wrapper.find(Select).prop('id'),
266+
);
267+
});
268+
255269
test('<SelectField> - renders a wrapper with unknown props', () => {
256270
const element = <SelectField name="x" data-x="x" data-y="y" data-z="z" />;
257271
const wrapper = mount(

examples/App.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useState } from 'react';
2-
import { AutoForm } from 'uniforms-patternfly';
2+
import { AutoForm } from 'uniforms-patternfly/dist/es6';
33

44
import { CodeBlock } from './CodeBlock';
55
import schema from './schema/json-schema';

examples/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"uniforms-bridge-json-schema": "3.5.1",
2020
"uniforms-bridge-simple-schema": "3.5.1",
2121
"uniforms-bridge-simple-schema-2": "3.5.1",
22-
"uniforms-patternfly": "4.7.5"
22+
"uniforms-patternfly": "4.7.7"
2323
},
2424
"devDependencies": {
2525
"parcel-bundler": "^1.12.5",

examples/schema/json-schema.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ const schema = {
5959
},
6060
room: {
6161
type: 'string'
62+
},
63+
numberOfBeds: {
64+
placeholder: "Select...",
65+
enum: [1, 2, 3],
66+
type: 'number'
6267
}
6368
},
6469
}

src/SelectField.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ type SelectInputProps = FieldProps<
6262
function isSelectOptionObject(
6363
toBeDetermined: string | SelectOptionObject
6464
): toBeDetermined is SelectOptionObject {
65-
return toBeDetermined.toString !== undefined;
65+
return typeof toBeDetermined === 'object' &&
66+
!Array.isArray(toBeDetermined) &&
67+
toBeDetermined !== null
6668
}
6769

6870
export type SelectFieldProps = CheckboxesProps | SelectInputProps;

0 commit comments

Comments
 (0)