Skip to content

Commit 24630c8

Browse files
WesSouzaarturbien
authored andcommitted
refactor(numberinput): categorize under Controls, rename from NumberField to NumberInput
1 parent 38ce6cd commit 24630c8

File tree

9 files changed

+53
-122
lines changed

9 files changed

+53
-122
lines changed

src/DatePicker/DatePicker.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { forwardRef, useCallback, useMemo, useState } from 'react';
22
import styled from 'styled-components';
33

44
import { Button } from '../Button/Button';
5-
import { NumberField } from '../NumberField/NumberField';
5+
import { NumberInput } from '../NumberInput/NumberInput';
66
import { ScrollView } from '../ScrollView/ScrollView';
77
import { Select } from '../Select/Select';
88
import { SelectChangeEvent } from '../Select/Select.types';
@@ -175,7 +175,7 @@ const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(
175175
width={128}
176176
menuMaxHeight={200}
177177
/>
178-
<NumberField value={year} onChange={handleYearSelect} width={100} />
178+
<NumberInput value={year} onChange={handleYearSelect} width={100} />
179179
</Toolbar>
180180
<Calendar>
181181
<WeekDays>

src/NumberField/NumberField.mdx

Lines changed: 0 additions & 78 deletions
This file was deleted.

src/NumberField/NumberField.spec.tsx renamed to src/NumberInput/NumberInput.spec.tsx

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import { fireEvent } from '@testing-library/react';
22
import React from 'react';
33

44
import { renderWithTheme } from '../../test/utils';
5-
import { NumberField } from './NumberField';
5+
import { NumberInput } from './NumberInput';
66

77
// TODO: should we pass number or string to callbacks?
8-
describe('<NumberField />', () => {
8+
describe('<NumberInput />', () => {
99
it('should call onChange on spin buttons click', () => {
1010
const handleChange = jest.fn();
1111

1212
const { getByTestId } = renderWithTheme(
13-
<NumberField onChange={handleChange} defaultValue={2} />
13+
<NumberInput onChange={handleChange} defaultValue={2} />
1414
);
1515
const spinButton = getByTestId('increment');
1616
spinButton.click();
@@ -21,7 +21,7 @@ describe('<NumberField />', () => {
2121
it('should call onChange on blur after keyboard input', () => {
2222
const handleChange = jest.fn();
2323
const { container } = renderWithTheme(
24-
<NumberField onChange={handleChange} defaultValue={0} />
24+
<NumberInput onChange={handleChange} defaultValue={0} />
2525
);
2626
const input = container.querySelector('input') as HTMLInputElement;
2727
input.focus();
@@ -39,7 +39,7 @@ describe('<NumberField />', () => {
3939
const handleChange = jest.fn();
4040

4141
const { getByTestId, container } = renderWithTheme(
42-
<NumberField onChange={handleChange} value={0} />
42+
<NumberInput onChange={handleChange} value={0} />
4343
);
4444
const input = container.querySelector('input') as HTMLInputElement;
4545
const incrementButton = getByTestId('increment');
@@ -55,7 +55,7 @@ describe('<NumberField />', () => {
5555
it('should give correct result after user changes input value and then clicks increment button', () => {
5656
const handleChange = jest.fn();
5757
const { container, getByTestId } = renderWithTheme(
58-
<NumberField onChange={handleChange} defaultValue={0} />
58+
<NumberInput onChange={handleChange} defaultValue={0} />
5959
);
6060
const input = container.querySelector('input') as HTMLInputElement;
6161
const incrementButton = getByTestId('increment');
@@ -68,7 +68,7 @@ describe('<NumberField />', () => {
6868

6969
it('should reach max value', () => {
7070
const { getByTestId, container } = renderWithTheme(
71-
<NumberField defaultValue={90} min={0} max={100} step={10} />
71+
<NumberInput defaultValue={90} min={0} max={100} step={10} />
7272
);
7373
const input = container.querySelector('input') as HTMLInputElement;
7474
const incrementButton = getByTestId('increment');
@@ -79,7 +79,7 @@ describe('<NumberField />', () => {
7979

8080
it('should reach min value', () => {
8181
const { getByTestId, container } = renderWithTheme(
82-
<NumberField defaultValue={10} min={0} max={100} step={10} />
82+
<NumberInput defaultValue={10} min={0} max={100} step={10} />
8383
);
8484
const input = container.querySelector('input') as HTMLInputElement;
8585
const decrementButton = getByTestId('decrement');
@@ -91,7 +91,7 @@ describe('<NumberField />', () => {
9191
describe('prop: step', () => {
9292
it('should be 1 by default', () => {
9393
const { getByTestId, container } = renderWithTheme(
94-
<NumberField defaultValue={0} />
94+
<NumberInput defaultValue={0} />
9595
);
9696
const input = container.querySelector('input') as HTMLInputElement;
9797
const incrementButton = getByTestId('increment');
@@ -102,7 +102,7 @@ describe('<NumberField />', () => {
102102

103103
it('should change value by specified step', () => {
104104
const { getByTestId, container } = renderWithTheme(
105-
<NumberField defaultValue={10} step={3} />
105+
<NumberInput defaultValue={10} step={3} />
106106
);
107107
const input = container.querySelector('input') as HTMLInputElement;
108108
const decrementButton = getByTestId('decrement');
@@ -113,7 +113,7 @@ describe('<NumberField />', () => {
113113

114114
it('should handle decimal step', () => {
115115
const { getByTestId, container } = renderWithTheme(
116-
<NumberField defaultValue={10} step={0.3} />
116+
<NumberInput defaultValue={10} step={0.3} />
117117
);
118118
const input = container.querySelector('input') as HTMLInputElement;
119119
const decrementButton = getByTestId('decrement');
@@ -126,7 +126,7 @@ describe('<NumberField />', () => {
126126
describe('prop: disabled', () => {
127127
it('should render disabled', () => {
128128
const { getByTestId, container } = renderWithTheme(
129-
<NumberField defaultValue={10} disabled />
129+
<NumberInput defaultValue={10} disabled />
130130
);
131131
const input = container.querySelector('input') as HTMLInputElement;
132132
const incrementButton = getByTestId('increment');
@@ -139,7 +139,7 @@ describe('<NumberField />', () => {
139139

140140
it('should not react to button clicks', () => {
141141
const { getByTestId, container } = renderWithTheme(
142-
<NumberField defaultValue={10} disabled />
142+
<NumberInput defaultValue={10} disabled />
143143
);
144144
const input = container.querySelector('input') as HTMLInputElement;
145145
const incrementButton = getByTestId('increment');
@@ -156,7 +156,7 @@ describe('<NumberField />', () => {
156156
describe('prop: width', () => {
157157
it('should render component of specified width', () => {
158158
const { container } = renderWithTheme(
159-
<NumberField defaultValue={10} disabled width={93} />
159+
<NumberInput defaultValue={10} disabled width={93} />
160160
);
161161
expect(
162162
getComputedStyle(container.firstElementChild as HTMLInputElement).width
@@ -165,7 +165,7 @@ describe('<NumberField />', () => {
165165

166166
it('should handle %', () => {
167167
const { container } = renderWithTheme(
168-
<NumberField defaultValue={10} disabled width='93%' />
168+
<NumberInput defaultValue={10} disabled width='93%' />
169169
);
170170
expect(
171171
getComputedStyle(container.firstElementChild as HTMLInputElement).width

src/NumberField/NumberField.stories.tsx renamed to src/NumberInput/NumberInput.stories.tsx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ComponentMeta } from '@storybook/react';
22
import React from 'react';
3-
import { NumberField, ScrollView } from 'react95';
3+
import { ScrollView, NumberInput } from 'react95';
44
import styled from 'styled-components';
55

66
const Wrapper = styled.div`
@@ -21,19 +21,19 @@ const Wrapper = styled.div`
2121
`;
2222

2323
export default {
24-
title: 'NumberField',
25-
component: NumberField,
24+
title: 'Controls/NumberInput',
25+
component: NumberInput,
2626
decorators: [story => <Wrapper>{story()}</Wrapper>]
27-
} as ComponentMeta<typeof NumberField>;
27+
} as ComponentMeta<typeof NumberInput>;
2828

2929
export function Default() {
3030
return (
3131
<>
32-
<NumberField defaultValue={3} step={1.5} min={1.5} max={9} width={130} />
32+
<NumberInput defaultValue={3} step={1.5} min={1.5} max={9} width={130} />
3333
<br />
34-
<NumberField defaultValue={1995} width={130} />
34+
<NumberInput defaultValue={1995} width={130} />
3535
<br />
36-
<NumberField disabled defaultValue={2020} width={130} />
36+
<NumberInput disabled defaultValue={2020} width={130} />
3737
</>
3838
);
3939
}
@@ -46,20 +46,20 @@ export function Flat() {
4646
return (
4747
<ScrollView id='cutout'>
4848
<p>
49-
When you want to use NumberField on a light background (like scrollable
49+
When you want to use NumberInput on a light background (like scrollable
5050
content), just use the flat variant:
5151
</p>
52-
<NumberField
52+
<NumberInput
5353
variant='flat'
5454
defaultValue={1.5}
5555
min={0}
5656
max={9}
5757
width='130px'
5858
/>
5959
<br />
60-
<NumberField variant='flat' defaultValue={1995} width='130px' />
60+
<NumberInput variant='flat' defaultValue={1995} width='130px' />
6161
<br />
62-
<NumberField variant='flat' disabled defaultValue={2020} width='130px' />
62+
<NumberInput variant='flat' disabled defaultValue={2020} width='130px' />
6363
</ScrollView>
6464
);
6565
}

src/NumberField/NumberField.tsx renamed to src/NumberInput/NumberInput.tsx

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { clamp, getSize } from '../common/utils';
88
import { TextField } from '../TextField/TextField';
99
import { CommonStyledProps } from '../types';
1010

11-
type NumberFieldProps = {
11+
type NumberInputProps = {
1212
className?: string;
1313
defaultValue?: number;
1414
disabled?: boolean;
@@ -22,12 +22,12 @@ type NumberFieldProps = {
2222
width?: string | number;
2323
} & CommonStyledProps;
2424

25-
const StyledNumberFieldWrapper = styled.div`
25+
const StyledNumberInputWrapper = styled.div`
2626
display: inline-flex;
2727
align-items: center;
2828
`;
2929

30-
const StyledButton = styled(Button)<Pick<NumberFieldProps, 'variant'>>`
30+
const StyledButton = styled(Button)<Pick<NumberInputProps, 'variant'>>`
3131
width: 30px;
3232
padding: 0;
3333
flex-shrink: 0;
@@ -49,7 +49,7 @@ const StyledButton = styled(Button)<Pick<NumberFieldProps, 'variant'>>`
4949
`}
5050
`;
5151

52-
const StyledButtonWrapper = styled.div<Pick<NumberFieldProps, 'variant'>>`
52+
const StyledButtonWrapper = styled.div<Pick<NumberInputProps, 'variant'>>`
5353
display: flex;
5454
flex-direction: column;
5555
flex-wrap: nowrap;
@@ -96,9 +96,8 @@ const StyledButtonIcon = styled.span<{ invert?: boolean }>`
9696
`}
9797
}
9898
`;
99-
100-
const NumberField = forwardRef<HTMLInputElement, NumberFieldProps>(
101-
function NumberField(
99+
const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(
100+
(
102101
{
103102
className,
104103
defaultValue,
@@ -113,7 +112,7 @@ const NumberField = forwardRef<HTMLInputElement, NumberFieldProps>(
113112
width
114113
},
115114
ref
116-
) {
115+
) => {
117116
const [valueDerived, setValueState] = useControlledOrUncontrolled({
118117
value,
119118
defaultValue
@@ -157,7 +156,7 @@ const NumberField = forwardRef<HTMLInputElement, NumberFieldProps>(
157156
}, [handleClick, step]);
158157

159158
return (
160-
<StyledNumberFieldWrapper
159+
<StyledNumberInputWrapper
161160
className={className}
162161
style={{
163162
...style,
@@ -192,9 +191,11 @@ const NumberField = forwardRef<HTMLInputElement, NumberFieldProps>(
192191
<StyledButtonIcon />
193192
</StyledButton>
194193
</StyledButtonWrapper>
195-
</StyledNumberFieldWrapper>
194+
</StyledNumberInputWrapper>
196195
);
197196
}
198197
);
199198

200-
export { NumberField, NumberFieldProps };
199+
NumberInput.displayName = 'NumberInput';
200+
201+
export { NumberInput, NumberInputProps };

src/Tabs/Tabs.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { TabBody } from '../TabBody/TabBody';
99
import Fieldset from '../Fieldset/Fieldset';
1010
import Window from '../Window/Window';
1111
import WindowHeader from '../WindowHeader/WindowHeader';
12-
import { NumberField } from '../NumberField/NumberField';
12+
import { NumberInput } from '../NumberInput/NumberInput';
1313
import Checkbox from '../Checkbox/Checkbox';
1414
import WindowContent from '../WindowContent/WindowContent';
1515

@@ -64,7 +64,7 @@ import WindowContent from '../WindowContent/WindowContent';
6464
<TabPanel value={0} activeTab={activeTab}>
6565
<Fieldset label='Order:'>
6666
<div style={{ padding: '0.5em 0 0.5em 0' }}>Amount:</div>
67-
<NumberField
67+
<NumberInput
6868
width='100%'
6969
min={0}
7070
value={0}

src/Tabs/Tabs.stories.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
Anchor,
55
Checkbox,
66
GroupBox,
7-
NumberField,
7+
NumberInput,
88
Tab,
99
TabBody,
1010
Tabs,
@@ -51,7 +51,7 @@ export function Default() {
5151
<div>
5252
<GroupBox label='Order:'>
5353
<div style={{ padding: '0.5em 0 0.5em 0' }}>Amount:</div>
54-
<NumberField width='100%' min={0} defaultValue={0} />
54+
<NumberInput width='100%' min={0} defaultValue={0} />
5555
<br />
5656
<Checkbox
5757
name='shipping'

0 commit comments

Comments
 (0)