diff --git a/packages/carbon-component-mapper/src/files/text-field.js b/packages/carbon-component-mapper/src/files/text-field.js index f393fe538..31e8f4d8a 100644 --- a/packages/carbon-component-mapper/src/files/text-field.js +++ b/packages/carbon-component-mapper/src/files/text-field.js @@ -7,7 +7,7 @@ import { TextInput, NumberInput } from 'carbon-components-react'; import prepareProps from './prepare-props'; const TextField = (props) => { - const { input, meta, validateOnMount, ...rest } = useFieldApi(prepareProps(props)); + const { input, meta, validateOnMount, labelText, ...rest } = useFieldApi(prepareProps(props)); const Component = input.type === 'number' ? NumberInput : TextInput; @@ -23,6 +23,7 @@ const TextField = (props) => { invalidText={invalid || ''} warn={Boolean(warn)} warnText={warn || ''} + {...(input.type === 'number' ? { label: labelText } : { labelText })} {...rest} /> ); diff --git a/packages/carbon-component-mapper/src/tests/components.test.js b/packages/carbon-component-mapper/src/tests/components.test.js index 2a32f0077..7f0183f76 100644 --- a/packages/carbon-component-mapper/src/tests/components.test.js +++ b/packages/carbon-component-mapper/src/tests/components.test.js @@ -14,7 +14,13 @@ describe('component tests', () => { onSubmit={jest.fn()} FormTemplate={(props) => } schema={schema} - componentMapper={componentMapper} + componentMapper={{ + ...componentMapper, + 'text-field-number': { + component: componentMapper[componentTypes.TEXT_FIELD], + type: 'number' + } + }} {...props} /> ); @@ -47,7 +53,8 @@ describe('component tests', () => { componentTypes.TIME_PICKER, componentTypes.SWITCH, componentTypes.SELECT, - componentTypes.SLIDER + componentTypes.SLIDER, + 'text-field-number' ].forEach((component) => { describe(`Component type: ${component}`, () => { beforeEach(() => { @@ -70,6 +77,8 @@ describe('component tests', () => { if (component === componentTypes.RADIO) { expect(wrapper.find('.bx--radio-button-wrapper')).toHaveLength(options.length); + } else if (component === 'text-field-number') { + expect(wrapper.find('NumberInput')).toHaveLength(1); } else { expect(wrapper.find(componentMapper[component])).toHaveLength(1); expect( @@ -99,96 +108,99 @@ describe('component tests', () => { } }); - it('renders with warning', async () => { - const errorField = { - ...field, - validate: [{ type: validatorTypes.REQUIRED, warning: true }], - useWarnings: true, - validateOnMount: true - }; - let wrapper; + if (component !== 'text-field-number') { + it('renders with warning', async () => { + const errorField = { + ...field, + validate: [{ type: validatorTypes.REQUIRED, warning: true }], + useWarnings: true, + validateOnMount: true + }; + let wrapper; + + await act(async () => { + wrapper = mount(); + }); + wrapper.update(); + wrapper.update(); + + const helperText = wrapper.find('.bx--form__helper-text'); + + if (helperText.length) { + expect(helperText.text()).toEqual(errorText); + } else { + expect( + wrapper + .find('.bx--form-requirement') + .last() + .text() + ).toEqual(errorText); + } + }); + + it('renders with helperText', () => { + const helpertextField = { + ...field, + helperText + }; + const wrapper = mount(); - await act(async () => { - wrapper = mount(); + expect( + wrapper + .find('.bx--form__helper-text') + .last() + .text() + ).toEqual(helperText); }); - wrapper.update(); - const helperText = wrapper.find('.bx--form__helper-text'); + it('renders with description and helperText', () => { + const descriptionField = { + ...field, + description, + helperText + }; + const wrapper = mount(); + + expect(wrapper.find(WithDescription)).toHaveLength(1); - if (helperText.length) { - expect(helperText.text()).toEqual(errorText); - } else { expect( wrapper - .find('.bx--form-requirement') + .find('.bx--form__helper-text') .last() .text() - ).toEqual(errorText); - } - }); + ).toEqual(helperText); + }); - it('renders with helperText', () => { - const helpertextField = { - ...field, - helperText - }; - const wrapper = mount(); - - expect( - wrapper - .find('.bx--form__helper-text') - .last() - .text() - ).toEqual(helperText); - }); + it('renders with error and helperText', () => { + const errorFields = { + ...field, + helperText, + validate: [{ type: validatorTypes.REQUIRED }] + }; + const wrapper = mount(); + wrapper.find('form').simulate('submit'); - it('renders with description', () => { - const descriptionField = { - ...field, - description - }; - const wrapper = mount(); + if (wrapper.find('#field-name-error-msg').length) { + expect(wrapper.find('#field-name-error-msg').text()).toEqual(errorText); + expect(wrapper.find('[invalid=true]').length).toBeGreaterThanOrEqual(1); + } - expect(wrapper.find(WithDescription)).toHaveLength(1); - }); + if (wrapper.find('.ddorg__carbon-error-helper-text').length) { + expect(wrapper.find('.ddorg__carbon-error-helper-text').text()).toEqual(errorText); + } + + expect(wrapper.find('.bx--form__helper-text')).toHaveLength(0); + }); + } - it('renders with description and helperText', () => { + it('renders with description', () => { const descriptionField = { ...field, - description, - helperText + description }; const wrapper = mount(); expect(wrapper.find(WithDescription)).toHaveLength(1); - - expect( - wrapper - .find('.bx--form__helper-text') - .last() - .text() - ).toEqual(helperText); - }); - - it('renders with error and helperText', () => { - const errorFields = { - ...field, - helperText, - validate: [{ type: validatorTypes.REQUIRED }] - }; - const wrapper = mount(); - wrapper.find('form').simulate('submit'); - - if (wrapper.find('#field-name-error-msg').length) { - expect(wrapper.find('#field-name-error-msg').text()).toEqual(errorText); - expect(wrapper.find('[invalid=true]').length).toBeGreaterThanOrEqual(1); - } - - if (wrapper.find('.ddorg__carbon-error-helper-text').length) { - expect(wrapper.find('.ddorg__carbon-error-helper-text').text()).toEqual(errorText); - } - - expect(wrapper.find('.bx--form__helper-text')).toHaveLength(0); }); it('renders isDisabled', () => {