Skip to content

Commit

Permalink
Marked material fields as leafs.
Browse files Browse the repository at this point in the history
  • Loading branch information
Monteth committed Jun 17, 2020
1 parent 20f3814 commit 325b96e
Show file tree
Hide file tree
Showing 11 changed files with 28 additions and 26 deletions.
28 changes: 14 additions & 14 deletions packages/uniforms-material/__tests__/AutoField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ test('<AutoField> - works', () => {
expect(wrapper.find(AutoField)).toHaveLength(1);
});

test('<AutoField> - renders RadioField', () => {
test('<AutoField> - detects RadioField', () => {
const element = <AutoField name="x" />;
const wrapper = mount(
element,
Expand All @@ -37,7 +37,7 @@ test('<AutoField> - renders RadioField', () => {
expect(wrapper.find(RadioField)).toHaveLength(1);
});

test('<AutoField> - renders SelectField', () => {
test('<AutoField> - detects SelectField', () => {
const element = <AutoField name="x" />;
const wrapper = mount(
element,
Expand All @@ -47,17 +47,17 @@ test('<AutoField> - renders SelectField', () => {
}),
);

expect(wrapper.find(SelectField)).toHaveLength(1);
expect(wrapper.find(SelectField.Component)).toHaveLength(1);
});

test('<AutoField> - renders DateField', () => {
test('<AutoField> - detects DateField', () => {
const element = <AutoField name="x" />;
const wrapper = mount(element, createContext({ x: { type: Date } }));

expect(wrapper.find(DateField)).toHaveLength(1);
});

test('<AutoField> - renders ListField', () => {
test('<AutoField> - detects ListField', () => {
const element = <AutoField name="x" />;
const wrapper = mount(
element,
Expand All @@ -67,35 +67,35 @@ test('<AutoField> - renders ListField', () => {
expect(wrapper.find(ListField)).toHaveLength(1);
});

test('<AutoField> - renders NumField', () => {
test('<AutoField> - detects NumField', () => {
const element = <AutoField name="x" />;
const wrapper = mount(element, createContext({ x: { type: Number } }));

expect(wrapper.find(NumField)).toHaveLength(1);
expect(wrapper.find(NumField.Component)).toHaveLength(1);
});

test('<AutoField> - renders NestField', () => {
test('<AutoField> - detects NestField', () => {
const element = <AutoField name="x" />;
const wrapper = mount(element, createContext({ x: { type: Object } }));

expect(wrapper.find(NestField)).toHaveLength(1);
});

test('<AutoField> - renders TextField', () => {
test('<AutoField> - detects TextField', () => {
const element = <AutoField name="x" />;
const wrapper = mount(element, createContext({ x: { type: String } }));

expect(wrapper.find(TextField)).toHaveLength(1);
expect(wrapper.find(TextField.Component)).toHaveLength(1);
});

test('<AutoField> - renders BoolField', () => {
test('<AutoField> - detects BoolField', () => {
const element = <AutoField name="x" />;
const wrapper = mount(element, createContext({ x: { type: Boolean } }));

expect(wrapper.find(BoolField)).toHaveLength(1);
expect(wrapper.find(BoolField.Component)).toHaveLength(1);
});

test('<AutoField> - renders Component (model)', () => {
test('<AutoField> - uses Component (schema)', () => {
const Component = jest.fn(() => null);

const element = <AutoField name="x" />;
Expand All @@ -107,7 +107,7 @@ test('<AutoField> - renders Component (model)', () => {
expect(Component).toHaveBeenCalledTimes(1);
});

test('<AutoField> - renders Component (specified)', () => {
test('<AutoField> - uses Component (props)', () => {
const Component = jest.fn(() => null);

const element = <AutoField name="x" component={Component} />;
Expand Down
8 changes: 5 additions & 3 deletions packages/uniforms-material/src/AutoField.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import invariant from 'invariant';
import { ComponentType, createElement } from 'react';
import { Override, useField } from 'uniforms';
import { connectField, Override, useField } from 'uniforms';

import BoolField from './BoolField';
import DateField from './DateField';
Expand All @@ -14,7 +14,7 @@ import TextField from './TextField';
export type AutoFieldProps = Override<
Record<string, unknown>,
{
component?: ComponentType<any>;
component?: ComponentType<any> | ReturnType<typeof connectField>;
name: string;
}
>;
Expand Down Expand Up @@ -57,5 +57,7 @@ export default function AutoField(originalProps: AutoFieldProps) {
}
}

return createElement(component, originalProps);
return 'options' in component && component.options?.kind === 'leaf'
? createElement(component.Component, props)
: createElement(component, originalProps);
}
2 changes: 1 addition & 1 deletion packages/uniforms-material/src/BoolField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,4 @@ function Bool(props: BoolFieldProps) {
);
}

export default connectField(Bool);
export default connectField(Bool, { kind: 'leaf' });
2 changes: 1 addition & 1 deletion packages/uniforms-material/src/DateField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,4 @@ Date.defaultProps = {
fullWidth: true,
};

export default connectField(Date);
export default connectField(Date, { kind: 'leaf' });
2 changes: 1 addition & 1 deletion packages/uniforms-material/src/ListAddField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,4 @@ ListAdd.defaultProps = {
margin: 'dense' as 'dense',
};

export default connectField(ListAdd, { initialValue: false });
export default connectField(ListAdd, { initialValue: false, kind: 'leaf' });
2 changes: 1 addition & 1 deletion packages/uniforms-material/src/ListDelField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ ListDel.defaultProps = {
icon: '-',
};

export default connectField(ListDel, { initialValue: false });
export default connectField(ListDel, { initialValue: false, kind: 'leaf' });
2 changes: 1 addition & 1 deletion packages/uniforms-material/src/LongTextField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@ LongText.defaultProps = {
type: 'text',
};

export default connectField(LongText);
export default connectField(LongText, { kind: 'leaf' });
2 changes: 1 addition & 1 deletion packages/uniforms-material/src/NumField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,4 @@ function Num({
/>
);
}
export default connectField(Num);
export default connectField(Num, { kind: 'leaf' });
2 changes: 1 addition & 1 deletion packages/uniforms-material/src/RadioField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,4 @@ Radio.defaultProps = {
margin: 'dense',
} as any;

export default connectField(Radio);
export default connectField(Radio, { kind: 'leaf' });
2 changes: 1 addition & 1 deletion packages/uniforms-material/src/SelectField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -222,4 +222,4 @@ function Select(props: SelectFieldProps) {
);
}

export default connectField(Select);
export default connectField(Select, { kind: 'leaf' });
2 changes: 1 addition & 1 deletion packages/uniforms-material/src/TextField.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,4 @@ Text.defaultProps = {
type: 'text',
};

export default connectField(Text);
export default connectField(Text, { kind: 'leaf' });

0 comments on commit 325b96e

Please sign in to comment.